Es scheint, gibt es keine öffentlich zugängliche Art und Weise entfernen, um den Wunschliste Link Block aus dem Layout zuverlässig zu entfernen. (Sie können für eine Abhilfe zum Ende springen)
Die addLinkBlock
setzt das Vorhandensein des Blocks, die übergeben worden ist, so entfernen Sie mit der Art und Weise Sie führen zu einem fatalen Fehler beschreiben
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
Hier geworfen ist der Kern-Code, dass Fehler
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;
}
verursacht Dieses Verfahren nimmt seinen einen Block in der Lage sein, ziehen Sie von welchem Namen übergeben wird, so können wir nicht nur den wishlist_link Block entfernen, wie wir in früheren Versionen konnte.
Der einzige Mechanismus für einen Link zu entfernen erscheint
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;
}
jedoch das folgende Verfahren auf der gleichen Block Klasse zu sein, wird dies mit String-Vergleich durchgeführt, und es gibt keine zuverlässige Möglichkeit (die ich kenne) zu Generieren Sie ein URL-Objekt aus einer Layoutdatei, umwandeln Sie es als Zeichenfolge, und übergeben Sie es an die Methode (dies wäre erforderlich, da zahlreiche Konfigurationseinstellungen die endgültige URL der Zeichenfolge ändern können). Das macht diese Methode für unsere Bedürfnisse nicht hilfreich. So
, was wir können modifizieren den vorhandenen wishlist_link Block eine leere oder nicht vorhandene Vorlage zu verwenden. Auf diese Weise wird der Block weiterhin gerendert, aber als leere Zeichenfolge dargestellt. Das Endergebnis ist, dass wir den oben erwähnten fatalen Fehler vermeiden, aber dennoch den Link von unseren ausgewählten Seiten entfernen.
Die folgend würde die Verbindung von alle den Seiten mit dem default handle.
<!-- file: local.xml -->
<layout>
<default>
<reference name="wishlist_link">
<action method="setTemplate"><template>blank-link.phtml</template></action>
</reference>
</default>
</layout>
Prost für das. Bit hacky, aber das ist nichts Neues für Magento, also schätze, ich muss jetzt damit anfangen. Irgendeine Idee warum die Änderung? –
Wirklich, gerade versucht dies und keine Freude, immer noch den Link zu sehen. Noch mehr Ideen? –
Ich würde sagen, es ist nicht so sehr eine Veränderung als ein unbeabsichtigter Fehler durch neue Funktionalität. Das funktioniert für mich bei einer Standardinstallation, also würde ich prüfen, ob Ihre local.xml geladen wird und alles vom richtigen Handle umgeben ist. Nachdem Sie dies bestätigt haben, fügen Sie der setTemplate-Methode der Basisvorlagenklasse Debugcode hinzu, um sicherzustellen, dass die Aktionsmethode wirklich aufgerufen wird. Vielleicht haben Sie ein anderes Layoutupdate, das dieses neue überschreibt? –