Magento:在布局文件中使用自定义变量

时间:2012-11-27 12:50:02

标签: magento

是否可以在布局文件中使用Custom Variables?我可以在这样的模板文件中使用它们:

Mage::getModel('core/variable')->loadByCode('variableCode')->getData('store_plain_value')

但不确定xml文件。

我知道我可以使用上面的内容,但这对于未来的用途也是有用的。

  

更新:最不清楚我害怕。我特意想要访问管理面板“自定义变量”部分,而不仅仅是将我自己的变量传递给一个块。我为缺乏明确性而道歉。

3 个答案:

答案 0 :(得分:5)

Mage_Core_Block_Abstract扩展Varien_Object并继承其__call()重载。除了布局XML调用块方法中的块操作,以下是可能的:

传递一个字符串(可以翻译!):

<action method="setSomeVal" translate="arg" module="some/helper">
    <arg>Some String</arg>
</action>

传递数组:

<action method="setSomeVal">
    <arg>
        <key1>Some String</key1>
        <key2>Some String</key2>
        <key3>
            <multikey1>Some String</multikey1>
        </key3>
    </arg>
</action>

传递你想要的任何东西:

<action method="setSomeVal">
    <arg helper="some/helper/method">
        <param_for_the_helper_method>
            <getting_crazy>Oh Boy.</getting_crazy>
        </param_for_the_helper_method>
</action>

使用$this->getSomeVal();检索块/模板中的值。

好玩,呵呵?

答案 1 :(得分:4)

您是否尝试过以下操作:

<!-- in layout xml file -->
<action method="setData"><name>color_id</name><value>5</value></action>

然后,您可以在下面的块文件中使用:

  $colors = $this->getColorId();
# or
  $colors = $this->getData('color_id');

答案 2 :(得分:2)

根据更新的问题:

创建一个包装core/variable功能的辅助类,例如:

class Some_Module_Helper_Variable
{
    public function getVariableData($code,$param)
    {
        return Mage::getModel('core/variable')->loadByCode($code)->getData($param);
    }
}

然后,在您的块的布局XML中,您可以执行此操作(我相信):

<action method="setSomeVal">
    <arg helper="class_group/variable/getVariableData">
        <arg1>variableCode</arg1>
        <arg2>store_plain_value</arg2>
    </arg>
</action>