Wer ein News-Medium wie einen Blog oder ein Magazin aufsetzen möchte, der will seinen Lesern oft ein Feature zur Verfügung stellen, mit dem ähnliche oder zusammengehörende Beiträge direkt unter dem Artikel per Link gefunden werden können.
Ein solches Feature kann man sich relativ einfach mit Hilfe eines Views selbst erstellen. Wir wollen es uns aber noch einfacher machen und das speziell zu diesem Zweck entwickelte Modul "Similar By Terms" verwenden. Allerdings sind auch hier ein paar Hürden zu überwinden. Dazu später mehr.
Die Methode, die hier verfolgt wird, besteht darin, mittels eines gemeinsamen Begriffs alle Beiträge zu sammeln, die mit diesem Begriff getagged wurden. Z.B. sollen mit dem Begriff "Piwik" alle Artikel zum Thema "Piwik" zusammengestellt werden. Diese Methode hat gegenüber der Alternative, die expliziten Artikel anzugeben, den Vorteil, dass Listen ergänzt werden können nur durch das "Taggen" des neuen Artikels. Um willkürliche Ergebnisse zu vermeiden, wird maximal nur ein Begriff pro Beitrag zugelassen.
Installation des Moduls "Similar By Terms"
Das Modul wird wie gewohnt installiert und stellt dann einen View zur Verfügung, der als Block in eine Seite eingebunden werden kann. Wie für jeden angelegten View finde ich den Block dann sofort in der Liste unter "Admin/Structure/Blöcke". Den View "Similar By Terms" selbst kann ich unter "Admin/Structure/Views" finden und bearbeiten. Eine Konfigurationsmöglichkeit gibt es für das Modul nicht, außer den View selbst zu bearbeiten.
Anlegen eines Vokabulars "Similar Terms"
Nach der Installation und Aktivierung ist zunächst zu entscheiden, welche Taxonomy verwendet werden soll.
Der View verwendet ohne zusätzliche Maßnahmen alle Begriffe aus allen Taxonomie-Vokabeln, um für einen bestimmten Artikel die verwandten aufzulisten. Dies führt aber zu ziemlich willkürlichen Ergebnissen.
Deshalb bevorzuge ich für die Definition von "verwandten Beiträgen" ein eigenes Vokabular "Similar Terms", das nur diesem einen Zweck dient. Dieses lege ich unter "Admin/Structure/Taxonomie/Vokabular hinzufügen" an. Die Begriffe selbst werden erst bei der Erstellung der Beiträge festgelegt, so dass ich das Vokabular leer lasse.
Hinzufügen eines Feldes "Verwandter Begriff" zum Inhaltstyp
Unter "Admin/Structure/Inhaltstypen/<Inhaltstyp-Name>/Felder verwalten", wobei <Inhaltstyp-Name> z.B. "Blogeintrag", "Artikel", etc. sein kann, fügen wir ein neues Feld "Verwandter Begriff" vom Feldtyp "Term reference" als "Autocomplete term widget" hinzu. Auf dem Folgeformular wird "Related Terms" als Vokabular eingestellt. Danach erscheint noch ein weiteres Folgeformular auf dem wir als "Anzahl von Werten" 1 einstellen.
Wir haben nun das neue Feld "Verwandter Begriff" angelegt und müssen jetzt dafür sorgen, dass es nicht angezeigt wird, denn wir wollen ja den View zeigen, aber nicht die "Vokabel", mit der der View die verwandten Beiträge sammelt. Dazu wählen wir den Reiter "Manage Display" und nehmen das Feld "Verwandter Begriff" aus der Anzeige heraus.
Taggen von verwandten Beiträgen mit dem gemeinsamen Begriff
Wir können nun Beiträge editieren und dort im Eingabeformular unter "Verwandter Begriff" die Vokabel eingeben, die zusammengehörende Beiträge verbindet. Z.B. habe ich in diesem Blog mehrere Artikel zum Thema "Piwik". Deshalb gebe ich im Bearbeitungsformular jedes dieser Artikel die Vokabel "Piwik" dort ein.
Bearbeiten des Views "Similar By Terms"
Jetzt muss ich den View "Similar By Terms" so einstellen, dass er nur das Feld "Verwandter Begriff" verwendet. Dazu rufe ich den View für die Bearbeitung auf. Ich ändere die Einstellungen folgendermaßen:
- Unter "Advanced contextual filters" wähle ich "Similar By Terms: Nid" aus, sofern das dort noch nicht eingestellt ist.
- Durch Anklicken dieses Links gelange ich zu den Einstellungen. Unter "Similarity by terms" wähle ich nur "Related Terms" aus, also das einzige Vokabular, das verwendet werden soll.
- Speichern der Einstellungen für den View nicht vergessen.
Einbau des Blocks "Similar By Terms" an der gewünschten Position
Den Block zum View finde ich unter "Admin/Structure/Blöcke" unter dem Namen: "View: Similar By Terms". Den kann ich nun in die gewünschte Region meines Themes einbauen.
Wenn ich einen der getaggten Artikel aufrufe, erscheint die gewünschte Liste der mit dem gleichen Begriff getaggten Artikel. Habe ich keinen Begriff angegeben, wird der Block auch nicht sichtbar.
Was bleibt, ist die Verschönerung der Anzeige durch Anpassung des Themes, was hier aber nicht Gegenstand der Betrachtung ist.
Soweit die grundsätzliche Vorgehensweise. Allerdings gab es in der Praxis noch zwei Probleme zu lösen.
Patch für das einwandfreie Funktionieren des Moduls "Similar By Terms" erforderlich
Die Beschränkung des Views auf nur ein Vokabular funktionierte zunächst nicht. Die Einstellung von "Similar By Terms: Nid" auf das Vokabular "Related Terms" wurde einfach nicht gespeichert. In dem verlinkten Thread wird ein Patch vorgeschlagen, der eingespielt wurde. Danach funktionierte der View bei mir einwandfrei.
Anzeige des Blocks "Verwandte Beiträge" zwischen Beitrag und Kommentaren
Eine kleine Schönheitsoperation soll hier noch dargestellt werden. Standardmäßig sind Beitrag und Kommentare im Block "Main page content" untrennbar miteinander verbunden. Will man also etwas zwischen Beitrag und Kommentare einfügen, z.B. unser Feature "Verwandte Beiträge", dann geht das zunächst nicht.
Abhilfe verschafft hier ein Modul "Node Comment Block", das die Kommentare in einen Block verschiebt, der dann beliebig im Layout verschoben werden kann. Damit lässt sich dann der Block "Verwandte Beiträge" dazwischen einfügen.
Diskussion des hier verfolgten Ansatzes
Die Einschränkung des Features "Verwandte Beiträge" auf nur einen Begriff pro Beitrag ist sicherlich sehr restriktiv. Aber lässt man mehrere Begriffe zu, so erscheint das Ergebnis sehr schnell willkürlich, falls die Autoren ihre Begriffe nicht sehr bewußt und diszipliniert setzen. Erfahrungsgemäß verliert man sehr schnell den Überblick.
Alternativen
Wer automatisch nach ähnlichen Artikeln suchen lassen möchte, der kann das Modul "Similar Entries" verwenden. Das Modul verwendet die MySql-Volltext-Suche, mit der Suchausdrücke in natürlicher Sprache eingesetzt werden können, um dann gefundene Texte mit der größten Ähnlichkeit zuerst auszugeben.
Der Einsatz dieses Moduls führt zu besseren Resultaten, als das Modul "Similar By Terms" bei Verwendung mehrerer Schlagworte. Üblich ist der Einsatz dieser Funktion in einem News-Medium, in dem man den Leser schnell auf weitere Artikel von eventuellem Interesse lotsen möchte. Der "Interessenskorridor" ist quasi breiter eingestellt.
Allerdings lassen sich damit keine eindeutigen Beziehungen herstellen für mehrere direkt zusammenhängende Artikel, z.B. für ein Tutorial, das aus mehreren Beiträgen besteht.
Liegt der Schwerpunkt des Mediums eher im Bereich des Knowledge-Managements, wie in diesem Blog hier, dann sollte man besser mit dem hier verfolgten restriktiven Ansatz auf Basis des Moduls "Similar By Terms" arbeiten.
Kommentare
Danke für diese schöne Anleitung
Hallo Wolfgang,
vielen Dank für diese schöne, ausführliche Anleitung. Das war jetzt einfach mal schön, sich so verwöhnen zu lassen und nicht lange rumstochern zu müssen. ;-)
Einen lieben Gruß
Kurbelursel (http://www.mered.de)
Gerne!
Gerne!