Zusätzlich zum Hersteller Namen kann auch das entsprechende Hersteller-Logo auf der magento Produkt-Detailseite (view.phtml) oder in der magento Produktliste (list.phtml) angezeigt werden. Wie man ein Herstellerlogo in einen magento Shop einbindet zeigt dieses Tutorial.
Die Ausgabe des Hersteller-Namens erfolgt mit
<?php echo $_product->getAttributeText('manufacturer') ?>
Erfolgt keine Anzeige so muss das manufacturer-Attribut noch im Adminbereich eingestellt werden:
Admin -> Katalog -> Attribute -> Attribute verwalten
Hier das Attribute manufacturer auswählen und die beiden nachfolgende Selectfelder auf Ja stellen.
Sichtbar auf der Produkt-Seite im Front-end: Ja
Im Produkt-Listing verwendet: Ja
Attribut speichern.
Der Herstellername wird nun mit Hilfe einiger PHP-Codezeilen in eine entsprechende Bild-Url umgeformt.
<?php // hersteller logo / manufactor brand
$herstellerpic = $_product->getAttributeText('manufacturer');
$umlaute = Array("/ä/","/ö/","/ü/","/ß/","/ /");
$ersetzen = Array("ae","oe","ue","ss", "");
$herstellerpic = utf8_decode($herstellerpic);
$herstellerpic = strtolower($herstellerpic);
$herstellerpic = preg_replace($umlaute, $ersetzen, $herstellerpic);
$herstellerpic = utf8_encode($herstellerpic);
?>
Erklärung der Codezeilen:
Zeile 1 speichert den Herstellernamen in die Variable herstellerpic
Zeile 2 + 3: Hier werden Umlaute und Leerzeichen Ersetzungen definiert. Umlaute und Leerzeichen dürfen in der Bild-Url ja nicht vorkommen.
Zeile 4: Notwenig. da der php-Befehl preg_replace UFT8 Umlaute nicht korrekt definiert.
Zeile 4: Umwandeln des Herstellernamen in Kleinbuchstaben.
Zeile 5: Hier werden evtl. vorhandene Umlaute ersetzt und Leerzeichen gelöscht.
Zeile 6: Hier wird der Herstellerstring wieder in UFT8 umgesetzt.
Diese Abfragen kann man selbstverständlich auch kürzer coden. Des Verständnis wegen habe ich jeden Befehl einzeln aufgezeigt.
Die letztendliche Logo-Ausgabe erfolgt mit dem Code
<img src="<?php echo $this->getSkinUrl('images/logos/').$herstellerpic.".gif"; ?>" alt="<?php echo $_product->getAttributeText('manufacturer') ?>" />
In diesem Beispiel ist das gif-Format eingefügt. Möchten Sie Ihre Logos lieber als jpg oder png speichern ändern Sie einfach die Zeile ab.
Den Bildnamen richtig definieren.
Entsprechend der im Manufacturer-Attribut hinterlegten Herstellernamen müssen die Bildnamen definiert werden.
Einige Beispiele:
Hersteller: Mustermann Bildname: mustermann.gif
Hersteller: Müllermann KG Bildname: muellermannkg.gif
Hersteller: Hägemüt Test Bildname: haegemuettest.gif
d.h. ä = ae, ü = ue, ö = oe, ß = ss und Leerzeichen entfernen.
Erstellen Sie ein Unterverzeichnis mit dem Namen logo in Ihrem skin/images Ordner und speichern dort alle Herstellerlogos ab.
Zum Beispiel:
skin/images/logo/muellermannkg.gif
Durch einfügen der nachfolgenden Code-Zeilen kann nun das Hersteller-Logo an beliebiger Stelle in der Produktanzeige (list.phtml und / oder view.phtml) erfolgen.
<?php // hersteller logo / manufactor brand
if ($_product->getManufacturer()):
$herstellerpic = $_product->getAttributeText('manufacturer');
$umlaute = Array("/ä/","/ö/","/ü/","/ß/","/ /");
$ersetzen = Array("ae","oe","ue","ss", "");
$herstellerpic = utf8_decode($herstellerpic);
$herstellerpic = strtolower($herstellerpic);
$herstellerpic = preg_replace($umlaute, $ersetzen, $herstellerpic);
$herstellerpic = utf8_encode($herstellerpic); ?>
<img src="<?php echo $this->getSkinUrl('images/logos/').$herstellerpic.".gif"; ?>" alt="<?php echo $_product->getAttributeText('manufacturer') ?>" />
<?php endif; ?>
Viel Spaß mit diesem Tutorial
Stefan Pröhl – robin2160
mageintern.de
Nachtrag:
Die Ausgabe wurde mit einer If-Abfrage erweitert. Diese prüft ob ein Hersteller überhaupt angegeben ist. Wenn nicht erfolgt auch keine Ausgabe und der IE zeigt auch kein Fehlbild mehr an.
Vielen Dank an Uniquesone für den Hinweis.
Hallo, kann ich die Bilder in der list.phtml auch skalieren? also gern kleiner als in der view.phtml!
LG aus HH
Phil
[Antwort]
echt super klasse, bin dir sehr dankbar für alles. knapp 7 monate danach gesucht, jetzt lässt sich auch mein produkt sehen lassen. kannst du hier nachschauen. dein verdienst
www/.littlerabbits/.net
Tausend dank
[Antwort]
Hallo Stefan,
danke für die Antwort. Dann ist klar, warum es so dünn bei den Alternativen zu re-captcha aussieht.
VG Sven
[Antwort]
Sehr schön – funktioniert auf Anhieb! Danke!
P.S.: Wie wär es mal mit einem CAPTCHA für Magento wie in Euren Comments? Sowas würde ich als Modul glatt kaufen.
[Antwort]
mageintern - robin2160 Antwort vom Januar 31st, 2010 15:45:
Hi b_nice,
freut mich das es dir gefällt und funktioniert.
Ein Captcha in magento ist nicht ganz so einfach einzubauen.
Aber wird auch hier an einer umsetzbaren Lösung gearbeitet.
VG Stefan
[Antwort]
in der list.phtml funktioniert das, in der view.phtml nicht. Woran kann das liegen?
feine Grüße und weiter so, diese Seiten sind ein eine Riesenhilfe, auch, um MAGENTO ein wenig besser kennen zu lernen.
feine Grüße
Uws
[Antwort]
mageintern - robin2160 Antwort vom Januar 17th, 2010 16:20:
Hi Uws,
freut mich sehr das es auch dir weiterhilft.
Nun zu deiner Frage.
Vieleicht hast du den String an einer Stelle eingebaut an der keine Ausgabe erfolgen kann,
z.B. innerhalb einer if-Abfrage die nicht greift.
Probiere doch mal den Ausgabestring direkt unterhalb der Titelausgabe oder Description des Produktes einzufügen.
Viele Grüße
Stefan
[Antwort]
Hi, danke für das Tutorial.
Bei mir wird nichts angezeigt. Any Ideas?
Folgende Schritte:
1.) Logo angelegt und nach
../magento/skin/frontend/default/XXX/images/logo/musto.png
verschoben.
2.) Code kopiert und in ../magento/app/design/frontend/default/XXX/template/catalog/product/view.phtml eingefügt
3.) Attribut ist entsprechen der Sichtbarkeit im frontend eingeschaltet
[Antwort]
mageintern - robin2160 Antwort vom Januar 9th, 2010 14:33:
Hi mato99,
da du png Grafiken verwendest solltest du auch den Ausgabestring anpassen.
Einfach von getSkinUrl(‘images/logos/’).$herstellerpic.”.gif”;
nach
getSkinUrl(‘images/logos/’).$herstellerpic.”.png”;
ändern.
VG Stefan
[Antwort]
Wow herzlichen dank, habe mich danach fast totgesucht.
[Antwort]