Pregunta

EDITAR :resuelto por Jonathan Hussey.Ver al final del post (o por debajo) de otra pregunta, si me quieren ayudar sobre overridding de la plantilla y el diseño :)

filial pregunta :¿Se puede anular page.xml, topmenu.phtml y procesador.phtml dentro de mi módulo o tengo que reemplazar manualmente en el tema de las carpetas ?Si es así, ¿te importaría que me lleva a un tutorial o explicar mí rápidamente ?No me parece para encontrar fácilmente un tutorial que coinciden con mi caso ...

Me gustaría reemplazar el topmenu.phtml, el renderizador.phtml, y la plantilla de page.xml, dentro de mi módulo, si es posible.

Gracias por esta ayuda :)


Yo una nueva Magento desarrollador, así que estoy tratando de hacer las cosas simples, y mi comprensión de Magento es limitado...

Lo que quiero hacer es mostrar el menú de navegación (arriba) de otra manera (panel-ish desplegable), mediante la creación de mi propio módulo.Miré donde el menú actual se definió/llama y encuentra el archivo design/frontend/{mytheme}/default/layout/page.xml que se parece a :

<default translate="label" module="page">
    <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
        <block type="page/html_header" name="header" as="header">
            <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
                <label>Navigation Bar</label>
                <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml">
                    <block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
                </block>
            </block>
        </block>
    </block>
</default>

(con muchos otros la cosa, pero es lo esencial)

<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml">
    <block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
</block>

Estas líneas nos indica la necesidad de la clase Mage_Page_Block_Html_Topmenu, que se muestra en el archivo de plantilla design/frontend/{mytheme}/default/template/page/html/topmenu.phtml, que contiene :

<nav id="nav">
    <div class="nav-megadropdown col6">
        <?php echo $this->getHtml('level-top'); // $this is the a Topmenu object ?>
    </div>
    <div style="clear:both"></div>
</nav>

El método getHtml llega el niño bloque catalog.topnav.renderer y obtiene su clase (Mage_Page_Block_Html_Topmenu_Renderer y llama al método render con la plantilla design/frontend/{mytheme}/default/template/page/html/topmenu/renderer.phtml que contiene un complejo pero el trabajo de menú (Lo he probado por modifiying el Mago de las clases y el tema de los archivos de phtml, y funcionó).

Pero ahora, quiero hacerlo correctamente, por overridding las clases dentro de mi módulo (que se activa y se ve como Fqu_Supergroup).Así que empecé con el config.xml :

<config>
    <modules>
        <Fqu_Supergroup>
            <version>0.1.0</version>
        </Fqu_Supergroup>
    </modules>
    <global>
        <blocks>
            <Page>
                <rewrite>
                    <html_topmenu>Fqu_Supergroup_Block_Html_Topmenu</html_topmenu>
                </rewrite>
            </Page>
        </blocks>
    </global>
</config>

Y mi clase (Fqu_Supergroup_Block_Html_Topmenu en mi módulo (local/Fqu/Supergroup/Block/Html/Topmenu.php) contiene sólo el anular métodos (_getRenderedMenuItemAttributes y _getMenuItemClasses)

Así que aquí, cuando trato de mi código, la página muestra una fractura de menú, porque no uso mi clase (I var_dump ed la clase (get_class($this)) fue utilizado para representar el menú y regresó Mage_Page_Block_Html_Topmenu);Y cuando me var_dump los archivos incluidos (get_included_files()) No veo ninguna referencia a mi módulo (se activa en el panel de Administración a pesar de que)...

Lo siento por el largo post, pero gracias por su atención y ayuda !

filial pregunta :¿Se puede anular page.xml, topmenu.phtml y procesador.phtml dentro de mi módulo o tengo que reemplazar manualmente en el tema de las carpetas ?

¿Fue útil?

Solución

Aunque yo no los he analizado tu post en detalle, la primera cosa que me irregular cuando se mira a través de lo anterior es que se está declarando su reescribir de forma incorrecta, Page en su lugar deben ser page.Esta cadena no coincide con el nombre del módulo es decir,el Page en Mage_Page, en lugar coincide con la cadena que se utiliza cuando se declara el recurso en el módulo de reescritura, por lo que en este caso en el config.xml para el Mage_Page módulo principal:

...
<blocks>
    <page> <!-- this is the string to match -->
        <class>Mage_Page_Block</class>
    </page>
</blocks>
...

Haciendo referencia a page el partido contra el módulo de Mage_Page se determina mediante la inspección de la global config (que es básicamente un enorme archivo xml que contiene todos los config.xml archivos para todos los módulos).El resto de la cadena se determina de acuerdo al nombre de la clase para html_topmenu se asigna a la clase Mage_Page_Block_Html_Topmenu siendo la clase de la reescritura se aplicará.

Para su pregunta, sí puede sobreescribir cualquier archivo de diseño o plantilla mediante la declaración de un archivo de diseño para el módulo.Dentro de este se puede declarar cualquier cambios en el diseño que desee, incluyendo el cambio de plantillas de bloques y estos cambios tendrán prioridad sobre el núcleo de archivos de diseño que el módulo se cargue siempre después de todos los módulos centrales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top