2012-09-19 16 views
7

estoy extiende app/código/core/Mago/Página/Bloque/html/Topmenu.php con la siguiente xml:Magento - Extensión de bloque Topmenu.php se detiene la carga de plantilla topmenu.phtml

<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> 

y mi definición de clase:

class Custom_Menu_Block_Page_Html_Topmenu extends Mage_Page_Block_Html_Topmenu 
{ 

} 

Incluso con mi clase no anulando cualquier método, el siguiente archivo de plantilla simplemente no se procesan:

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

No anulo el archivo de plantilla.

Tan pronto como desactivo mi módulo, comienza a funcionar de nuevo.

¿Debo declarar algo más en mi archivo xml?

+2

¿Usted ha intentado habilitar el modo desarrollador y display_errors en el archivo index.php? ¿Su archivo está ubicado en el lugar correcto también? */Custom/Menu/Block/Page/Html/Topmenu.php – Andrew

Respuesta

1

Una cosa viene a la mente. Puede tener su archivo de clase en el lugar equivocado. Su código de reescritura parece correcto, por lo que cuando Magento instancia un bloque page/html_topmenu, lo resuelve correctamente con su nombre de clase Custom_Menu_Block_Page_Html_Topmenu. Sin embargo, es posible que Magento no pueda encontrar la clase Custom_Menu_Block_Page_Html_Topmenu. Intente ejecutar el código

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

desde un controlador vacío y/o archivo de arranque para asegurarse de que Magento pueda encontrar su clase. Tampoco estaría de más ejecutar

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

Para asegurarse de que su reescritura está haciendo lo que debe hacer.

+1

Parece que está sucediendo algo muy extraño. Todo se carga bien en mi servidor de desarrollo pero no en mi máquina local. Deben ser diferencias ambientales con las instalaciones de LAMP y nada que ver con mi código. – MacroMan

+0

@MacroMan - He tenido problemas entre entornos anteriormente cuando, por error, el caso de un directorio o archivo era diferente. Ejemplo: Custom/Menu/Block/Page/Html/TopMenu.php! = Personalizado/Menú/Bloque/Página/Html/Topmenu.php –

+0

Para más detalles: nombro mi clase Custom_Menu_Block_Page_Html_TopMenu pero el archivo está en Custom/Menu/Block /Page/Html/Topmenu.php Magento busca "TopMenu.php" pero el archivo es realmente "Topmenu.php". Algunos entornos manejan la diferencia en el caso, pero otros no. –

4

hacer este cambio en su archivo config.xml

<html_topmenu>Custom_Menu_Block_Html_Topmenu</html_topmenu> 

y cambiar su nombre de la clase a

class Custom_Menu_Block_Html_Topmenu extends Mage_Page_Block_Html_Topmenu 
{ 

} 
Cuestiones relacionadas