0

我目前有这个:

    <block type="core/text" name="top.address" as="topAddress">
        <action method="addText"><text>PO BOX 1124, Rockdale, Sydney, NSW 2216, Australia</text></action>
    </block>

但是,当我需要更新地址时,我必须在布局文件中手动进行。我想从商店配置 ( general/store_information/address ) 中提取地址,因此,我可以轻松地从一个位置更新网站上的任何地方。

我想它可以像这样直接在模板上完成:

<?php echo Mage::getStoreConfig('general/store_information/address') ?>

但是我想尝试布局,可以吗?

谢谢。

4

2 回答 2

4

我的回答可能是过时了,但是我刚才遇到了这样的问题,我找到了另一种解决方法:

  1. 在布局中,您可以指定core/text块并通过助手设置其文本。您可以使用任何合适的参考。

    <reference name="before_body_end">
        <block type="core/text" name="some.config">
            <action method="addText">
                <text helper="module_name/data/getSomeConfig" />
            </action>
        </block>
    </reference>
    
  2. getSomeConfig在助手中声明函数:

    public function getSomeConfig()
    {
        return Mage::getStoreConfig('your_config_path');
    }
    

通过这种方式,您甚至可以将一些动态数据传递到 javascript 代码中。

于 2015-06-18T09:49:58.913 回答
3

简短的回答 - 不。它没有任何功能。这并不是说它不能完成。您可以在操作标签上使用一个属性 - ifconfig。它会查看是否设置了系统配置标志,如果它返回 true,那么它将继续执行该操作。您可以覆盖扩展 Mage/Core/Model/Layout.php以添加该功能。

不过,这个问题有很多选择。

  1. 您可以使用模板,就像您提到的那样。
  2. 如果您想避免使用模板,您可以使用您提供的代码创建一个扩展Mage_Core_Block_Text并指定方法的块。_toHtml
  3. 最好的:我会看到在通用模块中创建一个通用块,用于拉取系统配置请求并将它们作为文本输出。你可以让它成为一个自定义的动作/方法,或者发送一个属性值,它最终会出现在块的数据数组中,然后你可以在_toHtml.
于 2012-11-07T02:54:22.240 回答