我对自定义页面上显示的Magento cms静态块有一些疑问。 例如,我有3个静态块(块1,块2,块3),我需要在类别1和子类别1中显示块1,在类别2和子类别2中显示块2,在其他页面上显示块3(家,约等等)
我尝试使用Mage::app()->getFrontController()->getRequest()->getRequestUri()
但是我收到了像“category1.html”这样的请求,如果我们要转到这个类别的子类别 - 阻止会更改为默认值。
如果使用Mage::app()->getFrontController()->getRequest()
我收到了“catalog / category / view / id / id_number”
我真的不明白如何解决这个问题。
谢谢你的回答!
答案 0 :(得分:1)
您可以使用自定义布局更新功能为特定类别添加块到页面的特定部分。
注意:如果您有自定义主题,则页脚的引用名称可能不同。此方法已经过测试,可以使用Magento
中包含的Modern主题No
在自定义布局更新中,插入以下XML
<reference name="bottom.container">
<block type="cms/block" name="my_footer_block">
<action method="setBlockId">
<block_id>my_footer_block</block_id>
</action>
</block>
</reference>
将my_footer_block
替换为静态块的标识符(block_id)。
如果这不起作用,则您使用的主题的引用名称可能不正确。您可以在app/design/frontend/[THEME PARENT]/[THEME CHILD]/layout/page.xml
下查看并在文件中搜索page/html_footer
来查看参考名称。
在文件中,你会发现如下内容:
<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
<block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">
<label>Page Footer</label>
<action method="setElementClass"><value>bottom-container</value></action>
</block>
<block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
<block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
</block>
<block type="core/text_list" name="before_body_end" as="before_body_end" translate="label">
<label>Page Bottom</label>
</block>
</block>
请注意name
块的page/html_wrapper
属性。这是步骤步骤5 中提供的代码中使用的名称引用。如果与bottom.container
不同,请更改bottom.container
以匹配 page.xml 文件中的内容。
答案 1 :(得分:1)
这可能会对你有所帮助
Strategy : Check current page is whether current category is available on current page or not, If available then you can check it's level and depending on that you can show you block
Solution :
$_current_category=$this->getCurrentCategory();
1)get current category and if category not available then show default block
2)if category found get it's level $_current_category->getLevel() and then you can place your block accordingly
答案 2 :(得分:0)
覆盖本地模块中的catalog.xml 加入 在内容参考
在您的目录/ category / voew.phtml中 添加此代码
$ _ current_category = $这 - &GT; getCurrentCategory();
if(cond =='1st class'){ echo $ this-&gt; getChildHtml('block1'); }
与其他街区类似
答案 3 :(得分:0)
您可以使用Magento提供的内置功能,将静态块分配给特定类别。
Static block only
或Static block with products
。对不同的类别重复此步骤。您可以选择一个唯一的静态块,或者以这种方式将相同的静态块分配给多个类别。