Posts Tagged ‘Blog-Lösungen’

Vorschau bei Blogeinträgen mit WordPress

Sonntag, Juni 17th, 2007

Für den Moment fühlt es sich so an als wär meine Schreib-Blogade vorüber. Im letzten Monat hatte ich zwar mehrere Themen gesammelt, über die ich bloggen wollte, aber sie auf´s elektronische Blatt Papier zu bringen, hat nicht funktioniert.

Bei der Veröffentlichung des gestrigen Beitrags ist mir mal wieder aufgefallen, dass in meiner WordPress-Installation (Version 2.1.3) der Vorschau-Button, der sonst oben rechts neben dem Editor-Bereich ist, seit einigen Updates weg ist. Meine Suche nach der Lösung blieb bislang erfolglos. Weiß jemand die Lösung?

Update

Hat sich gewissermaßen erledigt. Im Upgrade auf 2.2.1 gibt es einen neuen Vorschau-Button, der dieselbe nicht mehr unter dem Editor-Bereich, sondern auf einer neuen Seite anzeigt. Das ist auch ok.
23.06.2007 15:07 Uhr

CountPosts – wie oft wurde dieser Beitrag gelesen?

Sonntag, April 15th, 2007

Gestern habe ich weiteres Plugin installiert. CountPosts zählt – wie die Überschrift schon vermuten lässt – wie oft eine Seite angeguckt wurde.

Dafür hab ich das Plugin herunter geladen, entpackt, ins Plugin-Verzeichnis geschmissen und aktiviert. So weit so gut. Allerdings musste es etwas modifiziert werden, da ich gern eine Unterscheidung nach der Gesamtzahl der Seitenansichten und den heutigen Seitenansichten haben wollte. Was ich dafür verändert habe, hoffe ich im Folgenden verständlich zu erklären.

Die Zeile:

<?php HitThisPost(‘Dieser Eintrag wurde seit dem 14.04.2007 ‘,‘ x gelesen’); ?>

wollte ich unter jedem einzelnen Beitrag stehen haben und habe sie daher in single.php eingefügt. Ich habe mir die Codezeile aus der englischen Anleitung (s. Link oben) kopiert. Die Anführungsstriche dort sind durch richtige Hochkomma zu ersetzen, sonst funktioniert es nicht! Abgesehen von dem Text, der zu der Angabe erscheinen soll, habe ich an der Funktion HitThisPost nichts verändert.

Die Code-Zeile für den Zähler auf der Frontseite sieht wie folgt aus:

<?php mainCounter(‘Insges. angeguckt: ‘, ‘ Heute angeguckt: ‘); ?>

und wurde unten in der Sidebar eingefügt. Es gibt noch eine TopHitList-Funktion, die hab ich aber vorerst weggelassen.

Damit diese Angaben aber überhaupt verfügbar sind, musste die Datenbank angepasst werden. Und damit ich auf der (lokalen) Datenbank überhaupt ein update on duplicate entry machen konnte, brauchte ich vorerst eine neue xampp-Version mit MySQL 5 – von dem Update schweigen wir aber ;-)

Die Tabelle mainCount bekam eine neue primary key-Spalte für das heutige Datum, damit zwischen der Gesamtzahl der Seitenbetrachtungen und den heute betrachteten Seiten unterschieden werden kann. Da die Tabelle mainCount ohnehin noch keine Daten enthielt, wurde sie erst ganz gelöscht und dann mit:

