Как использовать интерфейс общедоступной функции Magento
У меня есть пользовательская функция в magento, как я могу сделать в интерфейсе, чтобы увидеть значения общедоступных функций?
Функция:
public function getOptionsWithValues()
{
$attributes = $item->getOptionByCode('attributes')->getValue();
if (!$attributes)
{
return null;
}
$attributes = unserialize($attributes);
$options = array();
foreach ($attributes as $attr_id => $attr_value)
{
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attr_id);
$attr_options = $attribute->getSource()->getAllOptions(false);
foreach ($attr_options as $option)
{
if ($option['value'] == $attr_value)
{
$options[$attribute->getFrontendLabel()] = $option['label'];
}
}
}
return $options;
}
Спасибо
2 answers
Как вы сказали, вы добавили этот код в /app/code/core/Mage/Wishlist/Model/Item/Option.php . Таким образом, вы можете создать экземпляр этого класса, используя заводские методы, такие как
$itemOption = Mage::getModel('wishlist/item_option');
Если вы попробуете этот код в отдельном файле и повторите get_class($itemOption)
, вы увидите имя класса. Теперь вы можете получить доступ к функции непосредственно с помощью объекта, например $itemOption -> getOptionsWithValues()
.
Но вы никогда не должны вносить изменения в основные файлы напрямую, скорее вы можете скопировать ту же структуру папок в локальную папку или переписать модель класс, который вы хотите переопределить.
В Magento, если вы хотите отобразить определенные значения, вызвав функцию. вам нужно определить эту функцию в блоке
- .файл phtml: из этого файла шаблона вы можете вызвать любую функцию блока.
Если эта функция определена в блоке. вызовите его из файла phtml, используя этот код.
$blockObj = $this->getLayout()->getBlock('block_name');
Вызовите функцию блокировки
echo $blockObj->getOptionsWithValues();