Kategorie 'pmachine'

pmachine tweaking

stefan am 15. November 2004 um 15:27 Uhr | link

Seit einiger Zeit benutze ich jetzt pmachine und bin nicht sonderlich begeistert. Das Script ist wenig flexibel, vieles funktioniert lediglich, indem man im Script rumhackt, es gibt wenige plug-ins oder add-ons und die Frau, die bisher die meisten add-ons schrieb (ein völlig simples script, das die letzten kommentare anzeigt, wurde erst von ihr geschrieben), hat sich von pmachine verabschiedet.

Ganz gut ist teilweise allerdings das Forum und da vor allem Chris Curtis, der schnell zur Stelle ist und einem für bestimmte Hacks ganz ordentliche Tipps geben kann. Manchmal zumindest.

Also, gestern wollte ich mein Script derart verändern, dass an die jeweiligen Kommentare ein Anker gesetzt wird, der nicht auf den gesamten Eintrag verweist, sondern eben auf den Kommentar. Relativ simpel könnte man denken. Ja, Pustekuchen, zumindest wenn man es ordentlich haben will.

Da jeder Kommentar eine eigene Kommentar-ID hat, war natürlich mein erster Gedanke, diese Variable als Anker zu verwenden. Aber man hat als User, und ich habe keine Ahnung warum, keinen Zugriff auf diese Variable. Ok, wahrscheinlich ist es für Leute mit etwas php-Kenntnis völlig einfach, Zugriff zu erhalten. Für mich war es das nicht.

Aber: Mit Chris’ Hilfe und ein wenig try and error hab ich es hingekriegt und es funktioniert jetzt sogar bei den ‘recent comments’.
Wer interessiert ist, hier der kleine Hack (Benutzung natürlich nur auf eigene Gefahr):

1.
In der

  1. lib/comment.fns.php

ca. um die Zeile 440 findet sich folgender Code:

  1. $sql = "select member_id,t_stamp,body
  2.         from $db_comments
  3.         where post_id = '$postid'
  4.         and preview != '1'
  5.         order by t_stamp $display_order
  6.         limit $rowstart, $per_page";

Dieser muss um

  1. comment_id

erweitert werden, so dass er lautet:

  1. $sql = "select comment_id,member_id,t_stamp,body
  2.         from $db_comments
  3.         where post_id = '$postid'
  4.         and preview != '1'
  5.         order by t_stamp $display_order
  6.         limit $rowstart, $per_page";

2.
Zwei, drei Zeilen weiter heißt es dann:

  1. while ($query->db_fetch_object())
  2.   {
  3.     $mbr   = $query->obj->member_id;
  4.     $t_stamp = $query->obj->t_stamp;
  5.     $body  = $query->obj->body;

Dieser muss um $comment_id = $query->obj->comment_id; erweitert werden, so dass er heißt:

  1. while ($query->db_fetch_object())
  2.   {
  3.     $mbr   = $query->obj->member_id;
  4.     $t_stamp = $query->obj->t_stamp;
  5.     $body  = $query->obj->body;
  6.     $comment_id = $query->obj->comment_id;

3.
Um Zeile 600 findet sich folgender Code:

  1. $swap = array(
  2.     "%%name%%"          => $name,
  3.     "%%date%%"          => $date, .....

Dieser muss um comment_id erweitert werden, so dass er lautet:

  1. $swap = array(
  2.     "%%name%%"          => $name,
  3.     "%%date%%"          => $date,
  4.     "%%comment_id%%      => $comment_id,......

Jetzt ist die Variable %%comment_id%% in den Layout-Vorlagen verwendbar.

4.
Um die comment_id auch in den recent comments verwenden zu können, ist die Datei scripts/recent_comments.php zu verändern.

Um Zeile 42 findet sich dort folgender Code:

  1. while ($recent_comments->db_fetch_array()) {
  2.  $post_id = stripslashes($recent_comments->row['post_id']);
  3. $mem_id = stripslashes($recent_comments->row['member_id']);
  4. $comment_tstamp = stripslashes($recent_comments->row['t_stamp']);
  5. $body = stripslashes($recent_comments->row['body']);

An diesen wird

  1. $comment_id = stripslashes($recent_comments->row['comment_id']);

angehängt, so dass er lautet:

  1. while ($recent_comments->db_fetch_array()) {
  2. $post_id = stripslashes($recent_comments->row['post_id']);
  3. $mem_id = stripslashes($recent_comments->row['member_id']);
  4. $comment_tstamp = stripslashes($recent_comments->row['t_stamp']);
  5. $body = stripslashes($recent_comments->row['body']);
  6. $comment_id = stripslashes($recent_comments->row['comment_id']);

Jetzt steht die Variable $comment_id in den recent comments zur Verfügung.

Hoffe das hilft jemandem.


akzent