使用addText在布局xml文件中创建Magento动态文本

使用addText在布局xml文件中创建Magento动态文本,magento,Magento,我目前有: <block type="core/text" name="top.address" as="topAddress"> <action method="addText"><text>PO BOX 1124, Rockdale, Sydney, NSW 2216, Australia</text></action> </block> 澳大利亚新南威尔士州悉尼Rockdale邮政信

我目前有:

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

澳大利亚新南威尔士州悉尼Rockdale邮政信箱1124号,邮编2216
但是,当我需要更新地址时,我必须在布局文件中手动进行更新。我想从商店配置中提取地址(常规/store\u信息/address),这样我就可以轻松地从一个位置更新网站上的任何地方

我想可以直接在模板上完成,如下所示:

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

但我想尝试一下布局,可能吗


谢谢。

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

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

  • 您可以使用模板,就像您提到的那样
  • 如果要避免使用模板,可以创建一个扩展
    Mage\u Core\u block\u Text
    的块,并使用提供的代码指定
    \u toHtml
    方法
  • 最好的:我将看到在通用模块中创建一个通用块,用于提取系统配置请求并将其作为文本输出。您可以让它成为一个自定义操作/方法,也可以发送一个属性值,该属性值最终会出现在块的数据数组中,然后可以在
    \u toHtml
    中查找

  • 我的答案可能有点过时,但我刚才面对这样的问题,我找到了另一种解决方法:

  • 在布局中,您可以指定
    core/text
    块,并通过helper设置其文本。你可以使用任何合适的参考资料

    <reference name="before_body_end">
        <block type="core/text" name="some.config">
            <action method="addText">
                <text helper="module_name/data/getSomeConfig" />
            </action>
        </block>
    </reference>
    

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

    此外,使用静态块也可以轻松地完成此操作,因此可以从管理面板编辑此地址,然后从模板或LayoutHanks@JMax调用它,我只是想看看这是否可行,因为我找不到任何人这样做。我决定使用#1,因为我的想法和第二选择也是一样的。@SergeiGuk我真的不想使用静态块,因为地址已经可以从存储配置中获得,但也感谢您的输入。
    public function getSomeConfig()
    {
        return Mage::getStoreConfig('your_config_path');
    }