Come ignorare Mage_Checkout_Block_Links
-
16-10-2019 - |
Domanda
Qual è il modo corretto per eseguire l'override un metodo, per esempio, il metodo Mage_Checkout_Block_Links::addCartLink()
.
Il mio obiettivo è quello di aggiungere un po 'di HTML prima il metodo Mage_Checkout_Block_Links::addCartLink()
. Tuttavia, non so da dove cominciare o il file da copiare e modificare sotto il mio tema personalizzato.
Sto pensando a qualcosa di simile:
public function addLink($beforeText='<i class="icon-shopping-cart"></i>')
Soluzione
Ecco un piccolo tutorial su come sostituire un blocco di un modello o di un aiutante: http://magedev.com/2009/06/03/magento-overriding-model-block-or-helper/
Mantenere questo link Salva ... ne avrete bisogno in futuro.
Ora per il vostro problema ... seguendo il tutorial nel link qui sopra
Creare il proprio interno. Lascia chiamano 'Easylife_Checkout'. Sarà necessario seguenti file:
app/etc/modules/Easylife_Checkout.xml
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Checkout>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Checkout />
</depends>
</Easylife_Checkout>
</modules>
</config>
app/code/local/Easylife/Checkout/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Checkout>
<version>0.0.1</version>
</Easylife_Checkout>
</modules>
<global>
<blocks>
<checkout>
<rewrite>
<links>Easylife_Checkout_Block_Links</links>
</rewrite>
</checkout>
</blocks>
</global>
</config>
e app/code/local/Easylife/Checkout/Block/Links.php
<?php
class Easylife_Checkout_Block_Links extends Mage_Checkout_Block_Links{
public function addCartLink()
{
$parentBlock = $this->getParentBlock();
if ($parentBlock && Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
$count = $this->getSummaryQty() ? $this->getSummaryQty()
: $this->helper('checkout/cart')->getSummaryCount();
if ($count == 1) {
$text = $this->__('My Cart (%s item)', $count);
} elseif ($count > 0) {
$text = $this->__('My Cart (%s items)', $count);
} else {
$text = $this->__('My Cart');
}
$parentBlock->removeLinkByUrl($this->getUrl('checkout/cart'));
$parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, 'class="top-link-cart"', '<i class="icon-shopping-cart"></i>');//this will add the link. The last parameter is the 'before text'. You can add an other parameter after that that means $afterText
}
return $this;
}
}
Svuota cache e si dovrebbe essere fatto.