Rufen Sie den Optionswert für das Attribut admin ab, wenn Sie die Option ID oder den Wert für die Speicheransicht haben


7

Ich versuche es seit Stunden, aber ich kann den Wert der Administratoroption eines bestimmten Attributs nicht laden. Obwohl ich genug Informationen wie option_id und store view value habe:

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeOptions = $attribute ->getSource()->getAllOptions();

Meine Attributtabelle (Name: Farbe) sieht so aus

Admin-Standardspeicheransicht
15 weiß
20 gelb
22 blau
45 grün

Folgendes gibt mir nur die Options-IDs:

$colorOfProduct = "white";
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attributeOptions = $attribute ->getSource()->getAllOptions();

foreach ($attributeOptions as $option) {
    if ($option['label'] == $colorOfProduct)
    echo $option['value'];
}

Ich habe den Standardwert für die Speicheransicht (dh weiß) und benötige den zugewiesenen Administratorwert. Leider schaffe ich es nicht und schätze jede Hilfe.

Antworten:


4

Zum Abrufen des Optionswerts für admin

dann können Sie durch folgenden Code und wobei 0 die Admin-Store-ID ist

$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
 $collection =Mage::getResourceModel('eav/entity_attribute_option_collection')
                ->setPositionOrder('asc')
                ->setAttributeFilter($attributeId)
                ->setStoreFilter(0)
                ->load();
                echo "<pre>";
                print_r($collection->toOptionArray());
                echo "</pre>";

Sie müssen nur den Laden wechseln

 view ids on place of 0;

Du hast mich in die richtige Richtung gelenkt. Vielen Dank für deine Hilfe! Ich werde morgen meine vollständige Lösung veröffentlichen.
Stefan

2

Hier meine vollständige Lösung für ein bestimmtes Problem. Vielleicht kann es jemand benutzen.

    function getImgColor($productId, $colorOfProduct)
    {
    $optionId = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, 'color', 1);

    $attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('catalog_product','color');
    $collection = Mage::getResourceModel('eav/entity_attribute_option_collection')
        ->setPositionOrder('asc')
        ->setAttributeFilter($attributeId)
        ->setStoreFilter(0)
        ->load();

    $collection = $collection->toOptionArray();

    foreach ($collection as $option) {
        if ($option['value'] == $optionId) {
            $img = $option["label"];
            break;
        }
    }

    return file_exists(Mage::getBaseDir('media')."/colorall/_thumbs/color/".$img.".png") ? "<img src=\"".Mage::getBaseUrl('media')."colorall/_thumbs/color/".$img.".png\" title=\"".$colorOfProduct."\" />" : Mage::getBaseDir('media')."/colorall/_thumbs/color/".$img.".png";
}

0

Sie können dies einfacher in einem einzigen Aufruf wie folgt tun:

Beispielattribut 'gender', für das ein benutzerdefinierter Attributwert abgerufen werden soll, und wir verwenden die magische Methode getGender (), um das Äquivalent von getData ('gender') zu erhalten.

$gender = Mage::getModel('catalog/resource_eav_attribute')->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'gender')->getSource()->getOptionText($product->getGender());
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.