gpt4 book ai didi

php - 有条件地删除 Magento 中的页眉/页脚

转载 作者:可可西里 更新时间:2023-10-31 22:43:30 24 4
gpt4 key购买 nike

我有一个可以访问的模块页面

www.example.com/module/controller/action/id/10

我想在我的 Controller 的 Action 中做这样的事情

$page = (int) Mage::app()->getRequest()->getParam('id');
if($page == '12')
{
$this->getLayout()->unsetBlock('header');
$this->getLayout()->unsetBlock('footer');
}

但是上面的方法不起作用,我想我向 unsetBlock 方法传递了错误的别名。

我知道如何通过布局 xml 隐藏页眉/页脚,但在这里我想将它们隐藏在 Controller 中。

所以基本上我正在寻找替代品

<remove name="header"/>
<remove name="footer"/>

最佳答案

我找到了解决我自己问题的方法,分享是因为它可能对其他人有帮助。

1.为页面创建一个新的布局句柄

// Namespace/Modulename/Model/Observer.php
Class Namespace_Modulename_Model_Observer extends Mage_Core_Model_Abstract
{

public function addAttributeSetHandle(Varien_Event_Observer $observer)
{
$page = (int) Mage::app()->getRequest()->getParam('id');
$handle = sprintf('modulename_controller_action_id_%s', $page);
$update = $observer->getEvent()->getLayout()->getUpdate();
$update->addHandle($handle);
}
}

2.在模块的config.xml中启用观察者

// Namespace/Modulename/etc/config.xml
<frontend>
<events>
<controller_action_layout_load_before>
<observers>
<attributesethandle>
<class>Namespace_Modulename_Model_Observer</class>
<method>addAttributeSetHandle</method>
</attributesethandle>
</observers>
</controller_action_layout_load_before>
</events>
</frontend>

3.然后在模块布局 xml 中轻松更改句柄 modulename_controller_action_id_12 的布局。

<modulename_controller_action_id_12>
<remove name="header"/>
<remove name="footer"/>
<reference name="root">
<action method="setTemplate">
<template>page/1column.phtml</template>
</action>
</reference>
</modulename_controller_action_id_12>

关于php - 有条件地删除 Magento 中的页眉/页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23063110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com