pmachine tweaking

stefan am 15. November 2004 um 15:27 Uhr

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.

6 Kommentare zu “pmachine tweaking”

  1. Peithenen,

    Hm, eigenartig. Ich habe da ein Script (von eben jener Frau) mit zwei Dateien, die im Ordner “scripts” abgelegt sind: recent_comments.inc und recent_comments.php. In der *.php musste ich lediglich in einer Zeile, in der der konkrete Link mit Variablen angegeben ist, den Anker dranhängen. Kann ich Dir gerne schicken; ist aber jetzt wohl zu spät …

  2. stefan,

    ähm, verstehen wir uns richtig? ich meine einen anker direkt zu genau dem linkenden kommentar. nicht nur zu den kommentaren insgesamt, wie ‘#k’ oder so.

    aber schick mir doch mal dein script.

  3. roland,

    boah, kompliziert.

  4. stefan,

    kompliziert eigentlich nicht, aber da es eigentlich nur ein paar zeilen sind, die dazu gefügt werden müssten, um sämtliche datenbank-variablen benutzen zu können, könnte man erwarten, dass das von anfang an im script so gemacht ist.

    aber vielleicht geht es Rick Ellis darum, dass seine User php lernen.

  5. Peithenen,

    Das Script brauchst du gar nicht - ich hab ja erst jetzt begriffen, worum es ging.
    Sehr cool (man bracht es natürlich nicht, aber es ist schick), ich probier es natürlich auch mal aus. Thx im voraus!

  6. Alexzhlwl,

    Hello, my name is Alex, i’m a newbie here. I really do like your resource and really interested in things you discuss here, also would like to enter your community, hope it is possible:-) Cya around, best regards, Alex!

Dein Kommentar:

Hinweis: Es kann passieren, dass ein Kommentar wegen gewisser Spamfilter aus Versehen in die Moderationsschleife gerät. Ich bitte dies zu entschuldigen. Der Kommentar wird aber, sobald ich das bemerke, in der Regel freigeschaltet.
Ich behalte es mir allerdings auch vor, Kommentare, die mir nicht passen, zu löschen.

You must be logged in to post a comment.


akzent