Diskussion:Templates Overrides

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

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 Folder blue.png view oder dessen Unterverzeichnis enthaltene Dateien möglich.

Joomla! gibt die Kontaktkategorie-Daten durch die Datei File php.png 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 Folder blue.png html in Ihrem Template.

Da die "Original"-Datei in einem Unterverzeichnis von Folder blue.png DeinJoomla!\components\com_contact liegt und eine Datei aus einem Unterverzeichnis von File white.png DeinJoomla!\components\com_contact\views\category geändert werden soll, ist es dem entsprechend notwendig ein Verzeichnis Folder blue.png DeinJoomla!\templates\DeinTemplate\html\com_contact\category zu erstellen.

Dorthin kommt dann eine Datei mit gleichem Namen wie die "Original"-Datei: File white.png 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 File white.png 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.

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge