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