2012-09-19 13 views
7

sto estendendo app/code/core/Mage/Pagina/blocchi/Html/Topmenu.php con il seguente codice XML:Magento - Estensione del blocco Topmenu.php ferma il modello topmenu.phtml carico

<config> 
    <modules> 
     <Custom_Menu> 
      <version>1.0</version> 
     </Custom_Menu> 
    </modules> 
    <global> 
     <blocks> 
      <page> 
       <rewrite> 
        <html_topmenu>Custom_Menu_Block_Page_Html_Topmenu</html_topmenu> 
       </rewrite> 
      </page> 
     </blocks> 
    </global> 
</config> 

e la mia definizione di classe:

class Custom_Menu_Block_Page_Html_Topmenu extends Mage_Page_Block_Html_Topmenu 
{ 

} 

Anche con la mia classe non override tutti i metodi, il seguente file di modello semplicemente non ottenere elaborati:

app/design/frontend/base/default/template/page/html/topmenu.phtml 

Non sto eseguendo l'override del file modello.

Non appena disattivo il modulo, riprende a funzionare.

Devo dichiarare qualcos'altro nel mio file xml?

+2

Hai provato l'attivazione della modalità sviluppatore e display_errors nel file index.php? Il tuo file si trova anche nella posizione corretta? */Personalizzato/Menu/Blocca/Pagina/Html/Topmenu.php – Andrew

risposta

1

Una cosa mi viene in mente. Potresti avere il tuo file di classe nel posto sbagliato. Il tuo codice di riscrittura sembra corretto, quindi quando Magento istanzia un blocco page/html_topmenu lo risolve correttamente al tuo nome di classe Custom_Menu_Block_Page_Html_Topmenu. Tuttavia, Magento potrebbe non essere in grado di trovare la classe Custom_Menu_Block_Page_Html_Topmenu. Prova a eseguire il codice

$block = new Custom_Menu_Block_Page_Html_Topmenu; 
var_dump($block); 

da un controller vuoto e/o file di bootstrap per garantire che Magento possa trovare la tua classe. Inoltre non farebbe male correre

$block = Mage::getSingleton('core/layout')->createBlock('page/html_topmenu'); 
var_dump($block); 

Per garantire che la riscrittura stia facendo ciò che deve fare.

+1

Sembra che ci sia qualcosa di molto strano. Tutto va benissimo sul mio server di sviluppo ma non sul mio computer locale. Devono essere le differenze di ambiente con le installazioni LAMP e nulla a che fare con il mio codice. – MacroMan

+0

@MacroMan - Ho avuto problemi tra gli ambienti prima quando erroneamente il caso di una directory o di un file era diverso. Esempio: Personalizzato/Menu/Blocca/Pagina/Html/TopMenu.php! = Personalizzato/Menu/Blocca/Pagina/Html/Topmenu.php –

+0

Per approfondire: nomino la mia classe Custom_Menu_Block_Page_Html_TopMenu ma il file è su Custom/Menu/Block /Page/Html/Topmenu.php Magento cerca "TopMenu.php" ma il file è in realtà "Topmenu.php". Alcuni ambienti gestiscono la differenza nel caso, ma alcuni non lo fanno. –

4

fare questo cambiamento nel file config.xml

<html_topmenu>Custom_Menu_Block_Html_Topmenu</html_topmenu> 

e cambiare il nome della classe per

class Custom_Menu_Block_Html_Topmenu extends Mage_Page_Block_Html_Topmenu 
{ 

} 
Problemi correlati