2011-06-16 4 views
0

J'essaie de remplacer Mage/Catalog/Block/Product/Abstract.php.Majorer Magento 1.5 Bloc de catalogue

Supposons que mon module s'appelle Abc.

Voici mon app/etc/modules/Abc_Catalog.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <Abc_Catalog> 
      <active>true</active> 
      <codePool>local</codePool> 
     </Abc_Catalog> 
    </modules> 
</config> 

Voici mon code/local/Abc/Catalogue/etc/config.xml

<?xml version="1.0"?> 
<config> 
    <global> 
     <blocks> 
      <catalog> 
       <rewrite><product_abstract>Abc_Catalog_Block_Product_Abstract</product_abstract></rewrite> 
      </catalog> 
     </blocks> 
    </global> 
</config> 

Voici mon code /local/Abc/Catalog/Product/Abstract.php

include_once "Mage/Catalog/Block/Product/Abstract.php"; 

class Abc_Catalog_Block_Product_Abstract extends Mage_Catalog_Block_Product_Abstract 
{ 
    public function getAddToCartUrl($product, $additional = array()) 
    { 
     echo 'here'; exit; 

     /*if ($product->getTypeInstance(true)->hasRequiredOptions($product)) { 
      if (!isset($additional['_escape'])) { 
       $additional['_escape'] = true; 
      } 
      if (!isset($additional['_query'])) { 
       $additional['_query'] = array(); 
      } 
      $additional['_query']['options'] = 'cart'; 

      return $this->getProductUrl($product, $additional); 
     }*/ 
     return $this->helper('checkout/cart')->getAddUrl($product, $additional); 
    } 
} 

Mais son ne fonctionne pas. Qu'est-ce que je fais mal?

Répondre

1

Dans Magento, il n'est pas possible de réécrire un bloc abstrait de manière traditionnelle. Tu ne peux pas réécrire la classe qui étend l'abstraite?

+0

Je ne sais pas. Merci d'avoir économisé mon temps! – user769154

+0

Votre bienvenue ... il est possible de créer un dossier Mage sous votre dossier local ... créer exactement le même répertoire et y placer une copie du fichier de classe Abstract, puis le modifier. Ceci est toutefois mal conseillé par Magento car cela compromettrait toute future mise à jour de votre installation. –

0

Vous pouvez créer une même structure de dossiers/fichiers pour cette classe abstraite que vous souhaitez remplacer. , c'est-à-dire /local/Mage/Customer/Model/Address/Abstract.php et écrivez cette classe entière exactement égale à l'original (avec toutes les méthodes), et changez ce dont vous avez besoin.

Aucun fichier .xml supplémentaire n'est requis, seul le fichier du dossier spécifié. Mais rappelez-vous: lors de la mise à jour de Magento peut-être que vous avez besoin de revoir ce fichier.