Du bist hier: Startseite > WebWissen > Joomla! > Eigenes Modul für Tags zu den Beiträgen
Folge mir bei Twitter...

und bleibe auf dem Laufenden, was die Themen SEO und Webentwicklung angeht!

Mittwoch, 27. Mai 2009 um 18:30 Uhr

Tags zu den Joomla! Beiträgen

Problem:

Man möchte zu den einzelnen Joomla! Beiträgen Tags anzeigen. Allerdings nicht im Content-Bereich, also dort wo der Text und die Bilder sind, sondern vielleicht im Kopf oder im Fuß der Webseite oder in einer anderen Spalte (wie auf dieser Webseite in der rechten Spalte).

 

Lösung:

1. Herunterladen der Komponente Jootags

http://extensions.joomla.org/extensions/search-&-indexing/tags-&-clouds/4430/details

Das Ganze ist eine Komponente, die prinzipiell schon genau die Funktionalität mitbringt, die wir benötigen. Dabei ist nämlich ein Modul, welches wir beliebig auf unserer Webseite platzieren können.

Allerdings werden die Tags nicht Beitragsbezogen angezeigt, sondern es tauchen bei jedem Beitrag immer alle Tags von allen Beiträgen auf.

Nehmen wir beispielsweise an, dass es auf unserer Webseite zwei Beiträge gibt. Einer über Hunde und einer über Katzen. Bei dem Hundebeitrag sind die Tags "Hund" und "Hundefutter" hinterlegt. Bei dem über Katzen hingegen "Katze" und "Katzenklo". So werden mit dem Modul von Jootags bei dem Beitrag über Hunde die Tags "Hund" und "Hundefutter" aber auch "Katze" und "Katzenfutter" angezeigt. Das wollen wir so nicht. Deshalb müssen wir...

2. Tags für einzelne Beiträge ermöglichen

Dazu nehmen wir uns den Quellcode des Moduls vor.

Wir öffnen hier die Datei helper.php im Verzeichnis modules/mod_jootags.

Entscheidend für die Zuordnung der Tags ist hier das SQL-Statement, das in der Methode _buildQuery() steht. Es sieht so aus:

$query  = 'SELECT t.id, t.title, t.alias, COUNT(ti.item_id) AS count '
        . ' FROM #__jootags_tags AS t '
        . ' INNER JOIN #__jootags_tag_items AS ti ON ti.tag_id=t.id '
        . ' GROUP BY t.id';

Hier werden u. a. die Titel (also die einzelnen Tags) geladen. Es werden halt dummerweise immer alle Tags geladen. Wir wollen aber jeweils nur diejenigen, die zum aktuellen Beitrag gehören.

Deshalb muss der Query folgendermaßen geändert werden:

// Neuer Query: Nur die Tags anzeigen lassen, die zum aktuellen Beitrag gehören        
$query  = "
SELECT t.id, t.title, t.alias, COUNT(ti.item_id) AS count
FROM #__jootags_tags AS t
INNER JOIN jos_jootags_tag_items AS ti ON ti.tag_id=t.id
INNER JOIN #__jootags_tag_items AS item ON item.tag_id = t.id
WHERE item.item_id = ".(int)JRequest::getVar('id')."
GROUP BY t.id
";

Was hier passiert ist folgendes:

Wir holen uns nur die Tags, deren item_id gleich der id des aktuellen Beitrags ist: (int)JRequest::getVar('id'). Somit haben wir das Problem gelöst und es werden nur dieTags angezeigt, die zum jeweiligen Beitrag passen.

Kommentare

avatar Jonny
0
 
 
Wow Danke! Geiles Tutorial.
Mittwoch 27 Mai 2009, 18:42
Antwort schreiben
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben
Cancel
Name *
Code   
ChronoComments by Joomla Professional Solutions
Kommentar abgeben

Tags

Joomla!  Joomla! Tags  Jootags  Tag modul  

Tweets

Social Bookmarks

Über den Autor

Mein Name ist Axel Scheuering. Während meines Studiums (Wirtschaftsinformatik) habe ich meine Brötchen als Webentwickler verdient. Mmhh lecker Brötchen. Seit ich mit dem Studium fertig bin, arbeite ich hauptberuflich im Bereich Suchmaschinenoptimierung.

2009 habe ich bei der Google Online Marketing Challenge teilgenommen und mich zusammen mit meinem Team gegen über 2.000 Teams aus der gazen Welt durchgesetzt. Wir haben unter den "Final 15" weltweit den 2. Platz erreicht und dafür einen Marketingpreis erhalten :)

Diese Site betreibe ich nicht mehr aktiv weiter. Mein neues Blog findest du unter Methode-Web.de

Inhalte dort sind Webentwicklung, Suchmaschinenoptimierung, das Web allgemein und Literaturtipps.