Comprender el Bloque Magento y el Tipo de Bloque


Solo quiero entender el significado de

 <block type="page/html" name="root" output="toHtml" template="example/view.phtml">

Obtuve muchas referencias de Google y entendí muchas cosas al respecto, pero todavía no puedo entender la formación de type="page/html" cómo formar un tipo para mi módulo personalizado.

Por favor explique

type="A/B"

Hágame saber de dónde vienen estos A y B?

 102
Author: Renon Stewart, 2011-07-09

5 answers

El A es el alias de un módulo. En este caso page es la abreviatura de Mage_Page_Block (se define en app/code/core/Mage/Page/etc/config.xml si quieres verlo).

El B es el nombre de la clase relativo al alias, las letras iniciales de cada palabra están en mayúscula. En este caso html se convierte en Html y se añade al alias resuelto, por lo que es Mage_Page_Block_Html. Esto probablemente se encuentra en el archivo app/code/core/Mage/Page/Block/Html.php porque los nombres de clase se traducen directamente a ubicaciones en Magento.

¿Estabas usando un alias modelo en su lugar de un alias de bloque entonces page sería Mage_Page_Model en su lugar. Lo mismo sucede con los modelos de recursos y los ayudantes también. Su propio módulo tendrá que definirlos en su configuración si va a tener bloques, modelos y ayudantes.

 125
Author: clockworkgeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-09 13:08:09

Para comprender más acerca de los tipos de bloques de magento, a continuación se presentan algunos tipos de bloques integrados que se utilizan ampliamente en el diseño.

  1. core/template: Este bloque representa una plantilla definida por su atributo template. La mayoría de los bloques definidos en el layout son de tipo o subtipo de core/template.
  2. page/html: Este es un subtipo de core/template y define el bloque raíz. Todos los demás bloques son bloques hijos de este bloque.
  3. page/html_head: Define la sección HTML head de la página que contiene elementos para incluir JavaScript, CSS, etc.
  4. page/html_header: Define la parte del encabezado de la página que contiene el logotipo del sitio, los enlaces superiores, etc.
  5. page/template_links: Este bloque se utiliza para crear una lista de enlaces. Los enlaces visibles en el pie de página y el área de encabezado utilizan este tipo de bloque.
  6. core/text_list: Algunos bloques como content, left, right etc. son de tipo core/text_list. Cuando estos bloques se renderizan, todos sus bloques secundarios se renderizan automáticamente sin necesidad de llamar el métodogetChildHtml().
  7. page/html_wrapper: Este bloque se usa para crear un bloque wrapper que renderiza sus bloques secundarios dentro de una etiqueta HTML establecida por la acción setHtmlTagName. La etiqueta predeterminada es <div> si no se establece ningún elemento.
  8. page/html_breadcrumbs: Este bloque define las migas de pan en la página.
  9. page/html_footer: Define el área de pie de página de la página que contiene enlaces de pie de página, mensajes de derechos de autor, etc.
  10. core/messages: Este bloque genera mensajes de error/éxito/aviso.
  11. page/switch: Este bloque se puede utilizar para selector de idioma o tienda.

Esta es una lista de tipos de bloques usados comúnmente. Hay muchos otros tipos de bloques que se utilizan en implementaciones de temas avanzados.

 154
Author: Kamesh Jungi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-02 05:39:56
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">

Page es un nombre de interfaz definido en el archivo etc/config.xml html es un nombre de clase de bloque

Más detalles:

En esta línea type(type="page/html") defina el nombre de la clase de bloque relacionado con su template(template="example/view.phtml">) y el nombre es el único para cada bloque.

Primero consulte la estructura de carpetas

App>local>namespace>modulename>etc>config.xml

Hemos establecido FrontendName = 'mymodule'

App>local>namespace>modulename>Block>hello.php

En hola.php has creado una función

   class namespace_modulename_Block_Data extends Mage_Core_Block_Template
   {
    public function mydata()
        {
            $data = "Block is called";
            return $data;
         }     
}   

Y ahora ven a tu página xml de diseño:

<block type="mymodule/data" name="xyz" template="example/view.phtml"> aquí mydata es frontend name

Y ahora ven a tu plantilla

Plantilla / ejemplo / vista.phtml page

Aquí puedes llamar directamente a la función mydata ()

Me gusta

<div>
<?php echo $this->mydata(); ?>
</div>

Ahora puede obtener su salida en el navegador "Se llama bloque"

 8
Author: Devendra Kumar Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-01 12:12:02

No conozco el tipo "B", pero "A" se refiere a la etiqueta de nombre del módulo en la configuración.XML ejemplo en config.xml:

<A><!-- script --></A>

No, no te equivocas. Pero el "<!-- script -->" puede ser confuso. Vamos a aclarar: como se indica en las respuestas anteriores, este es un alias, que consta de dos partes, la primera parte ("A") en sí es el alias que define a las clases de su módulo en su módulo config.xml, la segunda es una ruta relativa al valor del nodo. Estos juntos ("A" + " B " en mayúscula) serán traducido a un nombre de clase, usando la primera parte (el valor del nodo "A") exactamente como lo define (busque mayúsculas/minúsculas si no desea horas de sufrimiento) y la segunda parte se escribe en mayúscula después de cada subrayado. Por lo tanto, comience con el ejemplo A / B con un bloque y esta configuración:

<config>
  ...
  <global>
    <blocks>
      <A>Vendor_Module_Block</A>
    </blocks>
  </global>
  ...
</config>

En tiempo de ejecución A/B se resolvería mediante la configuración de Magento a Vendor_Module_Block_B que luego se incluiría mediante la carga automática desde la siguiente ruta: public/app/local/Vendor/Module/Block/B.php. Para obtener una mejor comprensión le aconsejo que eche un vistazo a las Mage_Core_Model_Config::getGroupedClassName(), Mage_Core_Model_Config::getModelInstance() y Varien_Autoload::autoload().

 4
Author: ZeNC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-18 09:05:07

No conozco el tipo "B", pero "A" se refiere a la etiqueta de nombre del módulo en la configuración.xml

Un ejemplo en la configuración.archivo xml:

<A><!-- script --></A>

Nb: espero no estar equivocado..

 3
Author: Rully,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-07 12:03:18