Ответ 1
Удалить узлы будут обработаны после того, как все макеты будут объединены, и это хороший способ удалить блок, независимо от того, какой дескриптор макета загрузил блок; вы просто хотите полностью избавиться от него для некоторых ручек! Он также удаляет рекурсивно, поэтому все, что вам нужно указать, - это дескриптор макета.
С другой стороны, вы можете только удалить блок из ссылки в определенном макете дескриптора, и в этом случае вы должны использовать unsetChild. Он часто используется для удаления блока из ссылки, но затем снова вставляет тот же блок с другой позицией. Это было бы невозможно с удалением.
В вашем конкретном примере разработчики magento использовали его, чтобы придать magento некоторую гибкость. Скажем, я добавил подстраницу для страницы индекса учетной записи, и были загружены следующие макеты:
- По умолчанию
- ...
- customer_account_index
- customer_account_index_subpage
И теперь предположим, что на этой подстранице мне действительно нужен блок catalog_compare_sidebar. Если бы они использовали "remove", я бы не смог добавить этот блок (с этим конкретным именем), потому что "remove" будет обработан - после этого я сам добавил блок.
Это позволяет легко вносить изменения из одного файла; local.xml.