Похоже, что нет общедоступного способа надежного удаления ссылки списка желаний block из макета. (вы можете пропустить до конца для обходного пути)
addLinkBlock
предполагает наличие пропущенного блока, поэтому использование удаления в том виде, как вы описываете, приводит к фатальной ошибке
Fatal error: Call to a member function getPosition() on a non-object in /Users/alanstorm/Sites/magento1point4.2.dev/app/code/core/Mage/Page/Block/Template/Links.php on line 112
Вот основной код, который вызывает эту ошибку
app/code/core/Mage/Page/Block/Template/Links.php
public function addLinkBlock($blockName)
{
$block = $this->getLayout()->getBlock($blockName);
$this->_links[$this->_getNewPosition((int)$block->getPosition())] = $block;
return $this;
}
Этот метод предполагает, что он сможет извлекать блок по любому переданному имени, поэтому мы не можем просто удалить блок wishlist_link, как это было в предыдущих версиях.
Единственным механизмом удаления ссылки является следующий метод в том же классе блоков
app/code/core/Mage/Page/Block/Template/Links.php
public function removeLinkByUrl($url)
{
foreach ($this->_links as $k => $v) {
if ($v->getUrl() == $url) {
unset($this->_links[$k]);
}
}
return $this;
}
Однако это делается с помощью сравнения строк, и нет надежного способа (который я знаю) генерировать объект URL из файла макета, приводить его как строку и передавать в метод (это потребуется). , поскольку существует множество параметров конфигурации, которые могут изменить конечный URL-адрес строки). Это делает этот метод не полезным для наших нужд.
Итак, что мы можем изменить в существующем блоке wishlist_link, чтобы использовать пустой или несуществующий шаблон. Таким образом, блок по-прежнему отображается, но отображается как пустая строка. В результате мы избегаем упомянутой выше фатальной ошибки, но все же удаляем ссылку на выбранные страницы.
Следующее действие удалит ссылку из всех страниц, использующих default handle. </p>
<pre><!-- file: local.xml -->
<layout>
<default>
<reference name="wishlist_link">
<action method="setTemplate"><template>blank-link.phtml</template></action>
</reference>
</default>
</layout>