有没有办法可以在某些phtml文件中使用哪种布局?
在我的情况下,我想检查catalog / list.phtml上使用的布局,我使用该信息在产品图像网格大小上生成条件“if”。
我试图谷歌了。但所有结果只是解释有关xml布局的事情。我得到的最接近的线索就是这个帖子
Magento get layout for given page
表示使用此代码段
$left_block = $this->loadLayout()->getLayout()->getBlock('left');
但是当我在phtml文件上尝试它时,我收到了异常错误
更新
下面乔的回答给了我更多线索,异常消失了。但这种行为并不是我真正需要的。这段代码似乎只是检查是否在XML上定义了指定的块。我真正需要的是该块是否存在于某个页面上。就我而言,我需要检查catalog / product / list.phtml上使用的布局。如果它是3列,我将使图像调整大小。如果它是1列,我会把它做大。
我有什么办法吗?
答案 0 :(得分:11)
如果我正确阅读了问题,请尝试:
$this->getLayout()->getBlock('root')->getTemplate();
答案 1 :(得分:3)
删除loadLayout()
:
$left_block = $this->getLayout()->getBlock('left');
当您进入PHTML文件时,布局已经加载。
在PHTML文件中,$ this指的是Mage_Core_Block_Template
类(或扩展它的类)。这个类没有定义loadLayout()方法,这就是你得到异常的原因;相反,loadLayout()是Mage_Core_Controller_Varien_Action
的一部分。