Posts Tagged ‘Wordpress’

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!

Tag Cloud

Sonntag, März 4th, 2007

Gestern habe ich mir endlich eine Tag Cloud installiert.
Nachdem ich erst eine Variante versucht hatte, die nicht funktionierte, lief es letztendlich folgendermaßen:

Hier habe ich das Plugin Simple Tagging herunter geladen. Dort ist die Installationsanleitung auch in englischer Sprache zu finden.

Installation von Simple Tagging:

  1. Nach dem Entpacken des .zip-Archivs, den Ordner inklusive Dateien (oder auch nur die darin enthaltenen Dateien) in das Plugin-Verzeichnis kopieren.
  2. Das Plugin im WordPress Backend (Administrations-Bereich) unter Plugins aktivieren.
  3. Im Backend unter Tags > Tag Options die gewünschten Einstellungen vornehmen und speichern.
  4. Unter Optionen > Permalinks den Knopf Permalink Struktur aktualisieren drücken.

Dann habe ich, wie hier beschrieben, die Funktion für die Wolke eingebunden:

  1. Dieses Code-Fragment habe ich an gewünschter Position in meine Sidebar integierert.
    1. <?php if (class_exists(‚SimpleTagging‘)) : ?>
    2.     <ul id =„tagcloud“>
    3.         <?php STP_Tagcloud(); ?>
    4.     </ul>
    5. <?php endif; ?>

  2. Damit es in mein Layout passt, habe ich die folgenden Zeilen in die .css-Dateien kopiert und angepasst:

    ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; }
    ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;}
    ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; }
    ul#tagcloud li a:hover { text-decoration:underline; }
    ul#tagcloud li.t1 a { color:#797979; font-size: 120%; }
    ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; }
    ul#tagcloud li.t3 a { color:#616161; font-size: 190%; }
    ul#tagcloud li.t4 a { color:#555555; font-size: 210%; }
    ul#tagcloud li.t5 a { color:#484848; font-size: 230%; }
    ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; }
    ul#tagcloud li.t7 a { color:#303030; font-size: 270%; }
    ul#tagcloud li.t8 a { color:#242424; font-size: 290%; }
    ul#tagcloud li.t9 a { color:#181818; font-size: 310%; }
    ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }

    Vielen Dank an Michael Wöhrer, der das Simple Tagging-Plugin gebastelt hat, und an Andi, der mir geholfen hat, die Fehler aus dem ersten Installationsversuch wieder auszumerzen. Die Kombination aus Sidebar Widgets + Simple Tagging Widget Plugin zusammen mit Simple Tagging funktionierte nämlich bei mir nicht so gut, wie auf jovelblog beschrieben.

    Simple Tagging selbst bietet schon die Möglichkeit, unter den einzelnen Beiträgen gleich Tags zu vergeben und aus diesen dann eine Tag Cloud mit o. g. Funktion zu generieren. Das Simple Tagging Widget ermöglicht dies aber auch, ignoriert aber dabei die Konfiguration der Tag Optionen im Backend. So ließ sich beispielsweise nicht einstellen, wie viele Tags in der Wolke zu sehen sein sollten. Sidebar Widget ist dafür da, beliebige Widgets in der Sidebar zu positionieren oder beliebigen anderen Code zu integrieren. Die Konfiguration war recht aufwändig, da ich ein anderes als das classic/default-Template von Kubrick benutze.

    Jetzt sieht es aber so aus, wie ich es mir vorgestellt habe und die nigelnagelneue Tag Cloud kann rechts in der Sidebar bewundert werden.