5

有没有办法让我在某个 phtml 文件上使用哪种布局?

在我的例子中,我想检查目录/list.phtml 上使用的布局,我使用该信息对产品图像网格大小进行条件“如果”。

我试过用谷歌搜索它。但是所有的结果都只是解释了关于 xml 布局的事情。我得到的最接近的线索是这个线程

Magento 获取给定页面的布局

其中说明了此代码段的使用

$left_block = $this->loadLayout()->getLayout()->getBlock('left');

但是当我在 phtml 文件上尝试它时,出现异常错误

更新

乔在下面的回答给了我更多线索,异常消失了。但这种行为并不是我真正需要的。那段代码似乎只是检查是否在 XML 上定义了指定的块。我真正需要的是该块是否存在于某个页面上。

就我而言,我需要检查目录/产品/list.phtml 上使用的布局。如果它是 3 列,我会缩小图像的大小。如果它是 1 列,我会把它变大。

有什么办法我可以做到吗?

4

2 回答 2

12

如果我正确阅读了问题,请尝试:

$this->getLayout()->getBlock('root')->getTemplate();
于 2012-06-25T02:21:52.177 回答
3

删除loadLayout()

$left_block = $this->getLayout()->getBlock('left');

当您在 PHTML 文件中时,布局已经加载。

在 PHTML 文件中,$this 指的是Mage_Core_Block_Template类(或扩展它的类)。这个类没有定义 loadLayout() 方法,这就是你得到异常的原因;相反, loadLayout() 是Mage_Core_Controller_Varien_Action.

于 2012-06-23T16:21:22.107 回答