在自定义页面Magento上显示自定义静态块

时间:2013-08-05 14:33:42

标签: magento content-management-system block frontend routes

我对自定义页面上显示的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”

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

谢谢你的回答!

4 个答案:

答案 0 :(得分:1)

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

注意:如果您有自定义主题,则页脚的引用名称可能不同。此方法已经过测试,可以使用Magento

中包含的Modern主题
  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. 系统&gt;下清除您的Magento缓存缓存管理并刷新“类别”页面。
  8. 如果这不起作用,则您使用的主题的引用名称可能不正确。您可以在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提供的内置功能,将静态块分配给特定类别。

  1. 转到目录&gt;管理类别
  2. 单击要在左侧分配块的类别。
  3. 转到显示设置标签
  4. 展示模式设置为Static block onlyStatic block with products
  5. CMS阻止设置为您要在此类别中显示的静态阻止。
  6. 点击保存类别按钮。
  7. 对不同的类别重复此步骤。您可以选择一个唯一的静态块,或者以这种方式将相同的静态块分配给多个类别。