Diskussion:Templates Overrides
Manchmal möchte man schon ...
... aber dazu ist dann die Veränderung einer Core-Datei nötig. Beim nächsten Update wird die Änderung dann jedoch überschrieben.
Ein Beispiel: Mit Menütyp "Layout: Kontaktkategorien" kann das Kontaktbild des jeweiligen Kontaktes nicht dargestellt werden.
[Bearbeiten] Eine Lösung heißt Layout-Override.
Ein Override ist nur für in einem Verzeichnis
view oder dessen Unterverzeichnis enthaltene Dateien möglich.
Joomla! gibt die Kontaktkategorie-Daten durch die Datei
DeinJoomla!\components\com_contact\views\category\tmpl\default_items.php aus. Diese Ausgabe kann also durch ein Layout-Override verändert werden.
Im Template beez wird z. B. mit Overrides gearbeitet. Dort können die folgenden Schritte gut nach vollzogen werden.
Layout-Overrides benötigen das Verzeichnis
html in Ihrem Template.
Da die "Original"-Datei in einem Unterverzeichnis von
DeinJoomla!\components\com_contact liegt und eine Datei aus einem Unterverzeichnis von
DeinJoomla!\components\com_contact\views\category geändert werden soll, ist es dem entsprechend notwendig ein Verzeichnis
DeinJoomla!\templates\DeinTemplate\html\com_contact\category zu erstellen.
Dorthin kommt dann eine Datei mit gleichem Namen wie die "Original"-Datei:
default_items.php
Sie bekommt den Inhalt:
<?php // @version $Id: default_items.php 10381 2008-06-01 03:35:53Z pasamio $ // geändert Inhalt des ersten Tabellenfeldes (Zeile 10): 2010-03-24 7list defined('_JEXEC') or die('Restricted access'); ?> <?php foreach ($this->items as $item) : ?> <tr> <td class="sectiontableentry" headers="Count"> <img src="<?php echo $this->baseurl ?>/images/stories/<?php echo $item->image?>" width="92" height="117" alt="" border="0"> </td> <td valign="top" class="sectiontableentry<?php echo $item->odd; ?>" headers="Position"> <?php if ($this->params->get('show_position')) : ?> <?php if (strlen($item->con_position)>0){echo $item->con_position."<br>";} ?> <?php endif; ?> <a href="<?php echo $item->link; ?>" class="category<?php echo $this->params->get('pageclass_sfx'); ?>"> <?php echo $item->name; ?> </a> </td> <td width="20px"></td> <td valign="top" class="sectiontableentry<?php echo $item->odd; ?>" headers="Mail"> <?php if ($this->params->get('show_email')) : ?> <?php echo $item->email_to; ?> <br> <?php endif; ?> <?php if ($this->params->get('show_telephone')) : ?> <?php echo $item->telephone; ?> <br> <?php endif; ?> <?php if ($this->params->get('show_mobile')) : ?> <?php echo $item->mobile; ?> <br> <?php endif; ?> <?php if ($this->params->get('show_fax')) : ?> <?php echo $item->fax; ?> <?php endif; ?> </td> </tr> <?php endforeach; ?>
[Bearbeiten] Eine weitere Lösung heißt Jumi.
Dazu den folgenden Code in die Datei
DeinJoomla!\jumi\contact.categorie.view.feed.php eingeben:
<?php /** * @version $Id: contact.categorie.view.feed.php 2010-03-24 17:25:58Z kms-net.de * @package Joomla * @subpackage Contact * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant to the * GNU General Public License, and as distributed it includes or is derivative * of works licensed under the GNU General Public License or other free or open * source software licenses. See COPYRIGHT.php for copyright notices and * details. */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die( 'Restricted access' ); $query = 'SELECT a.name AS name, `con_position` AS position, `address` AS strasse,' . ' concat( `postcode` , " ", `suburb` ) AS adresse, `telephone` AS telefon,' . ' `fax`, `email_to` AS email,' . ' a.image AS image, a.id as id, `catid`,a.alias AS alias ,' . ' c.title AS category' . ' FROM joscg_contact_details AS a' . ' LEFT JOIN joscg_categories AS c ON c.`id`= a.`catid`' . ' WHERE `catid` = 5' . ' ORDER BY a.ordering ' ; $rows = mysql_query($query) OR die("Query: <pre>".$query."</pre> "."Antwort: ".mysql_error()); $daten = array(); if(mysql_num_rows($rows)) { while($row = mysql_fetch_assoc($rows)) { $daten[] = array($row['name'],$row['position'],$row['strasse'],$row['adresse'],$row['telefon'],$row['fax'],$row['email'],$row['image'],$row['id'],$row['catid'],$row['alias'],$row['category']); } } else { echo "Es sind keine Daten in der Datenbank vorhanden<br />\n"; } echo "<table width='100%' border='0'>"; foreach ($daten as $wert) { echo "<tr valign='top'>"; echo "<td> <img src='images/stories/".$wert[7]."' width='92' height='117' alt='' border='0'></td>"; echo "<td>"; if (strlen($wert[1])>0){echo $wert[1] ."<br>";} echo "<a href='index.php?option=com_contact&view=contact&id=".$wert[8].":".$wert[10]."&catid=".$wert[9].":".$wert[11]."&Itemid=15' class='category'>".$wert[0]."</a>"; echo "<br><br><p style='margin-bottom:10px;'>"; if (strlen($wert[4])>0){echo $wert[4] ."<br>" ;} echo $wert[5]; echo "</td><td width='15'></td>"; echo "<td>"; if (strlen($wert[2])>0){echo $wert[2] ."<br>";} if (strlen($wert[3])>0){echo $wert[3] ;} echo "</td></tr>"; echo "<tr><td height='10' colspan='5'></td></tr>"; } echo "</table>"; ?>
Die Datei kann dann mit dem Jumi-Plugin im Beitrag mit {jumi [jumi/categorie.contact.view.feed.php]} eingebunden werden.