Wissenswertes zum Thema

Virtuemart nutzt zwei unterschiedliche Wege für die Anzeige des Pathways.

  • für die Browsepages nutzt es den regulären Weg, so wie er vom Joomla-Framework vorgesehen ist. Über das Objekt $mainframe mit seiner Methode appendPathWay() lassen sich dem Mainframe Pfad-Element übergeben/anhängen. Alle diese Elemente werden in einem Array gesammelt. Das Modul mod_breadcrumbs verwendet dieses Pfad-Array um daraus dann den Pathway zu erzeugen und an Modulposition auszugeben. Die Konfiguration der Anzeige dieses Pathway erfolgt folglich auch über das Modul / J!-Main-Template-Modulposition und dann projektweit. Will man also die Anzeige für diesen pathway ändern, muss man ins Modultemplate-Script modules/mod_breadcrumbs/tmpl/default.php.
  • Aus unerklärlichen, vermutl. rudimentären Gründen, wird das auf den Produktdetailseiten (flypages) nicht so gehandhabt. Zusätzlich zum Modul-Breadcrumbs kann man hier eine weitere Pfadanzeige veranlassen. Für die Flypage-Templates unter /product_details/ gibt es im Templateverzeichnis /common/ eine pathway.tpl.php, welche auf diesen Seiten die Pathway-Ausgabe formatiert. Die Konfiguration der Anzeige erfolgt hier über die VM-Backend-Konfiguration auf den Flypage-Einstellungen. Hier ist das An- und Abschalten möglich. Das Aussehen wird über das Template pathway.tpl.php gesteuert. Sinn macht das allerdings nicht, weil man dann mitunter die Pfadanzeige doppelt hat, einma über das Modul an Modulposition und zusätzlich innerhalb des Flypage-Inhaltes für das Produkt.



 

Pathway um Einträge erweitern

Innerhalb von Joomla ist es möglich über das Object $mainframe zusätzliche Pfadelement hinzuzufügen, damit deren Anzeige durch das Modul mod_breadcrumbs erfolgt. Damit ließen sich dann also Kategorien oder ggf. auch Produktseiten hinzufügen. So sieht die Syntax beispielhaft aus:

$mainframe->appendPathWay( $VM_LANG->_('PHPSHOP_ADVANCED_SEARCH') );

 

Modifikation für indifiduelle Pathway-Anzeige in VirtueMart

Anforderungen / Aufgabenstellung

folgende Anforderungen sollten in einem Kundenprojekt durch die Modifikation erfüllt werden:

  1. Da das Projekt im Wesentlichen aus dem Shop besteht und alle anderen J!-Seiten in der Hierarchie sehr flach gehalten wurden, soll der Pathway nur für Shopseiten angezeigt werden.
  2. Da die Kategorienamen und auch die Namen der Produkt mitunter sehr lange sind, der Pathway trotzdem kurz, möglichst einzeilig dargestellt werden soll, musste er reduziert werden. Dazu wurden folgende Entscheidungen getroffen:
    1. Der Pathway-Einleitungstext lautet nur "zurück zu:"
    2. Der Link zur Homepage ("Start") ist überflüssig, weil es den Startseitenlink an anderer sichtbaren Stelle auf der Website schon gibt. Der Link zur Shop-Startseite / Kategorieebene 0 ist überflüssig, aus gleichem Grund
    3. Der Produkttitel als letzter Pathway-Eintrag wenn man sich auf einer Produkt-Detailseite befindet soll nicht angezeigt werden. Genauso nicht der Kategoriename von der Kategorieseite auf der man sich gerade aktuell befindet.
    • In Summe werden damit dann also 3 Einträge weniger angezeigt und der Pre-Text verkürzt.
  3. Genutzt werden soll die Override-Funktionalität von Joomla für die notwendigen Mods im Modul mod_breadcrumbs.

 

Umsetzung im Detail

  1. Das Modul mod_breadcrumbs wurde in der Moduleverwaltung veröffentlich an der modul-Position breadcrumb. Durch die Menüzuweisung für das Modul wird erreicht, dass es nur auf den Shop-Seiten angezeigt wird.
  2. Im Haupttemplate des Joomla-Projektes wurde die entspr. Modulposition eingebunden. Der komplette Block wird nur angezeigt wenn die Modulposition Elemente enthält, was nur ja lt. 1. nur zutrifft, wenn man sich auf Shopseiten befindet.
    <?php if($this->countModules( 'breadcrumbs' )) : ?>
    <!-- begin: #mainbread -->      
    <div id="mainbread">
    	<div id="breadcrumbs_space">
    		<div id="breadcrumbs_content">
    			<?php $jyaml->getPosition('module', 'breadcrumbs', 'raw', ''); ?>
    		</div>
    	</div>
    </div>
    <!-- end: #mainbreads -->  
    <?php endif; ?>
    
  3. Nun legen wir eine Datei default.php an und speichern diese ins Verzeichnis /templates/MEIN_TEMPLATE/html/mod_breadcrumbs/default.php. In dem wir dort eine Datei reinlegen greift sofort das Template-Overriding von Joomla und dieses Script wird statt des Originals in /modules/mod_breadcrumbs/tmpl/default.php verwendet.
    Diese Script erhält dann folgenden Inhalt. Wir holen uns aus dem Pathway-Array $list alle Elemente aus den ersten beiden und dem letzten Element und geben diese als Links aus. Den Pre-Text geben wird nur aus, wenn wenigstens Elemente in $list verblieben sind.
    <?php // no direct access
    defined('_JEXEC') or die('Restricted access'); ?>
    <span class="breadcrumbs pathway">
    <?php 
    $list = array_slice($list,2,count($list)-1);
    if (count($list) > 1 ) echo "Zurück zu: ";
    foreach ($list as $item) {
    	if(!empty($item->link)) {
    		echo '<a href="'.$item->link.'" class="pathway">'.$item->name.'</a>';
    		echo ' '.JHTML::_('image.site', 'path-back.gif').' ';
    	}
    }
    ?>
    </span>
    

Das wars schon. Evtl. sind noch ein paar Anpassungen bei den Stylesheets notwendig, die hier aber nicht relevant sind.

{jcomments on}