当你用到Magento中的自定义控制器(不论前台还是后台)时,你可能会使用现有的块和模型,或者需要重写类。但当你想要移动、删除常见块的时候会发生什么呢?你真的能设计你的网页视图而不需要触及层叠样式表(CSS)?

事实上,是的你可以以一种相当简单的方式做到。前提是你知道你控制器的句柄。

要获取你控制器的句柄,你需要一些调试技术。在你控制器的动作里加入下面代码:

 Zend_Debug::dump($this->getLayout()->getUpdate()->getHandles());

它以同样的方式作用于前端和后台。你自定义的动作看起来像这样:

public function indexAction()
{
        $this->loadLayout();
        $this->renderLayout();
        Zend_Debug::dump($this->getLayout()->getUpdate()->getHandles());
}

在你的浏览器输出,你可能会得到这样的结果:

前端控制器:

array(5) {
  [0] => string(7) "default"
  [1] => string(13) "STORE_default"
  [2] => string(29) "THEME_frontend_default_hybrid"
  [3] => string(29) "alwayly_developers_index_index"
  [4] => string(19) "customer_logged_out"
}

后台控制器:

array(4) {
  [0] => string(7) "default"
  [1] => string(11) "STORE_admin"
  [2] => string(30) "THEME_adminhtml_default_inchoo"
  [3] => string(28) "adminhtml_switch_index_index"
}

你需要数组中第四项的值。

前端:

 [3] => string(29) "alwayly_developers_index_index"

后台:

 [3] => string(28) "adminhtml_switch_index_index"

现在,你了解了句柄之后,我们开始你的布局文件。在你主题的布局文件夹里创建“local.xml”布局文件。在我简单的例子里,我移除头部和底部,前端和后台。

前端示例:app/design/frontend/default/default/layout/local.xml

< ?xml version="1.0"?>
<!--
/**
 * Magento
 *
 * @category    Alwayly
 * @package     Alwayly_Developers
 */
-->
<layout>
 
    <alwayly_developers_index_index>
	<remove name="header" />
    	<remove name="footer" />
    </alwayly_developers_index_index>
 
</layout>

后台示例:app/design/adminhtml/default/default/layout/local.xml

< ?xml version="1.0"?>
<!--
/**
 * Magento
 *
 * @category    Alwayly
 * @package     Alwayly_Developers
 */
-->
<layout>
 
    <adminhtml_switch_index_index>
	<remove name="header" />
    	<remove name="footer" />
    </adminhtml_switch_index_index>
 
</layout>

360magento提供专业的基于magento系统的电商网站开发服务,如有需求或相关咨询,请与我们联系