Шаги по устранению неполадок при обновлении макета XML:
Ваш XML-файл (local.xml
или module.xml
) загружается в систему
Соответствует ли тег метки, который вы использовали в файле макета, идентификатору, сгенерированному для вашего запроса?
Самый быстрый способ отладки шага 1 заключается в том, чтобы в режиме разработчика с отображением ошибок преднамеренно вводить некорректно сформированную ошибку в файл XML обновления макета.
<layout <!-- notice missing closing taglayout -->
<company_module_index_index>
<reference name="content">
<block type="module/ablock" name="myablock" template="module/ablock.phtml" />
</reference>
</company_module_index_index>
</layout>
Если включен режим разработчика и вы очистили кэш, загрузка любой страницы с указанным выше кодом приведет к ошибке. Это позволяет вам знать, что Magento пытается загрузить ваш XML-файл. Если страница загружается без проблем, это означает, что ваш XML-файл находится не в том месте, или вы неправильно настроили XML в config.xml
.
Далее вы проверяете свой макет. Вы хотите убедиться, что вы используете правильный. Вы можете просмотреть дескрипторы макета, которые использовались для определенного запроса, вызвав следующие после ваших loadLayout
и renderLayout
запросов
//from a controller action
$this->loadLayout();
$this->renderLayout();
var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
exit("bailing early at ".__LINE__." in ".__FILE__);
Я обнаружил, что вышеуказанные элементы обычно решают 90% проблем с макетом. Обязательно пройдите процесс несколько раз, так как легко пропустить один шаг и предположить, что что-то в порядке, когда это не так. Взяв на себя мой обычный риск быть шиллом, одна из причин, по которой я создал Commerce Bug (расширение для коммерческой отладки), заключалась в том, чтобы быстро и на первый взгляд предоставлять эту информацию, чтобы помочь с проблемами отладки.
Судя по вашим комментариям ниже, проблема заключается в том, что вы используете дескриптор макета. Дескриптор, сгенерированный системой:
module_module_test
Однако дескриптор, который вы определяете в файле layout.xml, -
company_module_index_index
Это дескриптор «полное имя действия». Типичный синтаксис для этого
frontname_controllername_actionname
Измените дескриптор на module_module_test
, и вы должны быть установлены.