1

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

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

但不确定xml文件。

我知道我可以改用上面的方法,但这对于将来的使用也很有用。

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

4

3 回答 3

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();

好玩吧?

于 2012-11-27T15:17:53.460 回答
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');
于 2012-11-27T15:08:48.403 回答
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>
于 2012-11-27T16:33:30.920 回答