在类别描述中使用自定义变量
-
13-12-2019 - |
题
我最近创建了一个名为 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.phtml
and为您的内容创建CMS块,其中将其在模板文件中添加到其中:
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>
.
更新 刚刚看好<强大> Marius的答案 - 他的解决方案似乎非常整洁,并增加了你需要的合宪性。