Magento получить макет для данной страницы - PullRequest
9 голосов
/ 11 августа 2011

Я работаю над модулем Magento, где я хочу получить макет со страницы веб-интерфейса.Под страницей веб-интерфейса я подразумеваю все типы страниц, то есть страницу cms, категорию, продукт, корзину, мой аккаунт и т. Д.

Я прочитал отличную книгу magento-nofrills от Alan Storm и использую егоПлагин Commercebug, чтобы помочь мне разработать мой magento сайт.Я также потратил некоторое время на stackoverflow, ища похожий вопрос, пожалуйста, прости меня, если я пропустил его.

Если, например, у меня есть идентификатор страницы или идентификатор категории, как мне получить макет этогоСтраница веб-интерфейса из кода, запускаемого в бэкэнде?

Я играл с запросом, и когда я запускаю этот код в веб-интерфейсе, я вижу, что модуль, контроллер, дескрипторы макетов и т. д. изменяются, например, при просмотрестраница каталога

$request = Mage::app()->getRequest();
$request->setModuleName('cms');
$request->setRouteName('cms');
$request->setControllerName('page');
$request->setActionName('view');
$request->setParam('page_id', 6);

Но когда я проверяю xml из макета, я не могу заставить magento показывать мне xml для (в этом примере) страницы cms с id = 6:

Mage::app()->getLayout()->getNode()->asXml();

Возможно, я думаю, что слишком сложно, хотя.Я хотел бы проверить, есть ли у определенной страницы боковые панели, какие блоки и элементы отображаются на странице и на боковых панелях (только активные блоки, а не игнорируемые).

Заранее спасибо!Тим

1 Ответ

6 голосов
/ 22 марта 2012

Вызовите loadLayout () перед getLayout ().

Вы можете проверить, активен ли блок в макете, вызвав getBlock ($ block_name):

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

Если блок не является частью макета (или игнорируется), тогда $ left_block будет ложным. Вы можете использовать getBlock () совместно с getSortedChildren (), чтобы увидеть его дочерние блоки:

$this->loadLayout()->getLayout()->getBlock('content')->getSortedChildren();

Вышеприведенное вернет строковый массив имен блоков в блоке «content». Будут возвращены только имена активных блоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...