Magento-当php BodyClass==‘;不管怎样’;

Magento-当php BodyClass==‘;不管怎样’;,php,magento,Php,Magento,在我的2col-inside.phtml文件中,我可以使用以下方法成功调用块: 但是,我希望基于URI或body类提供一个独特的横幅。比如: <?php if($bodyClass['category-blue']): ?> <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('blue-banner')->toHtml() ?> <?php elsei

在我的2col-inside.phtml文件中,我可以使用以下方法成功调用块:

但是,我希望基于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),但我也不知道如何仅提取页面url


有什么建议吗

不太好,但如果将静态块命名为与页面名称相同的名称,则此操作有效:

<?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() ?>

在您的
应用程序/design/frontend/default//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

在您的
2col-inside.phtml
中,将此添加到您想要的横幅处

<?php echo $this->getChildHtml('banner_block') ?>

…根据需要更改
块id
。同样也可以在产品和CMS页面上完成。如果页面未使用.phtml内的
2cols
模板,则不会发生任何更改。

您甚至不需要执行任何开发来在特定类别页面或任何基于cms或布局的页面上显示静态块。使用Magento的Widgets功能

  • 转到“CMS->Widgets”

  • 按“添加新窗口小部件实例”按钮

  • 选择小部件类型(在您的例子中是“CMS静态块”)和应该显示的主题。按“继续”按钮

  • 输入“小部件实例标题”并选择应该显示它的商店

  • 按“添加布局更新”按钮,选择您的小部件“显示”设置(类别、产品、CMS页面、签出页面等),然后选择页面的哪个部分显示它

  • 转到“小部件选项”选项卡,选择要显示的静态块


  • 希望它能帮助您解决您的问题,而无需任何开发:)

    这些是否仅用于分类页面?如果是这样,“蓝色类别”是否指称为“蓝色”的特定类别?是的,这些是类别页面。我最终使用了下面的代码。。。对于这个问题,是否有特定于类别的解决方案?我的方法是老式的(几个月前!),Ivan的widget方法要好得多。除非横幅的位置不合适,否则请使用该选项。
    <reference name="content">
        <block type="cms/block" name="banner_block">
            <action method="setBlockId"><block_id>blue_banner</block_id></action>
        </block>
    </reference>