我正在为网上商店使用 Magento 1.7,我想在目录上方显示一些特定的静态块。因此,当客户进入菜单并单击例如类别 A,然后单击制造商 B 时,目录产品列表上方应该有一个带有制造商特定信息的文本块。此外,当他们点击制造商 C 时,应该有其他文本,然后是制造商 B。
我认为最简单的方法是为所有制造商制作静态块,并制作一个 PHP 脚本。那可能吗?或者我可以用另一种方式做到这一点吗?
先感谢您!
亲切的问候,
让-保罗
如果你想自己做,你可以实现一个观察者,检查在分层导航中应用了哪些过滤器,然后将你的块添加到content
块中。
然后,您的块实现您想要为制造商显示不同信息的任何逻辑。
我会尝试controller_action_layout_generate_blocks_after
,controller_action_layout_render_before
或者controller_action_layout_render_before_'.$this->getFullActionName()
分层类别的 FullActionName 是什么:-)
关于观察者,您可以在 inchoos 找到相关内容:http: //inchoo.net/category/ecommerce/magento/events-observers/
要获得选择制造商的信息,我认为有两种方法:
Mage::app()->getRequest()->getParam()
应该可以工作$layout->getBlock('catalog.leftnav')
以某种方式将信息拉出块之后你可以添加你的块。
我建议引入您自己的更新句柄(因为我不知道如何将块添加到开头content
)。用你自己的手柄,你可以使用before="-"
并如此处所述:http: //www.classyllama.com/magento/add-custom-layout-handles-eg-parent-categories
您可以通过添加您的句柄$layout->getUpdate()->addHandle('manufacturer_informations');
我会在观察者中尝试这样的事情:
if($category = Mage::registry('current_category')) {
if($category->getName() == 'MyBrand') { // ot maybe $category->getId() == ...
//instantiate some $block
}
$layout->getBlock('content')->insert($block, 'brand-information');
}