Frage

In der Produktliste zeige ich dem Hersteller und alles funktioniert einwandfrei. Aber wenn ich eine Suche mache, anstatt den Namen des Herstellers anzuzeigen, zeigt er Nein. Ich verwende den folgenden Code, um die Marken anzuzeigen:

$_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product)

Ich verwende Magento 1.7.0.2.

War es hilfreich?

Lösung

Diagnose Ihres tatsächlichen Problems:

  • Stellen Sie sicher, dass die für die Suche verwendete Produktsammlung das Herstellerattribut enthält oder dass das Herstellerattribut im Backend auf dem Frontend angezeigt wird (siehe Screenshot unten).
  • Stellen Sie sicher, dass die manufacturer Attr ist für die festgelegt Geeignete Storeansicht! Stellen Sie in der Bearbeitungsansicht des Katalogprodukts verwalten, sicher, dass der Dropdown für den Wert der Store -Ansicht festgelegt wird. Nicht die Store/Website/Standardansicht.
  • Stellen Sie sicher, dass Sie sich neu integriert haben. Wenn Sie bei CE sind, führen Sie den Indexer manuell aus. Wenn bei EE sicherstellen, dass Ihre Indizes von Cron oder über aktualisiert werden $ php shell/indexer.php reindexall.
  • Löschen Sie alle Ihre Caches. Spülenspeicher spülen. rm -rf var/cache und all die zerstörerischen Dinge. Überprüfen Sie die Existenz von a /tmp/magento Mappe.
  • Deaktivieren/Aktivieren Sie flacher Katalog und Reindedex.

Aktivieren Sie ein Attribut für die Sichtbarkeit von Frontend/Produktseite/Sammlung:

enter image description here

Warum das passiert:

Also gibt es eine Zulässige Begründung Warum Magento "Nein" zurückgibt, wenn keine Daten verfügbar sind. Die Methode getFrontend Gibt ein Objekt zurück, das eine Unterklasse von ist Mage_Eav_Model_Entity_Attribute_Frontend_Abstract.

In der Methode getValue, Wenn keine Optionen verfügbar sind / festgelegt sind, ist es standardmäßig, boolean auszugeben. Somit ist der Wert von "no" - dem Frontend Booleschen Äquivalent von false:

public function getValue(Varien_Object $object)
{
    $value = $object->getData($this->getAttribute()->getAttributeCode());
    if (in_array($this->getConfigField('input'), array('select','boolean'))) {
        $valueOption = $this->getOption($value);
        if (!$valueOption) {
            $opt     = Mage::getModel('eav/entity_attribute_source_boolean');
//....

Sobald die oben genannten Fehlerbehebungspunkte erfolgen, erhalten Sie immer noch "Nein" und es ist eine angemessene Antwort (z. B. haben Sie keinen Hersteller auf ein Produkt und absichtlich), möchten Sie die Ausgabe möglicherweise bedingt testen, bevor sie wiederholt werden:

$value = $_product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($_product);
echo $value=="No" ? "" : $value;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top