Joomla 1.6 – Kategoriebild in der Unterkategorie-Auflistung
Unter Joomla 1.6 hat man endlich die Möglichkeit Unterkategorien ansprechend mit Kategorie-Beschreibung aufzulisten. Dies geschieht in Form einer einfachen Liste (Sollte ich bei Gelegenheit mal in eine kleine zweispaltige Tabelle umgestalten ;o) ). Mir fehlten in dieser Anzeige nur die Kategorie-Bilder an der richtigen Stelle.
Der Screenshot zeigt die fertige Seite. Neben dem Kategorie-Bild der Hauptkategorie wird vor jeder Unterkategorie das entsprechende Bild angezeigt.
Lösung
Bevor man loslegen kann sind zwei Fragen zu klären:
- Welche Datei in Joomla ist für die Anzeige der Unterkategorien verantwortlich?
- Wie bekomme ich die Kategorie-Bilder an die richtige Stelle?
Die Datei war nach kurzer Recherche im Internet schnell gefunden. Für die Anzeige der Unterkategorien (Childcategories) ist die „blog_children.php zuständig. Hier wird die Liste mit den Unterkategorien erzeugt. Hier muss ich nach dem <li>-Tag mein <img>-Tag einfügen. Die php-Datei "blog_children.php" liegt unter "/components/com_content/views/category/tmpl".
Die zweite Frage war nach etwas Überlegung dann auch keine Hürde mehr. Das Kategoriebild der Elternkategorie wird angezeigt und dies geschieht in der „blog.php, die im selben Verzeichnis liegt, oder wie auf meiner Seite im Template unter html. Den Code-Schnipsel herauskopiert und in die blog_children.php an der richtigen Stelle importiert.
<img src="/<?php echo $this->category->getParams()->get('image'); ?>" alt="" height="200" width="200" style="float:left;"/>
Nun hat man das Kategorie-Bild der Elternkategorie vor jeder Unterkategorie, was dem gewollten Ergebnis schon sehr nahe kommt, aber nicht nun mal nicht ganz. Offensichtlich wird die falsche Kategorie abgefragt. Dies ändert man, indem die Variable „$this" durch „$child" ersetzt wird und der Aufruf „->category" gelöscht wird.
<img src="/<?php echo $child->getParams()->get('image'); ?>" alt="" height="100" width="100" style="float:left;"/>
Fertig ist die angepasste Anzeige der Unterkategorien. Und bei Gelegenheit werden wir die Liste durch eine nette Tabelle ersetzen, damit immer zwei Unterkategorien nebeneinander stehen können.
Code blog_children.php:
<?php if (count($this->children[$this->category->id]) > 0 && $this->maxLevel != 0) : ?>
<ul>
<?php foreach($this->children[$this->category->id] as $id => $child) : ?>
<?php
if ($this->params->get('show_empty_categories') || $child->numitems || count($child->getChildren())) :
if (!isset($this->children[$this->category->id][$id + 1])) :
$class = ' class="last"';
endif;
?>
<li<?php echo $class; ?>>
<?php $class = ''; ?>
<img src="/<?php echo $child->getParams()->get('image'); ?>" alt="" height="100" width="100" style="float:left;"/>
<span class="item-title"><a href="/<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($child->id));?>">
<?php echo $this->escape($child->title); ?></a>
</span>
<?php if ($this->params->get('show_subcat_desc') == 1) :?>
<?php if ($child->description) : ?>
<div class="category-desc">
<?php echo JHtml::_('content.prepare', $child->description); ?>
</div>
<?php endif; ?>
<?php endif; ?>
<?php if ( $this->params->get('show_cat_num_articles',1)) : ?>
<dl>
<dt>
<?php echo JText::_('COM_CONTENT_NUM_ITEMS') ; ?>
</dt>
<dd>
<?php echo $child->getNumItems(true); ?>
</dd>
</dl>
<?php endif ; ?>
<?php if (count($child->getChildren()) > 0):
$this->children[$child->id] = $child->getChildren();
$this->category = $child;
$this->maxLevel--;
if ($this->maxLevel != 0) :
echo $this->loadTemplate('children');
endif;
$this->category = $child->getParent();
$this->maxLevel++;
endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php endif;


