0

我对自定义页面上显示的 Magento cms 静态块有一些疑问。例如,我有 3 个静态块(块 1、块 2、块 3),我需要在类别 1 和子类别 1 显示块 1,在类别 2 和子类别 2 显示块 2,在其他页面显示块 3(家、关于等)

我尝试使用Mage::app()->getFrontController()->getRequest()->getRequestUri()

但是我收到了像“category1.html”这样的请求,如果我们要进入这个类别的子类别 - 块被更改为默认值。

如果使用Mage::app()->getFrontController()->getRequest()我收到“目录/类别/视图/id/id_number”

我真的不明白如何解决这个问题。

感谢您的回答!

4

4 回答 4

1

您可以使用自定义布局更新功能将块添加到页面的特定部分,用于特定类别。

注意:如果您有自定义主题,页脚的参考名称可能不同。此方法已经过测试,可用于 Magento 随附的现代主题

  1. 转到目录 > 管理类别
  2. 选择要分配块的类别。
  3. 转到自定义设计选项卡。
  4. 使用父类别设置设置No
  5. 自定义布局更新中,插入以下 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>

  6. 替换为静态块my_footer_block标识符(block_id)。

  7. 在System > Cache Management下清除 Magento Caches并刷新 Category 页面。

如果这不起作用,则参考名称可能与您使用的主题不正确。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文件中的内容。

于 2013-08-05T19:29:11.877 回答
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
于 2013-08-06T11:20:08.623 回答
0

在您的本地模块中覆盖catalog.xml 在内容参考中添加

在您的目录/类别/voew.phtml 中添加此代码

$_current_category=$this->getCurrentCategory();

if(cond == '第一个类别') { echo $this->getChildHtml('block1'); }

对于其他块类似

于 2013-08-05T15:41:44.200 回答
0

您可以使用 Magento 提供的内置功能简单地将静态块分配给特定类别。

  1. 转到目录 > 管理类别
  2. 在左侧单击要分配块的类别。
  3. 转到显示设置选项卡
  4. 显示模式设置为Static block onlyStatic block with products
  5. CMS 块设置为要在此类别中显示的静态块。
  6. 单击保存类别按钮。

对不同的类别重复此步骤。您可以选择一个唯一的静态块,或者以这种方式将同一个静态块分配给多个类别。

于 2013-08-05T18:22:47.283 回答