在我的2col-inside.phtml文件中,我可以使用以下方法成功调用块:
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blue-banner')->toHtml() ?>
但是我想基于URI或body类提供一个独特的横幅。所以像:
<?php if($bodyClass['category-blue']): ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blue-banner')->toHtml() ?>
<?php elseif($bodyClass['category-red']): ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('red-banner')->toHtml() ?>
<?php else($bodyClass['category-yellow']): ?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('yellow-banner')->toHtml() ?>
<?php endif;?>
将BlockId设置为页面url也会起作用(我只需返回并重命名所有块以与页面url完全匹配),但我不知道如何提取JUST页面url。
有什么建议吗?
答案 0 :(得分:1)
您甚至不需要执行任何开发来在特定类别页面或任何基于cms或布局的页面上显示静态块。使用Magento的Widgets功能。
转到“CMS - &gt;小部件”
按“添加新窗口小部件实例”按钮
选择窗口小部件类型(在您的情况下是“CMS静态块”)和应显示的主题。按“继续”按钮。
输入“Widget Instance Title”并选择应显示的商店。
按“添加布局更新”按钮并选择小部件“显示在”设置(类别,产品,CMS页面,结帐页面等),然后选择要显示的页面部分。
转到“窗口小部件选项”标签,然后选择要显示的静态块。
希望它能在没有任何开发的情况下帮助您解决问题:)
答案 1 :(得分:0)
不漂亮,但如果您将静态块命名为与页面名称相同,则此方法有效:
<?php $_base_url = $this->helper('core/url')->getHomeUrl();
$class = str_replace($_base_url, '', $this->helper('core/url')->getCurrentUrl());
$pagetitle = str_replace('.html', '', $class);
$page = str_replace('industries/', '', $pagetitle);
?>
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId($page)->toHtml() ?>
答案 2 :(得分:0)
在app/design/frontend/default/<theme>/catalog/catalog/category/view.phtml
:
$cat_name = $this->getCurrentCategory()->getName();
$block_name = $cat_name.'-banner';
echo $this->getLayout()->createBlock('cms/block')->setBlockId($block_name)->toHtml();
在那里抛出一些if
语句来检查空值,你应该离开。
干杯, JD
答案 3 :(得分:0)
在2col-inside.phtml
中添加您想要横幅的地方。
<?php echo $this->getChildHtml('banner_block') ?>
这是安全的,因为如果banner_id
不存在,则不会回显任何内容。
对于您想要横幅编辑的每个类别,它都是“自定义布局更新”框以包含以下内容...
<reference name="content">
<block type="cms/block" name="banner_block">
<action method="setBlockId"><block_id>blue_banner</block_id></action>
</block>
</reference>
...根据需要更改block_id
。在产品和CMS页面上也可以这样做。如果页面未使用2cols-inside.phtml
模板,则不会发生任何变化。