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?
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.
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.
-
core/template
: Este bloque representa una plantilla definida por su atributotemplate
. La mayoría de los bloques definidos en el layout son de tipo o subtipo decore/template
. -
page/html
: Este es un subtipo decore/template
y define el bloque raíz. Todos los demás bloques son bloques hijos de este bloque. -
page/html_head
: Define la sección HTML head de la página que contiene elementos para incluir JavaScript, CSS, etc. -
page/html_header
: Define la parte del encabezado de la página que contiene el logotipo del sitio, los enlaces superiores, etc. -
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. -
core/text_list
: Algunos bloques comocontent
,left
,right
etc. son de tipocore/text_list
. Cuando estos bloques se renderizan, todos sus bloques secundarios se renderizan automáticamente sin necesidad de llamar el métodogetChildHtml()
. -
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ónsetHtmlTagName
. La etiqueta predeterminada es<div>
si no se establece ningún elemento. -
page/html_breadcrumbs
: Este bloque define las migas de pan en la página. -
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. -
core/messages
: Este bloque genera mensajes de error/éxito/aviso. -
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.
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"
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()
.
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..
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