我最近创建了一个名为 storecount -我将以编程方式增加添加到我的商店定位器插件的每个商店。

我想在不同的位置显示这一点,包括产品和类别描述,所以当我们添加一个新的商店,我们不必找到商店计数的每一个出现和手动增加它1。

使用 {{customVar code=storecount}} 在类别描述中不起作用。有什么办法我可以得到这个变量,而不会将Magento核心砍成碎片?

有帮助吗?

解决方案

最简单的方法是使用相同的模板处理器进行类别描述,因为它用于cms块和页面内容。小部件模块中的那个。
为此,您需要扩展名。我们叫它吧 StackExchange_Catalog.
您将需要以下文件。

app/etc/modules/StackExchange_Catalog.xml -声明文件

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
                <Mage_Cms />
                <Mage_Widget />
            </depends>
        </StackExchange_Catalog>
    </modules>
</config>

app/code/local/StackExchange/Catalog/etc/config.xml -配置文件

<?xml version="1.0"?>
<config>
    <global>
        <catalog>
             <content>
                <tempate_filter>widget/template_filter</tempate_filter>
            </content>
        </catalog>
    </global>
</config>

清除缓存并重试。

其他提示

在没有黑色的magento核心,是的;没有代码,没有。

您可以编写一个观察者,该观察者侦听Catalog_Category_Load_After事件并在那里操作类别描述。

/编辑:保存更改描述的类别时,也将保存自定义变量,因此这不是一个很好的解决方案。

另一种方式是将storecount变量添加到模板文件:

// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');
.

如果您想知道哪个模板,请打开模板路径提示,您应该能够在其中添加到模板文件中的位置。不要覆盖核心模板,将其复制到主题的目录中,因此将其副本副本,如世纪odicetagcode等地。如果您不遵循这种练习,请在升级Magento时放松您的工作。

它可能更好的练习到创建CMS块并将其添加到模板文件中,以便更容易编辑和关闭。

使用app/design/frontend/[Your Design Package]/[Your Theme]/template/catalog/category/view.phtmland为您的内容创建CMS块,其中将其在模板文件中添加到其中:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>
.

更新 刚刚看好<强大> Marius的答案 - 他的解决方案似乎非常整洁,并增加了你需要的合宪性。

许可以下: CC-BY-SA归因
scroll top