Magento получить, какой макет используется в файлах phtml

Есть ли способ получить, какой макет используется в определенных файлах phtml?

Здесь, в моем случае, я хочу проверить, какой макет используется в catalog/list.phtml. Я использовал эту информацию, чтобы сделать условное «если» для размера сетки изображения продукта.

Я пытался найти это в Google. Но весь результат - это просто объяснение вещей с макетом xml. Самая близкая подсказка, которую я получил, - это тема

Magento получить макет для данной страницы

в котором указано использование этого фрагмента

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

но когда я попробовал это на файлах phtml, я получил ошибку исключения

ОБНОВЛЕНИЕ

Ответ Джо ниже дал мне еще одну подсказку, исключение исчезло. Но поведение не совсем то, что мне нужно. Этот фрагмент кода, кажется, просто проверяет, определен ли указанный блок в XML. Мне действительно нужно, существует ли этот блок на определенной странице.

В моем случае мне нужно проверить, какой макет используется в catalog/product/list.phtml. если это 3 столбца, я уменьшу размер изображения. Если это 1 столбец, я сделаю его больше.

Могу ли я как-то это сделать??


person Kamal    schedule 21.06.2012    source источник


Ответы (2)


Если я правильно прочитал вопрос, то попробуйте:

$this->getLayout()->getBlock('root')->getTemplate();
person djdy    schedule 25.06.2012

Удалить loadLayout():

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

К тому времени, когда вы находитесь в файле PHTML, макет уже загружен.

В файлах PHTML $this относится к классу Mage_Core_Block_Template (или классу, который его расширяет). В этом классе не определен метод loadLayout(), поэтому вы получаете исключение; вместо этого loadLayout() является частью Mage_Core_Controller_Varien_Action.

person Joe    schedule 23.06.2012
comment
спасибо, Джо... исключение исчезло... но похоже, что этот фрагмент только проверяет, существует ли указанный блок в XML... мне нужно знать, существует ли этот блок на определенной странице... во всяком случае, я мог бы сделай это? Кстати, я уточню свой вопрос - person Kamal; 25.06.2012