Il semble qu'il ya pas de moyen public pour éliminer de manière fiable le lien de liste bloc de la mise en page. (Vous pouvez passer à la fin pour une solution de contournement)
Le addLinkBlock
suppose la présence du bloc qui a été adoptée, donc l'utilisation supprimer de la façon dont vous décrivez les résultats dans une erreur fatale d'être jeté
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
Voici le code de base qui provoque cette erreur
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;
}
Cette méthode suppose que sa va être en mesure de sortir un bloc quel que soit le nom est transmis, nous ne pouvons pas simplement supprimer le bloc wishlist_link que possible dans les versions précédentes.
Le seul mécanisme pour la suppression d'un lien semble être la méthode suivante sur la même classe de bloc
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;
}
Cependant, cela se fait à l'aide comparaison de chaînes, et il n'y a aucun moyen fiable (que je sache) à générer un objet URL à partir d'un fichier de modèle, le transformer en chaîne et le transmettre dans la méthode (ce qui serait nécessaire, car de nombreux paramètres de configuration peuvent modifier l'URL finale de la chaîne). Cela rend cette méthode inutile pour nos besoins.
Donc, ce que nous peut modifier le bloc wishlist_link existant pour utiliser un modèle vierge ou inexistant. De cette façon, le bloc restitue encore, mais il se traduit par une chaîne vide. Le résultat final est que nous évitons l'erreur fatale mentionnée ci-dessus, tout en réussissant à supprimer le lien de nos pages sélectionnées.
Ce qui suit supprimerait le lien de toutes les pages à l'aide du bloc default handle.
<!-- file: local.xml -->
<layout>
<default>
<reference name="wishlist_link">
<action method="setTemplate"><template>blank-link.phtml</template></action>
</reference>
</default>
</layout>
Bravo pour ça. Peu hacky, mais ce n'est pas nouveau pour Magento alors devine que je vais devoir aller avec ça pour le moment. Une idée de pourquoi le changement? –
En fait, juste essayé cela et pas de joie, voyant encore le lien. D'autres idées? –
Je dirais que ce n'est pas tellement un changement qu'un bug involontaire créé par une nouvelle fonctionnalité. Cela fonctionne pour moi sur une installation par défaut, donc je vérifie si votre fichier local.xml est chargé, et que tout est entouré par le bon handle. Une fois que vous avez confirmé cela, ajoutez du code de débogage à la méthode setTemplate de la classe de modèle de base pour vous assurer que la méthode d'action est réellement appelée. Peut-être avez-vous une autre mise à jour de disposition qui remplace cette nouvelle? –