Strict Standards: Declaration of bBlog::display() should be compatible with that of Smarty::display() in /home/jan/public_html/relovution/bblog/inc/bBlog.class.php on line 1034
bBlog Hacking - relovution.de

» die relovution kommzt... sei auf der hütte!

February 28, 2006

bBlog Hacking

So, abgesehn vom mini-Captcha habe ich jetzt noch was in mein hübsches bBlog eingebaut, und zwar etwas furchtbar praktisches: Mein Blog kann sich jetzt auf Wunsch merken, wer du bist! :)

Wer das ganze auch haben will, der geht nach folgender Anleitung vor. Wenn man allerdings wenig bis keinen Plan von der Technik hinter bBlog hat, für den wirds vielleicht schwierig, ein gewisses Verständnis wird hier eigentlich vorausgesetzt.. bei Unklarheiten kann man aber natürlich rückfragen. Los gehts:

Die Änderungen sind recht simpel: in der bblog/inc/bBlog.class.php muss in der Funktion "function display($page,$addfooter=true) {" nach ob_start(); folgender Code eingefügt werden (bei bBlog Version 0.7.6 müsste das Zeile 540 sein):
if ($page == "post.html") {
  if (!empty($_COOKIE['bblog_userdata'])) {
    $userdata = explode(";", $_COOKIE['bblog_userdata']);
    $this->assign("nickname", $userdata[0]);
    $this->assign("email", $userdata[1]);
    $this->assign("publish_email", ($userdata[2] == "1") ?
        "checked=\"checked\"" : "");
    $this->assign("homepage", $userdata[3]);
    $this->assign("publish_homepage", ($userdata[4] == "1") ?
         "checked=\"checked\"" : "");
    $this->assign("setcookie", "checked=\"checked\"");
  } else {
    $this->assign("publish_email", "checked=\"checked\"");
    $this->assign("publish_homepage", "checked=\"checked\"");
    $this->assign("setcookie", "checked=\"checked\"");
  }
}
Und in der Funktion "function new_comment($postid,$replyto = 0) {" fehlt nach
if($insid < 1) {
  $this->standalone_message("Error",
      "Error inserting comment : ".mysql_error());
} else {
(~ Zeile 956) noch folgender Code zum Glück:
if ($_POST['setcookie'] != "1" && !empty($_COOKIE['bblog_userdata'])) {
  setcookie("bblog_userdata", "", time() - 3600, "/", "deine-domain.de");
}

if ($_POST['setcookie'] == "1") {
  $userdata[0] = stripslashes($postername);
  $userdata[1] = stripslashes($posteremail);
  $userdata[2] = stripslashes($pubemail);
  $userdata[3] = stripslashes($posterwebsite);
  $userdata[4] = stripslashes($pubwebsite);

  setcookie("bblog_userdata", implode(";", $userdata),
      time() + 365 * 24 * 3600, "/", "deine-domain.de");
}
Achtung! Hier ist noch etwas manuell anzupassen, weil ich zu faul war, das vom Script automatisch rausfinden zu lassen. Und zwar muss man die letzten beiden Parameter von den beiden setcookie() Aufrufen anpassen - im Beispiel "/" und "deine-domain.example". Es geht um folgendes: Standardmäßig würde der Cookie nur für das aktuelle "Verzeichnis" in der URL gelten. Solange bblog im "ugly-URL" Modus betrieben wird (also z.B. deine-domain.de/index.php?postid=xyz) geht das noch gut, aber wenn man die Pretty URLs aktiviert hat, befindet man sich ständig in "Unterverzeichnissen" wie z.B. deine-domain.de/item/xyz. Wer das jetzt überhaupt nicht geblickt hat, ignoriert es und macht einfach blind nach Anweisung weiter. :)

Beispiele für URLs zum Blog und die daraus resultierenden Parameter:
http://deine-domain.de/ -> "/", "deine-domain.de"
http://www.testseite.de/meinblog -> "/meinblog", "www.testseite.de"

Alles unklar? Sehr schön! Weiter gehts:

Der Rest ist jetzt schnöde Template-Geschichte: Man nehme die post.html des jeweils benutzten Templates, und füge zum einen
Meine Daten merken? <input class="checkbox" name="setcookie"
    type="checkbox" id="setcookie" value="1" {$setcookie} />
irgendwo wo es gefällt ein. Und zum anderen (und letzten) entfernt man bei den beiden "Veröffentlichen"-Häkchen das checked="checked" und ersetzt es durch {$publish_email} (beim E-Mail Addresse Veröffentlichen Kästchen) bzw. {$publish_homepage} (beim anderen).

Ab sofort sollte bBlog einen Cookie namens "bblog_userdata" setzen, wenn jemand das "Meine Daten merken" Kästchen ankreuzt. Wird das Häkchen entfernt und man erstellt einen neuen Kommentar, wird der Cookie gelöscht.

Das war Teil 1 meiner bBlog Modifikationen :)
(blog auf 17:16 Uhr)
Posted 6 years, 5 months ago on February 28, 2006
Trackback URL für diesen Post: http://relovution.de/bblog/trackback-nobot.php/51/

Add Comment

(Um auf einen Kommentar einzugehen, klicke auf den 'reply' Link bei dem Kommentar)

 
Kommentar-Schlagzeile:
 
Dein Name:
Meine Daten merken?
 
Deine E-Mail Adresse:
Veröffentlichen?
 
Website/Homepage:
Veröffentlichen?
 
Kleine Fingerübung: Bitte gib "IANAB" in das Feld ein, damit ich weiß: "I am not a bot."
(ohne Anführungszeichen natürlich.)
 
Kommentar:

Erlaubte XHTML tags: a, b, i, strong, code, acrynom, blockquote, abbr. Zeilenumbrüche werden automatisch erkannt und umgewandelt.