Geschrieben von Frank Mankel
Kategorie: Joomla!

Obwohl ich schon sehr lange mit Joomla! Webseiten erstelle, nicht im kommerziellen Bereich nur im privaten Sektor, stoße ich doch immer noch auf Probleme. Profis werden drüber lachen, aber für mich war es wieder einmal Neuland. Da es sehr schwer war im Netz dazu was zu finden, schreib ich es mal hier auf.

Mein kleines Problem. Die Kontakliste eines Vereines soll etwas persönlicher werden und die Fotos der Vorstandsmitglieder beinhalten. Also überall in den Einstellungen gesucht, aber nichts gefunden. Diese Funktion gibt es nicht!?? Warum eigentlich nicht? Ok, was nicht da ist, wird halt selbst gemacht. Da meine Kenntnisse im Bereich html und php eher gering sind, ist das immer so eine Sache. Aber, wir fangen mal an. Hier das Ausgangsbild.

Vorstand_vorher

Auf die rechte Seite soll das entsprechende Foto rein. Mal eben bei google nachgesehen, das einzige was ich gefunden habe war folgendes. Ok, nun hatte ich folgenden Code.

<?php echo $item->name; ?>

Ich wußte nun das man das, in das File einbauen muss, welches die Ausgabe generiert. Das File findet man unter

/components/com_contact/views/category/tmpl/default_items.php

 Der funktionierende Code, ab Zeile 52, sieht dann so aus.


						
<! Override for the images in contact category list -->
<?php echo $item->name; ?>						
						
		params->get('show_telephone_headings') AND !empty($item->telephone)) : ?>
			telephone); ?>
params->get('show_mobile_headings') AND !empty ($item->mobile)) : ?> mobile); ?>
params->get('show_fax_headings') AND !empty($item->fax) ) : ?> fax); ?>

 Ich habe in dem Codebeispiel die Ausgabe der Bilder noch auf 80*80 Pixel begrenzt.

Nun ist es aber immer eine furchtbar schlechte Idee, die Originalfiles von Joomla! zu ändern. Spätestens bei dem nächsten Update macht man das alles wieder neu und man verliert auch irgendwann völlig den Überblick. Das weiß ich aus Erfahrung :) Aber auch dafür gibt es Lösungen und nennt sich Overrides. Auch nicht mein Spezialgebiet, aber ein Tipp im Netz brachte mich auf folgendes Seite. Folgender Satz führte dann zum Klick in meinem Kopf.

The layout overrides must be placed in particular way. Using Beez as an example you will see the following structure:

Nun wusste ich, das man im Templates-Ordner ran muss. Also das File in folgenden Pfad kopiert, dabei werden nicht vorhandene Ordner vorher von Hand erstellt.

/templates/NAME_DES TEMPLATES/html/com_contact/category/default_items.php

 Und siehe da, es funktioniert. Bitte denkt daran, das Originalfile nicht zu verändern! Macht Euch vorher eine Kopie, für den Fall das was schief geht. Hier das Ergebnis:

Vorstand_nachher

Ein Problem bei dieser Lösung ist, wenn man für einen Kontakt kein Bild hat, dann erscheint da so ein häßliches Feld was einem sagt, da fehlt ein Bild. Aber, wir wissen uns ja zu helfen. Einfach Bilder erstellen, 80*80 groß, einmal mit einem weißen Hintergrund, einmal mit einem grauen Hintergrund - fertig. Das Ergebnis sieht jetzt perfekt aus.

Das das nicht der richtige Weg ist, weiß ich, aber ich kanns nicht besser. Eigentlich müsste man eine Abfrage auf die Datenbank machen, ist ein Bild da dann ausgeben, ist kein Bild da die Ausgabe überspringen. Kann ich nicht. Mir aber am Ende auch egal, das Ergebnis zählt.

Würde mich freuen, wenn es dem ein oder anderen helfen würde. Mehr freuen würde mich, wenn mir jemand vernünftigen Code dafür schicken könnte. Und richtig gut wäre es, wenn die Funktion mal in den Core-Code von Joomla! kommt, finde die Funktion gehört einfach da rein.

Dieses Beispiel bezieht sich auf die Joomla! Version  3.3.6