如何使用 public 函数前端 Magento

How to use public function frontend Magento

我在 magento 中有一个自定义函数,如何在前端查看 public 函数值?

函数:

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;
}

谢谢

在 Magento 中,如果您想通过调用函数来显示某些值。您需要在

块中定义该函数
  • .phtml 文件:您可以从此模板文件调用任何块函数。

如果这个函数定义在一个块中。使用此代码从 phtml 文件调用它。

$blockObj = $this->getLayout()->getBlock('block_name'); 

调用块函数

echo $blockObj->getOptionsWithValues();

正如您所说,您在 /app/code/core/Mage/Wishlist/Model/Item/Option.php 中添加了此代码。所以你可以实例化这个 class 使用像

这样的工厂方法
$itemOption = Mage::getModel('wishlist/item_option');

如果您在单独的文件中尝试此代码并回显 get_class($itemOption),您将看到 class 名称。现在你可以直接通过对象访问函数,如 $itemOption -> getOptionsWithValues().

但是您不应该直接在核心文件中进行更改,而是可以在本地文件夹中复制相同的文件夹结构或重写您要覆盖的模型 class。