удалите блок и после этого добавьте блок


Итак, я наткнулся на вопрос, который я не совсем понимаю

    <default>
    <reference name="header">
    <remove name="top.menu"/>
    <block type="core/text_list" name="top.menu" as="topMenu">
    <lable>Navigation Bar</label>
    <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
</block>
</reference>
</default>

и в моем понимании, у нас есть заголовок блока где-то еще и мы ссылались на него,потом убираем в блок сверху.меню в этом блоке затем мы добавляем структурный блок сверху.меню, а затем добавить другой блок в этом блоке, который является шаблоном в верхнем меню так что я действительно не знаю, что происходит не сверху.меню было удалено? или это не так, и он был добавлен снова? мочь кто-нибудь объяснит мне это так, чтобы я мог лучше понимать блоки?

Ответ был таков: блок никогда не будет отображаться! и, похоже, я был прав, и это неправильный ответ

Есть ли способ удалить блок, а затем добавить тот же блок, чтобы в итоге ничего не изменить? например, у меня есть блок А, я удаляю его один раз, но снова добавляю блок А, и все равно я вижу его на странице

Спасибо

Author: Nickool, 2014-09-29

1 answers

Короче говоря, все ваши предположения абсолютно верны. Чтобы сделать это более понятным, я постараюсь объяснить это подробнее

  1. Поэтому здесь используется дескриптор макета default. Это означает, что обновление макета, удерживаемое этим дескриптором, будет применяться почти ко всем страницам.

  2. Тогда вы ссылаетесь на блок header. Этот блок определен в page.xml. Ссылка на этот блок очень важна. Вы должны "ссылаться" на блок только после того, как он определен где-то перед ним получите ссылку в своем обновлении. Таким образом, здесь вы можете ссылаться на этот блок только в том случае, если ваш файл обновления макета будет рассмотрен magento после обработки файла page.xml. Я предполагаю, что вы делаете это правильно :-)

  3. Теперь ваш скрипт обновления удаляет блок topMenu. Эта простая линия выполняет много задач, и это то, чего вы, вероятно, не получили. Предположим, что перед обработкой вашего обновления макета 10 верхних меню добавляются с помощью другого XML-файла обновления макета (это может быть программно также). Поэтому, когда ваше обновление макета будет обработано magento, все эти меню будут удалены.

Короче говоря, удаление блока удаляет этот блок вместе со всеми его дочерними блоками и всеми свойствами. Таким образом, эта строка просто удаляет всю верхнюю часть меню вместе со всеми изменениями, которые были применены к этому блоку во всех других обработанных XML-файлах макета (если таковые имеются)

  1. Теперь он снова добавляет новый блок topmenu, а затем устанавливает шаблон для этого верхнего меню. Это означает вы снова создали "свежий" блок верхнего меню, который по умолчанию не содержит дочерних блоков или меню.

Короче говоря, ваш сценарий обновления макета пытается удалить все элементы topmenu, которые ранее были созданы с помощью других XML-файлов макета, которые были обработаны Magento до обработки этого файла обновления макета. Затем он определяет новые пункты верхнего меню, которые могут быть использованы для добавления верхних меню позже.

РЕДАКТИРОВАТЬ

Я думаю, вам все еще не ясна моя точка зрения. Хорошо, я так и сделаю объясните это ситуацией в реальном времени.

Предположим, вам нужно доставить 4 пиццы. Эти 4 пиццы состоят из разных ингредиентов (некоторые ингредиенты одинаковые, а некоторые разные). После того, как вы их приготовили, вы обнаружили, что одна из пицц не годится для доставки. ИТАК, вы удалили эту пиццу и создали вместо нее другую пиццу. Затем вы доставили эти 4 пиццы своему клиенту.

Здесь пицца означает блок topMenu. Итак, у вас есть 4 блока topmenu. Ингредиенты означают его дочерние блоки. Как и в случае с пиццей, эти блоки будут рассматриваться Magento как отдельные объекты. Затем вы удалили ненужный блок, а затем заменили его другим. Это точно так же, как в случае с пиццей. Удаленные и добавленные пиццы отличаются друг от друга, и единственное существующее сходство заключается в том, что они одного типа. Все еще в конце есть 4 пиццы в наличии. Итак, у нас есть топменю в наличии. Ты понял сейчас?

 2
Author: Rajeev K Tomy, 2014-09-29 17:08:39