Получить код атрибута - PullRequest
5 голосов
/ 27 июля 2010

Очень маленькая вещь, которая сводит меня с ума:)

Я не могу получить код атрибута текущего атрибута в файле шаблона /catalog/product/view/type/options/configurable.phtml.

Вокруг (или в) строки 36, когда я изменяю

echo $_attribute->getLabel()

до

echo $_attribute->getAttributeId()

Я получил правильный идентификатор атрибута, который присутствует в таблице eav_attribute базы данных. Но когда я пытаюсь

echo $_attribute->getAttributeCode()

Я получаю пустую строку, тогда как в таблице eav_attribute есть поле attribute_code.

Не могли бы вы помочь мне найти код атрибута моего атрибута? Или, в более общем плане: как получить код атрибута атрибута, из которого мы теперь имеем идентификатор?

Большое спасибо!

Ответы [ 6 ]

15 голосов
/ 15 марта 2012

В этом случае нет необходимости перегружать базовый код Magento. Если вы напечатаете print_r (атрибут $ _), вы увидите, что Код атрибута находится глубже в array (), и вы можете использовать его непосредственно в файле шаблона следующим образом:

echo $_attribute->getProductAttribute()->getAttributeCode();
4 голосов
/ 03 февраля 2011

просто попробуйте

$_attribute_code = Mage::getModel('eav/entity_attribute')->load($_attribute->getAttributeId())->getAttributeCode();
1 голос
/ 03 августа 2010
/**
 * get attribute collection
 */
$attribute = $_product->getResource()->getAttribute('my_attribute');
/**
 * get attribute type
 */
$attribute->getAttributeType();
/**
 * get attribute Label
 */
$attribute->getFrontendLabel();
/**
 * get attribute default value
 */
$attribute->getDefaultValue();
/**
 * check if the attribute is visible
 */
$attribute->getIsVisible();
/**
 * check if the attribute is required
 */
$attribute->getIsRequired();
/**
 * get attribute value
 */
$attributeValue = Mage::getModel('catalog/product')->load($_product->getId())->getMyAttribute();

Вот подробный код и объяснение получения имени атрибута, кода и значения: http://blog.chapagain.com.np/magento-how-to-get-attribute-name-and-value/

0 голосов
/ 04 января 2014

Старый вопрос, но так как он появился в Google, я хотел бы дать ответ.

Мне удалось получить коды атрибутов с этим php:

$productAttributeOptions = $_product->getTypeInstance(true)
  ->getConfigurableAttributesAsArray($_product);
print_r($productAttributeOptions);

PS,Magento так чертовски разочаровывает.

0 голосов
/ 30 июля 2010

Так что нашли способ, который, я уверен, не самый лучший способ ... или, может быть, команда Magento не думала, что может понадобиться получить код атрибута на основе атрибута id ...

1- Перегрузка app / code / core / Mage / Eav / Model / Mysql4 / Entity / Attribute / Collection.php

Добавить этот метод:

public function setIdFilter($id)
    {
        if (empty($id)) {
            return $this;
        }
        if (!is_array($id)) {
            $id = array($id);
        }
        $this->getSelect()->where('main_table.attribute_id IN(?)', $id);
        return $this;
    }

2 - Теперь для получения кода атрибута на основе его идентификатора используйте:

$attributeCode = Mage::getResourceModel('eav/entity_attribute_collection')
        ->setIdFilter(YOUR_ATTRIBUTE_ID) /* if using this into the configurable.phtml template file, you can use $_attribute->getAttributeId() for YOUR_ATTRIBUTE_ID */
        ->getFirstItem()
        ->getAttributeCode();
echo $attributeCode;

Так непривычно, но так работает ...

Если у кого-то есть лучший способ сделать это, я был бы рад изменить мой «тикер ответа»!

0 голосов
/ 27 июля 2010

Я только что попробовал этот код в моей установке magento, и он возвращает правильный код атрибута.Вы всегда можете попробовать получить данные напрямую:

echo $_attribute->attribute_code;

, но я не думаю, что это поможет.Попробуйте var_dump или print_r в переменной $_attribute, чтобы увидеть, действительно ли отсутствуют данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...