En este tutorial, vamos a explorar los bloques de Magento, uno de los componentes esenciales de la arquitectura de Magento. Veremos la diferencia entre bloques estructurales y de contenido. También demostraré cómo puedes crear bloques personalizados mediante programación.
En la arquitectura de Magento, un "Bloque" es uno de los elementos de primera clase en la estructura de los diseños de Magento. Cada página en Magento está decorada con el archivo "Diseños" y el contenido se llena con los "Bloques" de los diferentes módulos. Los bloques Magento son una forma realmente poderosa y flexible de insertar su contenido en los diseños ya existentes. Por otro lado, también puede usar archivos de diseño XML para eliminar o reposicionar fácilmente cualquier bloque existente.
No es sorprendente que, considerando la flexibilidad de la arquitectura Magento, también pueda desarrollar sus propios bloques utilizando un módulo personalizado en Magento. Digamos, por ejemplo, que le gustaría sacar un par de productos especiales para la próxima temporada festiva, y desea mostrarlos en la primera página. En ese caso, podría realizar la tarea fácilmente implementando un bloque personalizado. Y sí, es el objetivo principal de este tutorial también!
Antes de continuar con nuestra misión de bloque personalizado, me gustaría explicar la diferencia entre bloques estructurales y de contenido. Echemos un vistazo rápido a cada tipo de bloque..
Podríamos decir que los "Bloques estructurales" son los contenedores que contienen los "Bloques de contenido". Los propios bloques estructurales no tienen ningún contenido real para mostrar, pero a su vez muestran los bloques de contenido al final. Como su nombre indica, se utilizan para estructurar el contenido de toda la página..
Por ejemplo, "Encabezado", "Pie de página", "Izquierda" y "Derecha" son bloques estructurales en Magento. Los "bloques de contenido" se asignan a las diferentes posiciones estructurales del diseño de la página de Magento, que a su vez muestra el contenido real de los bloques de contenido.
Los "Bloques de contenido" son la potencia de fuego real, generando el contenido real para la pantalla. Como acabamos de comentar en la sección anterior, debe asignar el bloque de contenido a uno de los bloques estructurales para la pantalla frontal. Hay algunas otras formas que nos permiten insertar los bloques de contenido utilizando códigos cortos, pero veremos más sobre esto más adelante..
¡Los bloques de contenido pueden ser de cualquier forma, desde un simple bloque de contenido estático hasta una lista de los productos más recientes en la página de inicio! De hecho, la mayoría del contenido es generado por los bloques de contenido distribuidos en los diferentes módulos de Magento..
Por lo tanto, a estas alturas, debe comprender la diferencia básica entre los dos tipos de bloques en Magento. Así que vamos a saltar y comenzar el desarrollo de bloques personalizados!
Vamos a desarrollar un módulo Magento personalizado muy básico para el desarrollo de nuestro bloque personalizado. Nuestro bloque personalizado será un bloque simple que muestra los productos más recientes disponibles en la tienda..
Supongo que está familiarizado con la estructura básica y las convenciones de los archivos del módulo Magento. Ahora, veamos la estructura de archivos que necesitaremos implementar para nuestro bloque personalizado.
app / etc / modules / Envato_All.xml
: Es un archivo usado para habilitar nuestro módulo personalizado..app / code / local / Envato / Recentproducts / etc / config.xml
: Es un archivo de configuración del módulo..app / code / local / Envato / Recentproducts / Model / Recentproducts.php
: Es un archivo modelo que proporciona la matriz de los productos más recientes..app / code / local / Envato / Recentproducts / Block / Recentproducts.php
: Es el archivo de bloque principal para nuestro bloque personalizado..app / design / frontend / default / default / template / recentproducts / recentproducts.phtml
: Es un archivo de plantilla que contiene las cosas relacionadas con XHTML.Según las convenciones de Magento, primero debemos crear el archivo de habilitador de módulos. Crear app / etc / modules / Envato_All.xml
y pega el siguiente contenido en ese archivo. Hemos utilizado Envato
como nuestro espacio de nombres de módulo y Productos recientes
como nuestro nombre de módulo. Permitirá nuestra Productos recientes
módulo por defecto.
cierto local
Crear app / code / local / Envato / Recentproducts / etc / config.xml
y pega los siguientes contenidos en ese archivo. Acabamos de declarar los nombres de clase de modelo y bloque según las convenciones de archivos XML del módulo Magento.
1.0 Envato_Recentproducts_Block Envato_Recentproducts_Model
Ahora, crea el archivo modelo en app / code / local / Envato / Recentproducts / Model / Recentproducts.php
. Pegue los siguientes contenidos en el archivo modelo.
getCollection () -> addAttributeToSelect ('*') -> setOrder ('entity_id', 'DESC') -> setPageSize (5); devuelve $ productos;
Como puedes ver, acabamos de declarar un método. getRecentProducts
que devolverá los cinco productos más recientemente añadidos.
Además, crea el app / code / local / Envato / Recentproducts / Block / Recentproducts.php
Archivo e inserte el siguiente código en ese archivo.
getRecentProducts (); foreach ($ products as $ product) $ arr_products [] = array ('id' => $ product -> getId (), 'name' => $ product -> getName (), 'url' => $ producto -> getProductUrl (),); devolver $ arr_products;
En el contexto del tutorial, ¡es uno de los archivos más importantes que estamos buscando! Sí, es un archivo relacionado con nuestro bloque personalizado..
En este archivo, llamaremos a nuestro método modelo. getRecentProducts
para cargar la matriz de los productos utilizando el Mago :: getModel
belleza de magento. A continuación, recorreremos los datos y configuraremos $ arr_products
matriz que será necesaria en nuestro archivo de plantilla de bloque.
Finalmente, necesitaremos hacer un archivo de plantilla en app / design / frontend / default / default / template / recentproducts / recentproducts.phtml
. Contiene el código XHTML relacionado con la pantalla de productos..
getRecentProducts (); ?>Productos recientes
">
Primero, estamos obteniendo la matriz de productos usando el getRecentProducts
Método del bloque. Una vez que obtenemos eso, simplemente recorremos los datos y preparamos el código XHTML para nuestro bloque. Es tan simple como eso!
Hemos terminado con nuestro módulo de bloque personalizado, así que en la siguiente sección veremos cómo podríamos usar los códigos cortos de bloque para mostrar nuestro bloque en las páginas frontales..
Como hemos comentado anteriormente, los bloques de contenido se muestran asignándolos a uno de los bloques estructurales. Y sí, puede asignar los bloques personalizados de la misma manera que los otros bloques centrales en Magento se asignan, ya sea por archivos de diseño o páginas CMS.
Para insertar su bloque personalizado usando el archivo de actualización de diseño, puede usar el siguiente código.
Por otro lado, si desea mostrar su bloque personalizado utilizando la página CMS, aquí está el código que debe usar.
block type = "recentproducts / recentproducts" name = "recentproducts_recentproducts" template = "recentproducts / recentproducts.phtml"
Veamos rápidamente cómo se ve en el front-end cuando se inserta a través de una de las páginas del CMS. Inicie sesión en su Magento back - end y vaya a CMS> Páginas, y agregar una nueva página CMS usando Añadir nueva página. Complete la información requerida y pegue su código corto de bloque como se muestra en la siguiente captura de pantalla.
Guarda la página y ve al frente para ver cómo se ve.!
Se ve genial, ¿no? Así que eso es todo por ahora, y volveré con algunas cosas más emocionantes. Me encanta escuchar tus pensamientos usando la siguiente alimentación.