Anderer Ansatz: WordPress ähnliche Artikel durch Statifizierung anzeigen

12 Mai 2010 2 Kommentare Autor: Jürgen (jdo)

Wordpress LogoEin Wort vorweg: Hier handelt es sich (noch?) nicht um ein Plugin. Es ist vielmehr ein Ansatz (Experiment), das Problem mit den verwandten Artikeln zu lösen. Verwendung ist auf eigene Gefahr und wir können keine Garantie auf eventuelle Schäden oder das Funktionieren des Scripts gewährleisten. Wir können aber versprechen, dass es nichts in die Datenbank schreibt oder diese verändert. Wir setzen es hier selbst ein und es läuft zum Stand 10. Mai 2010 WordPress-Version 2.9.2. Der Code ist noch nicht schön und man kann sicher Bereiche konsolidieren. Aber es geht in erster Linie um die Idee und die ist einfacher zu verstehen, wenn man Schritt für Schritt sieht, was das Script macht.

Verwandte Artikel nach Häufigkeit der Tags sortiert anzeigen

Beiträge nach Häufigkeit der gemeinsamen Tags sortiert.

Das Anzeigen verwandter Artikel ist eine schöne und sinnvolle Sache. Die von uns bisher untersuchten Plugins tun dies aber anhand der Kategorien, oder nehmen einfach den ersten gemeinsamen Tag da kann man gleich einen Zufalls-Generator nehmen. Wofür macht man sich sonst die Mühe, Tags einzugeben? Es gibt Plugins, die auf Grund der meisten gemeinsamen Tags verwandte Artikel anzeigen. Allerdings belasten diese Lösungen die Datenbank zusätzlich, was auch nicht schön ist. Das zusätzliche Installieren von WordPress-Plugins kann die Datenbank schon richtig ärgern. 50 bis 60 Abfragen pro aufgerufener Seite sind keine Seltenheit und das WordPress-eigene Caching (define('ENABLE_CACHE', TRUE); in der Datei wp-config.php) funktioniert nicht bei jedem Provider – Stichwort safe mode. Ob das Dateisystem oder eine Datenbank schneller ist, scheiden sich auch die Geister etwas. Hier kommt es ganz klar auf das individuelle Setup der Hard- und Software an. Bei den meisten großen Hostern dürfte jedoch die Datenbank ein Flaschenhals sein, weil man diese mit x anderen Anwendern teilt. Nun haben wir uns einen anderen Ansatz überlegt: Was spricht dagegen, die Verwandtschaft der Artikel zu statifizieren (Cache)?

Der Vorteil einer solchen Lösung könnte höhere Geschwindigkeit sein, mit der WordPress die Seite geladen hat. Der Nachteil ist, dass man die Verwandtschaft nicht dynamisch erzeugt und somit immer eine Verzögerung hat. Durch das Jeder-mit-Jedem-Vergleichen kann das Script je nach Größe des Blogs eine Weile laufen. Was wir nicht wissen, aber welcher Blog-Größe das Script auf die Fresse fällt nicht mehr funktioniert. Das hängt wohl auch von den PHP-Einstellungen ab. Am vernünftigsten ist es wohl, das Script per Cronjob Nachts einmal durchlaufen zu lassen, beziehungsweise haben wir einen eigenen kleine Zeit-Überprüfung eingebaut. Die soll allerdings in erster Linie vor Missbrauch schützen. WordPress bringt übrigens eine eingebaute Cronjob-Methode (wp_schedule_event) mit sich. Alternativ kann man natürlich die Pfade anpassen und die Datei in einem mit .htaccess (Apache als Webserver) geschützten Ordner legen. Was wir einschätzen können ist die Größe der erzeugten Cache-Datei. Bei einem Limit von fünf ähnlichen Artikeln, normal langen Titeln und Permalinks kommen wir bei 1000 Beiträgen auf weniger als 500 KByte. Sollte die Datei irgendwann zu groß werden, müsste man sich eben einen Mechanismus überlegen, diese zu splitten.

Wir haben mal einen Entwurf entwickelt, wie so eine Lösung aussehen könnte. Das Ganze ist hoffentlich möglichst unkryptisch geschrieben, weil man das Prinzip des Scripts verstehen soll. Was macht es im Groben?

  • Fragt die Datenbank einmal und holt alle Tags mit zugehörigen Schlagwörtern raus
  • Vergleicht jeden Artikel an Hand der Tags und zählt die gemeinsamen Treffer
  • Schreibt das Ergebnis in eine Datei, aus der man später das Ergebnis auslesen kann

Das Script ist auf der nächsten Seite inklusive Download-Link.

Seiten: 1 2 3



Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren


Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
oder bitcoin - Adresse: 1NacVNwcLLePUVv8uSafu5Ykdwh8QyDfgK). Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!
 Alle Kommentare als Feed abonnieren

2 Kommentare zu “Anderer Ansatz: WordPress ähnliche Artikel durch Statifizierung anzeigen”

  1. Salim sagt:

    Hallo Jürgen,

    du triffst den Nagel auf den Kopf. GENAU diese Gedanken, zum Thema "wie eine verwandte Posts Abfrage auszusehen hat", hatte ich auch. Da ich allerdings keine Programmierkenntnisse besitze, war ich schon am verzweifeln, und dachte, ich müsste doch so ein blödes standart PlugIn nutzen.

    Einzig über die Performance mache ich mir ein wenig sorgen. Ich denke, ich werde es einfach ausprobieren! Vielen Dank!

    • jdo sagt:

      Also meine Datei, die die verwandten Beiträge enthält ist nun knapp 800 KByte groß. Und das bei über 2100 Beiträgen ... die Performance scheint ok zu sein. Kommt natürlich auch immer auf den Server an, wo das liegt.

Antworten