{"id":26,"date":"2024-01-26T19:09:50","date_gmt":"2024-01-26T19:09:50","guid":{"rendered":"https:\/\/bitacora.lado.mx\/?p=26"},"modified":"2024-01-26T19:25:58","modified_gmt":"2024-01-26T19:25:58","slug":"crear-un-nuevo-tema-con-magento2","status":"publish","type":"post","link":"https:\/\/bitacora.lado.mx\/index.php\/2024\/01\/26\/crear-un-nuevo-tema-con-magento2\/","title":{"rendered":"Crear un nuevo tema con Magento2"},"content":{"rendered":"\n<ol class=\"wp-block-list\">\n<li>Crear una carpeta de tema para Magento 2<\/li>\n<\/ol>\n\n\n\n<p>Crear una carpeta para el tema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ir a app\/design\/frontend\nCrear una carpeta de proveedor app\/design\/frontend\/&lt;proveedor&gt; por ejemplo: app\/design\/frontend\/Mageplaza\nCrear una carpeta de tema app\/design\/frontend\/&lt;proveedor&gt;\/&lt;tema&gt; por ejemplo: app\/design\/frontend\/Mageplaza\/simple<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Declarar tu tema<\/li>\n<\/ol>\n\n\n\n<p>Ahora que tenemos la carpeta app\/design\/frontend\/Mageplaza\/simple, crea un archivo llamado theme.xml que define informaci\u00f3n b\u00e1sica sobre el tema, como: Nombre, tema padre (en caso de que tu tema herede de un tema existente), imagen de vista previa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:Config\/etc\/theme.xsd\"&gt;\n     &lt;title&gt;Mageplaza Simple&lt;\/title&gt; &lt;!-- nombre de tu tema --&gt;\n     &lt;parent&gt;Magento\/blank&lt;\/parent&gt; &lt;!-- tema padre, en caso de que tu tema herede de un tema existente --&gt;\n     &lt;media&gt;\n         &lt;preview_image&gt;media\/preview.jpg&lt;\/preview_image&gt; &lt;!-- la ruta de la imagen de vista previa de tu tema --&gt;\n     &lt;\/media&gt;\n &lt;\/theme&gt;<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Paquete de Composer<\/li>\n<\/ol>\n\n\n\n<p>Composer es una herramienta para la gesti\u00f3n de dependencias en PHP. Te permite declarar las bibliotecas en las que tu proyecto depende y gestionar\u00e1 (instalar\/actualizar) esas dependencias por ti.<\/p>\n\n\n\n<p>Para distribuir tu tema como un paquete, agrega un archivo composer.json al directorio del tema y registra el paquete en un servidor de empaquetado.<\/p>\n\n\n\n<p>Ejemplo de composer.json:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"name\": \"mageplaza\/simple\",\n    \"description\": \"N\/A\",\n    \"require\": {\n        \"php\": \"~5.5.0|~5.6.0|~7.0.0|~8.0.0\",\n        \"magento\/theme-frontend-blank\": \"100.0.*\",\n        \"magento\/framework\": \"100.0.*\"\n    },\n    \"type\": \"magento2-theme\",\n    \"version\": \"100.0.1\",\n    \"license\": &#91;\n        \"OSL-3.0\",\n        \"AFL-3.0\"\n    ],\n    \"autoload\": {\n        \"files\": &#91;\n            \"registration.php\"\n        ]\n    }\n}<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Archivo registration.php<\/li>\n<\/ol>\n\n\n\n<p>Puedes agregar el siguiente contenido para registrar el tema en Magento 2<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/**\n * Copyright \u00a9 2015 Magento. Todos los derechos reservados.\n * Ver COPYING.txt para los detalles de la licencia.\n *\/\n\\Magento\\Framework\\Component\\ComponentRegistrar::register(\n    \\Magento\\Framework\\Component\\ComponentRegistrar::THEME,\n    'frontend\/Mageplaza\/simple',\n    __DIR__\n);<\/code><\/pre>\n\n\n\n<p>Debes cambiar Mageplaza, simple por tu proveedor y nombre de tema.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>Crear archivos y carpetas est\u00e1ticos<\/li>\n<\/ol>\n\n\n\n<p>En un dise\u00f1o, hay muchos archivos est\u00e1ticos como javascript, css, im\u00e1genes y fuentes. Se almacenan en carpetas separadas en la web del paquete del tema.<\/p>\n\n\n\n<p>Aqu\u00ed est\u00e1 la estructura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app\/design\/frontend\/Mageplaza\/simple\/\n\u251c\u2500\u2500 web\/\n\u2502 \u251c\u2500\u2500 css\/\n\u2502 \u2502 \u251c\u2500\u2500 source\/ \n\u2502 \u251c\u2500\u2500 fonts\/\n\u2502 \u251c\u2500\u2500 images\/\n\u2502 \u251c\u2500\u2500 js\/<\/code><\/pre>\n\n\n\n<p>Consejos:<\/p>\n\n\n\n<p>En Magento 2, desarrollo de temas o extensiones, al actualizar cualquier archivo en la carpeta app\/design\/frontend\/Mageplaza\/simple\/web, debes actualizar las carpetas est\u00e1ticas ubicadas en pub\/static y var\/view_preprocessed; de lo contrario, no ver\u00e1s cambios en el frontend.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>Configurar im\u00e1genes de productos en el cat\u00e1logo<\/li>\n<\/ol>\n\n\n\n<p>Como puedes ver en la estructura del tema que mencion\u00e9 anteriormente, hay un archivo llamado etc\/view.xml. Este es un archivo de configuraci\u00f3n. Este archivo es necesario para el tema de Magento 2, pero es opcional si existe en el tema padre.<\/p>\n\n\n\n<p>Ir a app\/design\/frontend\/Mageplaza\/simple\/ y crear una carpeta etc y un archivo view.xml. Puedes copiar el archivo view.xml del tema padre, como el tema Blank app\/design\/frontend\/Magento\/blank\/etc\/view.xml.<\/p>\n\n\n\n<p>Actualiza la configuraci\u00f3n de imagen para la p\u00e1gina del cat\u00e1logo de productos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;image id=\"category_page_grid\" type=\"small_image\"&gt;\n    &lt;width&gt;250&lt;\/width&gt;\n    &lt;height&gt;250&lt;\/height&gt;\n&lt;\/image&gt;<\/code><\/pre>\n\n\n\n<p>En view.xml, las propiedades de las im\u00e1genes se configuran en el \u00e1mbito del elemento:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;images module=\"Magento_Catalog\"&gt;\n...\n&lt;images\/&gt;<\/code><\/pre>\n\n\n\n<p>Las propiedades de las im\u00e1genes se configuran para cada tipo de imagen definido por los atributos id y type del elemento <img>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;images module=\"Magento_Catalog\"&gt;\n    &lt;image id=\"unique_image_id\" type=\"image_type\"&gt;\n    &lt;width&gt;100&lt;\/width&gt; &lt;!-- Ancho de la imagen en p\u00edxeles --&gt; \n        &lt;height&gt;100&lt;\/height&gt; &lt;!-- Altura de la imagen en p\u00edxeles --&gt;\n    &lt;\/image&gt;\n&lt;images\/&gt;<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>Declarar el logotipo del tema<\/li>\n<\/ol>\n\n\n\n<p>En Magento 2 por defecto, se utiliza \/web\/images\/logo.svg, en tu tema, puedes cambiar a diferentes formatos de archivo como png, jpg, pero debes declararlo.<\/p>\n\n\n\n<p>El tama\u00f1o del logotipo debe ser de 300&#215;300 p\u00edxeles y debes abrir el archivo \/Magento_Theme\/layout\/default.xml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;page xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd\"&gt;\n    &lt;body&gt;\n        &lt;referenceBlock name=\"logo\"&gt;\n            &lt;arguments&gt;\n                &lt;argument name=\"logo_file\" xsi:type=\"string\"&gt;images\/custom_logo.png&lt;\/argument&gt;\n                &lt;argument name=\"logo_img_width\" xsi:type=\"number\"&gt;300&lt;\/argument&gt; \n                &lt;argument name=\"logo_img_height\" xsi:type=\"number\"&gt;300&lt;\/argument&gt;\n            &lt;\/arguments&gt;\n        &lt;\/referenceBlock&gt;\n    &lt;\/body&gt;\n&lt;\/page&gt;<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>Elementos b\u00e1sicos del dise\u00f1o<\/li>\n<\/ol>\n\n\n\n<p>Los componentes b\u00e1sicos del dise\u00f1o de p\u00e1gina de Magento son bloques y contenedores.<\/p>\n\n\n\n<p>Un contenedor existe con el \u00fanico prop\u00f3sito de asignar la estructura de contenido a una p\u00e1gina. Un contenedor no tiene contenido adicional excepto el contenido de los elementos incluidos. Ejemplos de contenedores incluyen el encabezado, la columna izquierda, la columna principal y el pie de p\u00e1gina.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.lado.mx\/wp-content\/uploads\/2024\/01\/how-to-create-magento-2-theme-magento-2-layout.png\" alt=\"\" class=\"wp-image-30\" width=\"622\" height=\"729\" srcset=\"https:\/\/bitacora.lado.mx\/wp-content\/uploads\/2024\/01\/how-to-create-magento-2-theme-magento-2-layout.png 292w, https:\/\/bitacora.lado.mx\/wp-content\/uploads\/2024\/01\/how-to-create-magento-2-theme-magento-2-layout-256x300.png 256w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\" start=\"9\">\n<li>Tipos y convenciones de archivos de dise\u00f1o<br>Archivos de dise\u00f1o de m\u00f3dulos y temas<\/li>\n<\/ol>\n\n\n\n<p>Se utilizan los siguientes t\u00e9rminos para distinguir los dise\u00f1os proporcionados por diferentes componentes de la aplicaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dise\u00f1os base: Archivos de dise\u00f1o proporcionados por m\u00f3dulos. Ubicaci\u00f3n convencional:\n    Configuraci\u00f3n de p\u00e1gina y archivos de dise\u00f1o gen\u00e9ricos: &lt;module_dir&gt;\/view\/frontend\/layout\n    Archivos de dise\u00f1o de p\u00e1gina<\/code><\/pre>\n\n\n\n<p>: \/view\/frontend\/page_layout<br>Dise\u00f1os de temas: Archivos de dise\u00f1o proporcionados por temas. Ubicaci\u00f3n convencional:<br>Configuraci\u00f3n de p\u00e1gina y archivos de dise\u00f1o gen\u00e9ricos: \/<em>\/layout Archivos de dise\u00f1o de p\u00e1gina: \/<\/em>\/page_layout<\/p>\n\n\n\n<p>Crear un archivo de tema que se extienda<\/p>\n\n\n\n<p>En lugar de copiar extensos c\u00f3digos de dise\u00f1o de p\u00e1gina o configuraci\u00f3n de p\u00e1gina y luego modificar lo que deseas cambiar, en el sistema de Magento, solo necesitas crear un archivo de dise\u00f1o que se extienda y que contenga los cambios que deseas.<\/p>\n\n\n\n<p>Para agregar un archivo de configuraci\u00f3n de p\u00e1gina o un archivo de dise\u00f1o gen\u00e9rico que se extienda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme_dir&gt;\n |__\/&lt;Namespace&gt;_&lt;Module&gt;\n   |__\/layout\n     |--&lt;layout1&gt;.xml\n     |--&lt;layout2&gt;.xml<\/code><\/pre>\n\n\n\n<p>Por ejemplo, para personalizar el dise\u00f1o definido en \/view\/frontend\/layout\/catalog_product_view.xml, debes agregar un archivo de dise\u00f1o con el mismo nombre en tu tema personalizado, como sigue:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme_dir&gt;\/Magento_Catalog\/layout\/catalog_product_view.xml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme_dir&gt;\n |__\/&lt;Namespace&gt;_&lt;Module&gt;\n   |__\/page_layout\n     |--&lt;layout1&gt;.xml\n     |--&lt;layout2&gt;.xml<\/code><\/pre>\n\n\n\n<p>Anular los dise\u00f1os base<\/p>\n\n\n\n<p>Anular no es necesario si un bloque tiene un m\u00e9todo que cancela el efecto del m\u00e9todo originalmente invocado. En este caso, puedes personalizar el dise\u00f1o agregando un archivo de dise\u00f1o donde se invoque el m\u00e9todo de cancelaci\u00f3n.<\/p>\n\n\n\n<p>Para agregar un archivo de dise\u00f1o base que anule (para anular un dise\u00f1o base proporcionado por el m\u00f3dulo): coloca un archivo de dise\u00f1o con el mismo nombre en la siguiente ubicaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme_dir&gt;\n  |__\/&lt;Namespace_Module&gt;\n    |__\/layout\n      |__\/override\n         |__\/base\n           |--&lt;layout1&gt;.xml\n           |--&lt;layout2&gt;.xml<\/code><\/pre>\n\n\n\n<p>Estos archivos anulan los siguientes dise\u00f1os:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;module_dir&gt;\/view\/frontend\/layout\/&lt;layout1&gt;.xml\n&lt;module_dir&gt;\/view\/frontend\/layout\/&lt;layout2&gt;.xml<\/code><\/pre>\n\n\n\n<p>Anular los dise\u00f1os de temas<\/p>\n\n\n\n<p>Para agregar un archivo de anulaci\u00f3n de tema (para anular un dise\u00f1o de tema principal):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;theme_dir&gt;\n  |__\/&lt;Namespace_Module&gt;\n    |__\/layout\n      |__\/override\n         |__\/theme\n            |__\/&lt;Parent_Vendor&gt;\n               |__\/&lt;parent_theme&gt;\n                  |--&lt;layout1&gt;.xml\n                  |--&lt;layout2&gt;.xml<\/code><\/pre>\n\n\n\n<p>Estos archivos anulan los siguientes dise\u00f1os:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;parent_theme_dir&gt;\/&lt;Namespace&gt;_&lt;Module&gt;\/layout\/&lt;layout1&gt;.xml\n&lt;parent_theme_dir&gt;\/&lt;Namespace&gt;_&lt;Module&gt;\/layout\/&lt;layout1&gt;.xml<\/code><\/pre>\n\n\n\n<p>\u00a1Consejos!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cambiar el nombre o alias del bloque. El nombre de un bloque no debe cambiarse, al igual que el alias de un bloque que permanece en el mismo elemento principal.<\/li>\n\n\n\n<li>Cambiar la herencia del identificador. Por ejemplo, no debes cambiar el identificador del tipo de p\u00e1gina principal.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Crear una carpeta para el tema: Ahora que tenemos la carpeta app\/design\/frontend\/Mageplaza\/simple, crea un archivo llamado theme.xml que define informaci\u00f3n b\u00e1sica sobre el tema, como: Nombre, tema padre (en caso de que tu tema herede de un tema existente), imagen de vista previa. Composer es una herramienta para la gesti\u00f3n de dependencias en PHP. Te [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-26","post","type-post","status-publish","format-standard","hentry","category-magento"],"_links":{"self":[{"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/posts\/26","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/comments?post=26"}],"version-history":[{"count":4,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/posts\/26\/revisions"}],"predecessor-version":[{"id":31,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/posts\/26\/revisions\/31"}],"wp:attachment":[{"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/media?parent=26"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/categories?post=26"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.lado.mx\/index.php\/wp-json\/wp\/v2\/tags?post=26"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}