【问题标题】:Magento get which layout being used on phtml filesMagento 获取用于 phtml 文件的布局
【发布时间】:2012-06-21 07:31:53
【问题描述】:

有没有一种方法可以让我在某些 phtml 文件上使用哪种布局?

在我的例子中,我想检查 catalog/list.phtml 上使用的布局,我使用该信息对产品图像网格大小设置条件“if”。

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

Magento get layout for given page

其中说明了这个sn-p的用途

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

但是当我在 phtml 文件上尝试它时,我得到了一个异常错误

更新

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

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

有什么办法可以做到吗?

【问题讨论】:

    标签: magento layout e-commerce magento-1.6


    【解决方案1】:

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

    $this->getLayout()->getBlock('root')->getTemplate();
    

    【讨论】:

      【解决方案2】:

      删除loadLayout()

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

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

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

      【讨论】:

      • 谢谢乔...异常消失了...但看起来sn-p只检查XML上是否存在指定的块...我需要知道的是该块是否存在在某个页面上...无论如何我可以做到吗?顺便说一句,我会完善我的问题
      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2016-09-19
      相关资源
      最近更新 更多