Iniciación al desarrollo en Magento 2

, , ,
Tienda online Magento 2

El salto de Magento 1 a Magento 2 ha sido grande, y  el flujo de trabajo ha variado notablemente, añadiendo nuevas herramientas a nuestra rutina diaria.

En este artículo vamos a repasar distintas acciones que emplearemos habitualmente, e introduciremos algunas ayudas/consejos para que el cambio a Magento 2 no sea tan costoso.

Antes de empezar: maquetar pantallas de error en Magento 2

Cuando realicemos la instalación de un módulo, regeneremos archivos estáticos o recompilemos el código, Magento enseñará una pantalla de error 503 bastante fea que puede asustar a nuestros visitantes. Antes de salir a producción, tenemos que dejar estas plantillas bien adecuadas para que cuando estemos realizando tareas de mantenimiento la gente esté informada. Para ello, procederemos a editar los archivos:

– {instalación de magento}/pub/errors/default/page.phtml.

Este archivo define la estructura de la página de error. En él, por ejemplo, podemos insertar el logo de nuestra web, centrar el contenido, etc.
A partir de aquí, se incrustarán dentro de esta plantilla otro archivo que especificará el error. Generalmente con ver el nombre del archivo podemos saber de qué error se trata. Por ejemplo, el archivo:

-{instalación de magento}/pub/errors/default/503.phtml.

Muestra un error 503. Típicamente usará esta plantilla cuando estemos instalando módulos, haciendo un deploy de archivos estáticos, cambiando a modo production, etc.

Adicionalmente, dentro de la carpeta {instalación de magento}/pub/errors/default/css tenemos un archivo styles.css para darle estilo a estas plantillas.

Tu nueva herramienta: La consola de Magento

Magento 2 trae una nueva herramienta de línea de comandos para las tareas de desarrollo y mantenimiento de la tienda. Estando en la raíz de Magento, la podemos usar mediante el siguiente comando:

php bin/magento <comando a utilizar>

Hay que tener en cuenta varios factores antes de ejecutar comandos:
1. Usar siempre el usuario del sistema del desarrollo de Magento. Nunca hacerlo como root. En el caso de que seamos root, no olvidemos hacer un sudo antes del comando.
2. Según la versión de Magento con la que estemos trabajando, requerirá de una versión de php mínima determinada. Si trabajamos con entornos como Plesk, donde puede haber varias versiones de php instaladas, seguramente la versión de php del sistema por defecto sea la más baja, por lo que tendremos que especificar la ruta hacia una versión de php superior.

Veamos un ejemplo de ejecución de un comando teniendo en cuenta los puntos anteriores. Supongamos que el usuario de sistema de Magento es ‘usermage’, y que queremos usar php 7.2:

sudo -u usermage /opt/plesk/php/7.2/bin/php bin/magento setup:upgrade

Esta consola tiene muchos comandos disponibles, por lo que para empezar vamos a ver los comandos más habituales:

Ver/modificar modo de ejecución

Magento tiene distintos modos de ejecución. Para no extendernos: tenemos el modo developer y el modo production, y se diferencian en que en modo developer, los archivos estáticos y las clases autogeneradas (que explicaremos más adelante) se regeneran al hacer cambios.

Por el contrario, cuando cambiamos a modo production, se efectuará un deploy de todos los archivos estáticos y se recompilarán todas las dependencias para que la tienda vaya más fluida. Esto quiere decir que estos archivos permanecen inmutables salvo que le mandemos una nueva regeneración.

En resumen, el servidor de desarrollo lo mantendremos en modo developer y la versión de producción siempre estará en modo production.

Dicho esto, este comando:

php bin/magento deploy:mode:show

nos informa de en qué modo está Magento 2 ejecutándose. Adicionalmente, podemos cambiar entre modos con estos comandos:

php bin/magento deploy:mode:set developer
php bin/magento deploy:mode:set production

Instalar cron

Magento 2, al igual que el 1, tiene numerosos procesos que se ejecutan mediante tareas programadas. Afortunadamente, Magento 2 incorpora un comando en su consola que instala automáticamente las tareas programadas en el servidor donde lo ejecutemos. El comando que obra la magia es el siguiente (recordar NO ejecutarlo como root) :