CREATE TABLE `wp_maincount` (   `main_hits` int(11) NOT NULL DEFAULT ‘0’,   `heute` DATE NOT NULL DEFAULT ‘0000-00-00′,   PRIMARY KEY  (`heute`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;  

neu erzeugt.

Die Funktion mainCounter in der Datei CountPosts.php wurde folgendermaßen verändert. Dies ist die Original-Funktion aus dem runtergeladenen ZIP-file:

  1. function mainCounter($before = ‘Visitors: ‘, $after = ‘.’) {
  2.   global $wpdb, $table_prefix;
  3.     $Update = “Update “ . $table_prefix . “mainCount set main_hits = main_hits + 1″;
  4.     if( !current_user_can(‘level_2′) )
  5.         $wpdb->query($Update);
  6.     $SQL = “SELECT main_hits FROM “ . $table_prefix . “mainCount”;
  7.     $red = $wpdb->get_row($SQL);
  8.     echo $before , $red->main_hits , $after;
  9.     echo “<br/><sub>Counter Powered by <a href=\”http://djuki.padrino.co.yu/blog/razno/countposts-
    v-10-wordpress-plugin/\”>Count Post Plugin</a></sub>”
    ;
  10. }

Zeile 3 wurde so verändert, dass bei jedem erneuten Seitenaufruf ein update (mainHits wird um eins erhöht) auf die alte Zeile ausgeführt wird, wenn der insert einen identischen Eintrag in der primary key-Spalte (heute) zur Folge hätte. Das heißt, wenn es zum aktuellen Datum schon einen Eintrag gibt, erzeuge keinen neuen, sondern inkrementiere den alten. Erst wenn ein neuer Tag ist, wird auch eine neue Zeile angelegt. Hier die veränderte Funktion mainCounter:

  1. function mainCounter($before = ‘insges. angeguckt: ‘, $after = ‘heute angeguckt: ‘) {
  2.   global $wpdb, $table_prefix;
  3.     $Update = “Insert into “ . $table_prefix . “mainCount (main_hits, heute) values (1, NOW()) ON DUPLICATE KEY UPDATE main_hits = main_hits + 1″;
  4.     if( !current_user_can(‘level_2′) )
  5.         $wpdb->query($Update);
  6.              
  7.     $SQL = “SELECT sum(main_hits) as alle FROM “ . $table_prefix . “mainCount”;
  8.     $red = $wpdb->get_row($SQL);
  9.  
  10.     $SQL2 = “SELECT main_hits FROM “ . $table_prefix . “mainCount” . ” WHERE heute = NOW()”;
  11.     $red2 = $wpdb->get_row($SQL2);
  12.  
  13.     echo $before , $red->alle , $after , $red2->main_hits ;
  14.     echo “<br/><sub>Counter Powered by <a href=\”http://djuki.padrino.co.yu/blog/razno/countposts-
    v-10-wordpress-plugin/\”>Count Post Plugin</a></sub>”
    ;
  15. }

Update

Eine leicht modifizierte select-Anweisung in Zeile 7 selektiert alle Einträge der Spalte main_hits und summiert diese in einem s. g. Label namens alle. Das ist sinnvoll, damit die Gesamtzahl am Ende auch alle Betrachtungen erfasst und somit höher ist als die Tages-Zahl ;-)
15.04.2007 21:08 Uhr – Update Ende

In der neuen Zeile 10 der Funktion mainCounter steht jetzt eine zweite SQL-Anweisung, die die Anzahl der Seitenaufrufe zum heutigen Datum ausliest, damit ich, wie schon gesagt, zu der Gesamtzahl der page views auch die Anzahl der Aufrufe zum aktuellen Datum anzeigen kann. Zeile 11 führt die SQL-Anweisung aus und schreibt den zurückgelieferten Wert – analog zu der ursprünglichen Zeile 7 – in ein Objekt ($red und $red2). Die Ausgabe mit den festgelegten Werten für $before (‘Insges. angeguckt: ‘) und $after (‘ Heute angeguckt: ‘) erfolgt in Zeile 13.

Zu guter Letzt ist nur noch das Stylesheet anzupassen. Fertig :-)

Archiv-Seite

Sonntag, März 4th, 2007

Nachdem ich gestern die Tag Cloud installiert habe, war heute die ebenfalls schon länger geplante Archiv-Seite dran. Das gestaltete sich schon wesentlich einfacher. Was ich gemacht habe, um eine neue Seite mit den Monats-Archiven zu bekommen, beschreibe ich jetzt. Aufgepasst! Hier kommt´s:

Installation des Plugins Clean Archive

  1. Um php-Code auf einer separaten Seite (nicht auf der Hauptseite) auszuführen, ist das runPHP-Plugin nötig. Dies habe ich hier herunter geladen, wo es auch ein englisch-sprachiges Manual gibt.
  2. Das eigentliche Clean Archive-Plugin gibt es hier.
  3. Ich habe beide .zip-Dateien entpackt und den runPHP-Ordner sowie die Datei srg_clean_archives.php ins Plugin-Verzeichnis von WordPress kopiert und anschließend
  4. aktiviert.
  5. Unter Optionen > Schreiben > Formatierung den Haken entfernen bei WordPress soll invalide eingearbeitetetes XHTML automatisch korrigieren.
  6. Unter Optionen > runPHP ist festzulegen, wer das Plugin verwenden darf. Ich habe es auf Administrator belassen.

Danach habe ich testweise einen Betrag verfasst, in den ich php-Code eingefügt und den Haken bei runPHP > PHP Code ausführen? im rechten Editor-Bereich gesetzt habe. Das funktionierte, so dass ich im Anschluss eine neue Seite erzeugt habe, den Funktionsaufruf:

<?php srg_clean_archives(); ?>

eingefügt und den Haken bei PHP Code ausführen? gesetzt habe. Und siehe da… eine wundervoll übersichtliche und vollständige Archiv-Seite war vorhanden. Toll! Nie wieder umständlich suchen. :-D

Ohne das runPHP-Plugin war es nicht möglich, die Funktion < ?php srg_clean_archives(); ?> auszuführen. Die angelegte Archiv-Seite blieb leer. Aber da dieses Problem schon mal jemand hatte, hab ich fix die Lösung gefunden, die hier noch mal in englischer Sprache beschrieben ist. An dieser Stelle meinen Dank an Entwickler und Problemlöser!