Добавление мини -телеги в заголовок не отображается
-
16-10-2019 - |
Вопрос
В настоящее время я пытаюсь добавить корзину боковой панели в заголовок веб -сайта, над которым я работаю, однако, похоже, она не работает. Вот мои файлы:
page.xml:
<block type="page/html_header" name="header" as="header">
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
</block>
<block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
<label>Page Header</label>
<action method="setElementClass"><value>top-container</value></action>
</block>
<block type="checkout/cart_sidebar" name="cart_sidebar" as="topcart" template="checkout/cart/sidebar.phtml"/>
</block>
Header.phtml:
<?php echo $this->getChildHtml('topcart'); ?>
В настоящее время у меня есть кэш, выключенный в Magento, однако я пробовал промыть кэш в системном управлении кэшем. Любые идеи?
Решение
Имя макета для определения, которое вы определили (cart_sidebar
) то же самое, что и имя макета по умолчанию для этого блока. Имя макета должно быть уникальным по всему макету для страницы, но псевдоним (topcart
) должен быть только уникальным в родительском блоке.
Если вы не прокомментировали другие блоки с этим именем макета в их файлах макета или лучше удалили их из макета, используя unsetChild
Метод блокировки в вашем собственном файле макета Local.xml (или модуля), затем вы не можете добавить блок с этим именем макета.
<action method="unsetChild"><name>cart_sidebar</name></action>
Обратите внимание, что использование макета remove
Тэг не позволяет вам добавлять блок с тем же именем макета, блок все еще существует в макете, он просто не вывод.
<remove name="cart_sidebar" />
Обратите внимание и это unsetChild
должен быть вызван из родительского блока, но remove
Тег может быть применен непосредственно под ручкой макета.
Наконец, Page.xml должен определить только основную структуру макета страницы, вы не должны добавлять новые блоки непосредственно в этот файл макета, вместо этого вам следует ссылаться на блоки, созданные здесь в других файлах макета и вместо этого добавлять свои собственные блоки.
<reference name="header">
.........
</reference>
Другие советы
Я отвечу на ваш комментарий в другом ответе, так как комментарий не дает достаточно места.
Ручка макета определяет, на какие страницы будут добавлены блок, поэтому, если вы посмотрите дальше вверх page.xml
выше раздела, который вы разместили, вы видите <default>
ярлык. Это открытие тега ручки макета и использование дефолт означает Примените изменения в макете на каждую страницу.
Если вы посмотрите на другие файлы макета, вы увидите, например, другие ручки в catalog.xml
ты ищешь <catalog_product_view>
который является рукоятиком макета для страниц просмотра продукта, и любые элементы макета, определенные внутри этой ручки, будут использоваться только при просмотре продукта. Руководство макета создается из подчеркивания разделенной конкатенации имени модуля, имени контроллера и имени действия, поэтому с приведенным выше модуль является каталогом, контроллер - это продукт, а действие в этом контроллере - это просмотр.
Это дает вам возможность внести изменения макета только на определенных страницах из ваших собственных файлов макета. Стоит также отметить, что если вы не уверены, как определить ручку макета для конкретной страницы, она вставлен как первый класс по умолчанию в <body>
HTML -тег на каждой странице.
Обратите внимание, что страницы Frontend и Admin имеют отдельные файлы макета, поэтому <default>
Тег применяется только к фронтальному или администральному, или в зависимости от того, в какой файл макета он был помещен.
Я очень рекомендую вам создать свой собственный local.xml
Файл макета (или если вы создаете расширение, определите свой собственный файл макета в его config.xml
) С использованием local.xml
Это гораздо более чистый способ управления макетами - вы оставляете файлы макетов по умолчанию нетронутыми и управляете всеми изменениями макета, используя ручки через один файл. Если Local.xml не существует в вашем каталоге макетов тем, просто создайте его, и он будет автоматически подхвачен. Вот local.xml
Файл макета с каким -то примером синтаксиса, чтобы вы начали:
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="content">
<block type="page/html" name="new.block" after="-" template="module/block/template.phtml" />
</reference>
</default>
<catalog_product_view>
<reference name="right">
<action method="unsetChild">
<name>child.block.name</name>
</action>
</reference>
<remove name="some.block.name" />
<block type="page/html" name="other.new.block" template="module/block/other_template.phtml" before="block_name_to_appear_before" parent="content" />
</catalog_product_view>
</layout>