Zielstellung / Aufgabe

Lt. einer Aufgabenstellung eines Kunden sollten für Virtuemart in Bezug auf die Verfügbarkeitsanzeige von Produkte drei Aufgabenstellungen erreicht werden:

  1. Die Anzeige der Verfügbarkeiten in VM erfolgt standardmäßig per vordefinierte Grafiken. Diese liegen alle in einem Verzeichnis und daraus wird im Backend-Produkt-Editor eine Pulldown-Auswahlliste erzeugt. Nun kann man eine dieser Grafiken auswählen und diese wird mit ihrem Dateinamen in das Verfügbarkeitsfeld eingetragen und gespeichert. Alternativ kann man auch in das Verfügbarkeitsfeld einen beliebigen Text schreiben. Nachteil, egal ob Text oder Grafik, es findet keine Übersetzung in die jeweilige Sprache statt. Die Grafiken sind von VM alle in engl. erstellt. 1. Aufgabenstellung war, dass die Anzeige sprachkonform erfolgt.
  2. Neben den vorhandenen Verfügbarkeitsangaben sollten weitere mgl. sein, so z.B. eine, die die Aussage zulässt, dass ein Produkt vom Hersteller nicht mehr länger angeboten/produziert wird.
  3. Abhängig vom Inhalt der Verfügbarkeitsangabe soll ein mehr oder weniger auffälliger Style zur Anzeige genutzt werden. Um z.B. sicher zu verhindern, dass ein Kunde ein Produkt bestellt, welches aktuell oder gar nicht mehr verfügbar ist, soll die Nicht-Verfügbarkeit mit weißem Text auf einem roten Block angezeigt werden während andere Verfügbarkeiten anders z.B. grün ausgezeichnet werden.

Umsetzung im Detail

Damit o.g. Features erfüllt werden können, wurde Folgendes umgesetzt. (Dies bezieht sich z.Z. nur auf die Produkt-Detailseiten. Ggf. könnte auch für die Produkt-Browsepages eine Anpassung erfolgen, was aber bisher nicht Aufgabenstellung war.):

  • Verantwortlich für die Ausgabe der Verfügbarkeit auf den Virtuemart-Produkt-Detailseiten ist das Script components/com_virtuemart/sublayouts/stockhandle.php. Hierfür wurde unter templates/TEMPLATE/html/com_virtuemart/sublayouts/stockhandle.php ein Override angelegt. Der ELSE-IF-Zweig für } else if (!empty($product->product_availability)) { wurde geändert in dem dort für alle üblich verwendeten Verfügbarkeitsgrafiken statt der Grafiken selbst per switch-case-Abfrage eine Sprachkonstante geladen und ausgegeben wird.
    <div class="availability">
    	<?php
    	// Statt der nicht übersetzbaren Nicht-Verfügbar-Grafik wird immer autom. die vorhandene Sprachkonstante verwendet.
    	switch ($product->product_availability) {
    		case 'not_available.gif' :
    			echo '<span class="vmNotAvailableProd">'.vmText::_('COM_VIRTUEMART_CURRENTLY_NOT_AVAILABLE').'</span>';
    			break;
    		case 'no_longer_produced.gif' :
    			echo '<span>'.vmText::_('NO_LONGER_PRODUCED').'</span>';
    			break;
    		case '1-2m.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_1TO2M').'</span>';
    			break;
    		case '1-4w.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_1TO4W').'</span>';
    			break;
    		case '14d.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_14D').'</span>';
    			break;
    		case '2-3d.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_2TO3D').'</span>';
    			break;
    		case '24h.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_24H').'</span>';
    			break;
    		case '3-5d.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_3TO5D').'</span>';
    			break;
    		case '48h.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_48H').'</span>';
    			break;
    		case '7d.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_7D').'</span>';
    			break;
    		case 'on-order.gif' :
    			echo '<span>'.vmText::_('PROD_AVAILABILITY_ONORDER').'</span>';
    			break;
    		default :
    			echo (file_exists(JPATH_BASE . DS . VmConfig::get('assets_general_path') . 'images/availability/' . $product->product_availability))
    				? JHtml::image(JURI::root() . VmConfig::get('assets_general_path') . 'images/availability/' . $product->product_availability, $product->product_availability, array('class' => 'availability'))
    				: vmText::_($product->product_availability);
    	}
    	?>
    </div>
    

     

  • Alle diese hier verwendeten Sprachkonstanten müssen in den Sprachoverrides von Joomla in jeder gewünschten Sprache, zumindest aber in der Hauptsprache, angelegt werden.
  • Es wurde in das Verzeichnis eine neue "Dummy"-Grafik components/com_virtuemart/assets/images/availability/no_longer_produced.gif angelegt, damit diese über die Verfügbarkeitsgrafiken-Pulldownauswahlliste selektierbar ist. Auch für diese wurde eine Sprachkonstante erstellt.
  • O.g. Templatescript gibt nicht nur die Sprachphrasen aus, sondern kapselt die Texte zusätzlich in SPAN-Tags, welche CASE-abhängig auch mit Style-Class-Bezeichnern versehen werden, damit über die Styles eine fallabhängige Formatierung mgl. wird. Im obigen Code zu sehen für den Fall not_available.gif, wo die Style-Class vmNotAvailableProd eingebunden wird.