2013-01-10 95 views
1

我試圖從Magento中的自定義類別屬性中獲取值。該屬性是一個選擇欄,並已取得與下面的安裝腳本:從自定義類別屬性獲取值

$this->startSetup(); 

$this->addAttribute('catalog_category', 'category_categorycolor', array(
    'group'   => 'General Information', 
    'input'   => 'select', 
    'type'   => 'varchar', 
    'label'   => 'Categorie kleur', 
    'backend'  => '', 
    'visible'  => 1, 
    'required'  => 0, 
    'user_defined' => 1, 
    'option'   => array (
            'value' => array('yellow' => array('Geel'), 
                'purple' => array('Paars'), 
                'blue' => array('Blauw'), 
                'red' => array('Rood'), 
                'orange' => array('Oranje'), 
                'green' => array('Groen'), 
                'darkblue' => array('Donkerblauw'), 
                'lightgreen' => array('Lichtgroen'),            
               ) 
           ), 
    'global'  => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, 
)); 

$this->endSetup(); 

可惜只獲得號碼,而不是文本值。我用這條線檢索值:

<?php $_category_categorycolor = $_category->getData('category_categorycolor'); if($_category_categorycolor): ?> <?php echo $_category_categorycolor; ?> <?php endif; ?> 

有人可以幫我嗎?

回答

3

溶劑是非常混亂(我知道的唯一一個)。

$opt = array(); // will contain all options in a $key => $value manner 
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_category', 'category_categorycolor'); 
    if ($attribute->usesSource()) { 
     $options = $attribute->getSource()->getAllOptions(false); 
     foreach ($options as $o) { 
      $opt[$o['value']] = $o['label']; 
     } 
    } 

$categoryColorId = $_category->getData('category_categorycolor'); 
$categoryColorLabel = $opt[$categoryColorId]; 

// if you have problems, do a Zend_Debug::dump($opt); 
// - it should contain an array of all the options you added 

沒有測試出來,讓我知道它是否有效。

PS:無法回覆您的評論,不知道爲什麼。 $ opt包含什麼?

+0

嗨弗拉德。同樣的結果,只顯示一個數字。 – Michael

+0

嗨弗拉德。它包含以下內容: array(8){ [11] => string(5)「Blauw」 [15] => string(11)「Donkerblauw」 [9] => string(4) (5)「Groen」 [16] => string(10)「Lichtgroen」 [13] => string(6)「Oranje」 [10] => string(5) 「Paars」 [12] => string(4)「Rood」 } – Michael

+0

Hi Vlad。我的錯。錯誤的回聲:-)它與<?php echo $ categoryColorLabel; ?> – Michael

4

事情是這樣的:

$category_id = '10'; 
$attribute_code = 'category_categorycolor'; 
$category = Mage::getModel('catalog/category')->load($category_id); 

echo $category->getResource()->getAttribute($attribute_code)->getFrontend()->getValue($category); 
+0

差不多。我需要當前的類別ID而不是特定的ID。 – Michael

+0

'Mage :: registry('current_category')'存儲你當前的類別 –