Magento: local.xml не показывает блок

Итак, у меня есть пустой пакет, в котором хранится local.xml

(Пути здесь не описываю, все кеши отключены, журналы ошибок включены).

Я добавил статический блок в админку. Он называется «two_level_links».

Затем я добавил код в local.xml:

<?xml version="1.0"?>

<layout version="0.1.0">
    <default>
        <reference name="header">
            <remove name="top.links"/>
            <block type="cms/block" name="topTwoLevelLinks">
                <action method="setBlockId">
                    <block_id>two_level_links</block_id>
                </action>
           </block>
        </reference>
    </default>
</layout>

В заголовочном файле phtml назовите его:

<?php echo $this->getChildHtml('topTwoLevelLinks') ?>

top.links исчез, но topTwoLevelLinks не появился.

Затем я посмотрел на Mage_Core_Model_Layout_Update и установил var_dump для getFileLayoutUpdatesXml [$layoutXml]. В источнике есть мой блок.

Не могу понять, что мне делать дальше. Как его отладить? Или где я делаю неправильно?


person Anthony    schedule 09.12.2011    source источник
comment
Чтобы упростить жизнь: <remove /> и <reference /> оба работают в контексте объекта макета, поэтому нет необходимости вкладывать вызовы — вы можете просто обратиться к блоку непосредственно под дескриптором обновления макета. Кроме того, атрибут версии для <layout /> не анализируется, так что его тоже можно оставить отключенным.   -  person benmarks    schedule 09.12.2011
comment
Кстати, этот синтаксис выглядит правильным. Доступен ли статический блок для области хранилища, в которой вы его вызываете?   -  person benmarks    schedule 09.12.2011
comment
Он доступен для всех представлений. Не могли бы вы подробнее описать свое видение обновления?   -  person Anthony    schedule 09.12.2011


Ответы (1)


все выглядит хорошо, но позвольте мне предложить вам проверить следующие вещи:

  1. Проверьте в панели администратора, включен ли ваш блок.
  2. Если у вас есть более одного представления магазина, проверьте, связан ли ваш блок с текущим представлением магазина, которое вы видите в интерфейсе.
  3. Проверьте, в какой папке находится файл header.phtml. Например, если вы изменили header.phtml из папки вашей базовой темы «app/design/frontend/base/default», Magento никогда не узнает об этом, если у вас также есть header.phtml в «app/design/frontend/custom_package/custom_theme». /" ... если это недостаточно ясно, прочитайте: http://www.magentocommerce.com/knowledge-base/entry/magentos-theme-hierarchy
person ceckoslab    schedule 10.12.2011
comment
Все точки в порядке. Я проверил это. Но я попытался создать другую пользовательскую тему и скопировал в эту папку всю свою тему по умолчанию. Теперь это работает. Я немного смущен. - person Anthony; 10.12.2011
comment
@Anthony Вы уверены, что не добавили ‹?php echo $this-›getChildHtml('topTwoLevelLinks') ?› в header.phtml вашей темы по умолчанию в app/design/frontend/base/default ? Внимательно прочтите статью, которую я предложил выше, и просмотрите разделы: Дизайн Fall-Back Hierarchy - person ceckoslab; 10.12.2011
comment
Да. Более того, если я изменю что-то там, то оно изменится на экране после перезагрузки. Но ‹?php echo $this-›getChildHtml('topTwoLevelLinks') ?› не появляется. - person Anthony; 10.12.2011