Magento获取在phtml文件上使用的布局

时间:2012-06-21 07:31:54

标签: magento layout e-commerce magento-1.6

有没有办法可以在某些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列,我会把它做大。

我有什么办法吗?

2 个答案:

答案 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的一部分。