php bin/magento cron:install

Una vez ejecutado, lo normal es que no volvamos a utilizar este comando.

Limpiar caché

Las caches de Magento se pueden borrar desde el backend, pero también lo podemos hacer desde la consola:

php bin/magento cache:clean
php bin/magento cache:flush

La diferencia entre clean y flush, es que clean elimina las caches activas de Magento (traducciones, fpc, layouts, etc.) y flush vacía una cache diferente que maneja Magento, donde almacena tipos de datos, reflection con la base de datos, etc. Si hemos hecho cambios de plantillas, generalmente con usar el modo clean suele bastar, y si hemos hecho cambios en modelos o en la base de datos, mejor usar flush.

Generar archivos estáticos

Magento 2 tiene un nuevo sistema de archivos html, javascripts y css, los cuales son pre generados a partir de las plantillas para poder servirlos al instante. Estos archivos se almacenan en la carpeta pub/static/.
Si estamos en modo developer, podemos eliminar  estos archivos usando un botón que se encuentra en gestionar sistema > cache:

gestión del sistema Magento 2

En modo developer los archivos que no existan se regenerarán según sean necesitados. Pero si estamos en modo production, tendremos que regenerarlos usando el comando:

php bin/magento setup:static-content:deploy

De lo contrario Magento intentará cargar archivos no existentes y dará un error.

Recompilar el código

Magento 2 viene dopado de patrones de diseño, como la inyección de dependencias o las factorías. Esto se traduce en que gran parte del código es generado automáticamente, y es necesario regenerarlo cuando instalamos nuevos módulos, reescribimos clases, generamos nuevos modelos, etc.

Si estamos en modo developer, este proceso es automático, pero si estamos en modo production, tenemos que avisar a Magento de que debe regenerar el código. Esto lo hacemos con el comando:

php bin/magento setup:di:compile


Trabajar con módulos

En Magento 2 disponemos de varias maneras de  descargar módulos:

1. A través del backend de Magento 2 y mediante Magento marketplace. Este proceso ya descarga e instala el módulo automáticamente.

2. Mediante composer, si el módulo da la opción.

3. Manualmente, descargando el módulo en la carpeta app/code.

No vamos a entrar en los procesos para descarga, pero sí en el de instalación. Si usamos el método 2, o el método 3, a diferencia de Magento 1, para instalar o actualizar un módulo, tenemos que indicarlo expresamente mediante la consola usando el siguiente comando:

php bin/magento setup:upgrade

Este comando busca y actualiza/instala  los módulos nuevos o que hayan sido modificados. Generalmente este comando dejará habilitado el módulo. Si quisieras desactivar/activar un módulo:

php bin/magento module:enable Nombredelmodulo
php bin/magento module:disable Nombredelmodulo

Hay que recalcar que después de instalar el módulo necesitaremos vaciar la caché, y si estamos en modo production, tendremos que recompilar todo el sistema. Para ello, emplearemos la siguiente sucesión de comandos:

Modo developer
php bin/magento setup:upgrade
php bin/magento cache:flush

Modo production
php bin/magento maintenance:enable
php bin/magento module:enable Nombredelmodulo
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:flush
php bin/magento maintenance:disable

Gestión de índices

La re-indexación de índices de Magento 2 se efectúa mediante el cron. Esto quiere decir que en el backend no disponemos de acción para llevarlo a cabo. Para re-indexar manualmente los índices tenemos que hacerlo mediante el comando:

php bin/magento indexer:reindex

Pero si esto nos supone una limitación, podemos instalar el módulo https://www.mageplaza.com/magento-2-backend-reindex/el cual nos añade los enlaces para poder re-indexar manualmente cualquier índice, tal como podíamos hacer en Magento 1:

el módulo de Magento

Conclusión

Como habrás visto la consola de Magento es muy potente. Existen más comandos, pero los descritos en este artículo son los más usados en el día a día.

Si tienes un e-commerce en Magento o estas planteando tenerlo, nosotros podemos asesorarte sin ningún compromiso. Llevamos muchos años en el sector y somos expertos en desarrollo de tiendas online en Magento. Además, también contamos con especialistas en ventas en marketplaces.