Image
Drupal Modular net4gym
Drupal modular: AulaDrupal lanza su primera APP de Drupal

En AulaDrupal estamos de celebración, ya que acabamos de lanzar de manera oficial, nuestra primera aplicación web de Drupal modular, para centros deportivos y gimnasios .

Esta aplicación web es un software de gestión de cuotas de gimnasio,  actividades, bonos de entrenamiento y productos de tienda, así como control de entradas, inscripciones en eventos, tareas, remesas bancarias, auto-renovación de cuotas, control de stock, inventario, QR.... y muchísimos más módulos que hacen más ameno y ágil el día a día en un centro deportivo.

Con esta aplicación los clientes podrán autogestionarse, no necesitarán contactar para contratar o gestionar ningún servicio ya que podrán dar de alta y baja cada uno de los módulos que tenemos en función de sus necesidades. 

 

Todo lo que se necesita en un software, presentado de la manera más sencilla.

 

Un software completo, no tiene porque ser difícil de manejar.

Net4Gym busca el mayor rendimiento oculto tras el más sencillo sistema.

A mayor sencillez mayor usabilidad.

Es un programa ágil, completo y con intuitivas opciones que harán que tu día a día sea más ameno. Reduciendo al completo todas las horas de gestión, contabilidad y control de los empleados, productos, local,...

 

Image
Drupal modular NetforGym

 

Visita la web de la aplicación para conocer más nuestra primera aplicación de Drupal modular. 

Puedes visitar la web del software en https://www.netforgym.com. 

100% Drupal, 100% modular y autogestionable.

 

 

 

 

 

Image
Composer, uso y aplicación de este proceso en Drupal
Composer, uso y aplicación de este proceso en Drupal

Este proceso ha sido y es muy habitual en muchos casos pero un gestor de dependencias nos facilita mucho esta tarea y además soluciona un problema muy común y es el de la gestión de versiones, ya que si lo hacemos manualmente, tenemos que periódicamente revisar que ese software o librerías que nos descargamos, no haya tenido una actualización, porque en tal caso, tendríamos que realizar el proceso manualmente. Composer nos facilita la vida mediante un proceso que simplifica estas tareas.

Lo primero que debemos tener es instalado el Composer en nuestro sistema, y eso requiere un proceso que depende del sistema sobre el que deseemos instalarlo, si es en Windows, en Linux, Mac, etc. Dejo la url desde donde podrás seguir los pasos fácilmente. https://getcomposer.org/doc/00-intro.md

Una vez instalado el programa, abre un terminal y ejecuta composer --version o simplemente composer para verificar que te responde. Si lo has instalado de modo global, puedes probarlo desde cualquier parte del sistema.

Para poder trabajar con composer en nuestro proyecto, nos dirigimos a la carpeta en que lo tenemos, y podemos crear nuestro entorno Composer automáticamente o manualmente.

De modo automático, ejecutamos el comando composer init. Lo primero que nos pedirá es que introduzcamos el nombre del proyecto, el cual se compone de vendor u organización, seguido una barra, y a continuación el nombre del proyecto. Por ejemplo micomposer/nuevaprueba.

Nos pedirá una descripción.

Image
Welcome to the composer config generator

A continuación nos pedirá que introduzcamos una descripción.

Image
Description

Nos pedirá el autor.

Image
Author

Nos pedirá algo un poco extraño, que es la estabilidad mínima, en este caso si estamos trabajando en modo desarrollo introducimos dev para que nos descargue versiones de desarrollo en las dependencias. Si pulsamos enter directamente nos bajará sólo las versiones estables.

Image
Minimum Stability

A continuación el tipo, en nuestro caso va a ser un proyecto.

Image
Package Type

En el tipo de licencia podemos poner MIT que es la licencia más usada en open source. Si no fuera open source pondríamos propietary.

Image
License

En este punto podemos ya empezar a incluir dependencies de manera interactiva. Nos pregunta si vamos a necesitar alguna y para ello enter en yes.

Image
Dependencies

Nos pedirá que introduzcamos un paquete y como ejemplo introducimos ckeditor. Puede salirnos un conjunto de opciones. Pulsamos el número correspondiente a la opción de paquete ckeditor que queramos instalar como dependencia.

Image
Search package

Nos permitirá indicar una versión específica pero si no queremos indicar una y que se instale la última pulsamos enter.

Image
Version

Nos indicará la versión que se va a instalar, en este caso la dev-master y nos pedirá si queremos añadir otra dependencia.

Image
Dev-master version

Como no voy a instalar más dependencias, pulso enter, y nos preguntará que vamos a necesitar alguna dependencia específica para el desarrollo. Como no la vamos a necesitar escribo no y pulsamos enter.

Image
require-dev

Nos preguntará si queremos aplicar la estandarización PSR-4 de clases, en nuestro caso le vamos a decir que no.

Image
PSR-4

Me sale el resumen para confirmar del proyecto Composer pulsamos directamente enter para confirmar.

Image
Resumen

Nos pedirá si queremos intalar las dependencias indicadas en ese momento y le decimos que sí.

Image
Instalación de dependencias

De este modo ya tendríamos configurado Composer para gestionar nuestras dependencias.

Los componentes que Composer nos puede gestionar se encuentran en la página https://packagist.org/, en ella podemos realizar una búsqueda y encontrar una enorme cantidad de librerías y dependencias.

Podemos crear la configuración de nuestro proyecto Composer manualmente del siguiente modo.

Para poder gestionar composer necesita un fichero llamado composer.json, en cual introducimos los paquetes que deseamos que Composer nos gestione. El fichero tiene que estar escrito en json por lo que al editarlo, lo primero que tenemos que hacer es abrir y cerrar llaves.

En la primera parte introducimos un conjunto de valores que son opcionales y que se introducen en estructura campo-valor, de la siguiente manera.

{

  “name”: “micomposer/prueba-composer”

}

La primera parte del nombre, antes de la barra es el vendor y a continuación el nombre del proyecto.

El resto de datos opcionales es muy amplio y puede comprender, no solo el nombre, sino la versión, el tipo , la licencia, la descripción, etc. No obstante, el Composer necesita el campo require, que es el que guarda las dependencias que nosotros le digamos. Es un objeto que guarda todas las dependencias en modo clave valor.

{

  “name”: “micomposer/prueba-composer”,

  “require”: {

   

  }

}

Cuando entramos en alguno de los proyectos en la web packagist, nos indicará como tenemos que ponerlos. Por ejemplo:

Image
Packagist

Kint es una librería que nos permite debuguear o mostrar las variables que tengamos en nuestro programa de manera más amigable. Drupal lo suele utilizar con el módulo Devel, pero ese es otro tema. Si pulsamos la primera opción “kint-php/kint”, veremos la siguiente pantalla https://packagist.org/packages/kint-php/kint

Veremos las distintas versiones y observaremos que lo que tenemos que poner es la clave valor, la primera el nombre kint-php/kint, y a continuación la versión, separado por dos puntos y entre comillas como vemos a continuación.

{

  “name”: “micomposer/prueba-composer”,

  “require”: {

    “kint-php/kint”: “dev-master”,

  }

}

La versión requiere conocer las opciones ya que podemos controlar qué versiones queremos instalar como comodines y signos.

Si ponemos, por ejemplo la versión “5.2.*”, estaremos indicando a Composer que nos instale cualquier versión superior a 5.2 e inferior a 5.3. si ponemos una versión sin comodines le estaremos indicando que nos instale esa versión en particular y ninguna otra.

Si queremos que se instale una versión igual o superior utilizaremos el sistema >=5.2.

Podemos introducir un intervalo de versiones como 5.2 - 6.8, que es equivalente a >=5.2 <6.8.

Puedes encontrar todas las opciones en la página https://getcomposer.org/doc/articles/versions.md

En nuestro caso vamos a utilizar la versión última indicada en la página que es la dev-master que corresponde a la última rama de desarrollo.

Algo importante a tener en cuenta a la hora de generar el fichero es que tiene que estar codificado en UT8 a secas.

Guardamos el fichero y abrimos un terminal. Nos dirigimos a la carpeta donde hemos creado el composer.json y ejecutamos el comando composer install.

Image
Composer install

Observaremos que nos ha creado una carpeta vendor en la que introduce las dependencias.

Image
Dependencias

Vemos que ha instalado la carpeta kint-php con la versión que le hemos indicado, y una carpeta composer con las librerías que necesita el programa.

También podemos ver el fichero autoload.php que contiene código para la carga automática de todas las librerías que gestionemos con composer.

En nuestro index.php cargamos el autoload con require y metemos un array o variable en la función d().

<html>

<head></head>

<body>

<?php

. require “vendor/autoload.php”;

$miarray = [‘María’, ‘Pedro’, 43, TRUE, 786,6];

d($miarray);

?>

</body>

</html>

El resultado es el que sigue:

Image
Array

La librería nos facilita el trabajo de visualizar las variables.

Si nosotros queremos añadir nuevas librerías ya no podemos hacer un install porque ya está instalado, tendríamos que modificar el composer.json y añadir la nueva librería, y ejecutar composer update.

Una librería muy utilizada en drupal es ckeditor, para editar texto. Buscamos en la web packgist.org, y cambiamos el fichero composer.json introduciendo la siguiente línea al apartado require.

“ckeditor/ckeditor”: “4.16.1”

Recordemos que la última linea del array no tiene coma pero la anterior si.

Guardamos e introducimos en el terminal el comando composer update y tendremos el siguiente resultado.

Image
Composer update

Además de instalarnos la nueva librería, Composer comprobará si alguna de las existentes tiene alguna actualización pendiente, y la instalará siempre y cuando lo tengamos así estipulado en los requisitos de las versiones que hablamos antes.

Observamos la carpeta vendor y tenemos la nueva carpeta ckeditor.

Image
Nueva carpeta ckeditor

Una característica importante a tener en cuenta es que la librería que nos vamos a descargar requiere otras librerías como dependencias, Composer instalará aquellas, sin que nosotros tengamos que especificarlo.

Es posible que deseemos eliminar una librería, en ese caso tenemos que borrar la librería del fichero composer.json, guardar y ejecutar el comando composer update. De ese modo, Composer se encarga de eliminar automáticamente la librería.

Hasta aquí hemos visto el uso de Composer, de modo básico pero que nos dará un plus de profesionalidad. Espero con ello haber podido ayudar o al menos aclarar a quien lo necesite esta herramienta esencial en el desarrollo con Drupal.

Image
Versión correcta de PHP en Apache, como configurarlo.
Versión correcta de PHP en Apache, como configurarlo.

Una circunstancia que podemos encontrar es que cuando intentemos ejecutar un programa que requiera una versión específica de php, nos dé error porque la versión no es la adecuada, por eso necesitamos saber configurar la  versión correcta de PHP en Apache.

En relación con la instalación de Drupal, las más recientes versiones pueden o son recomendables, gestionarlas con el gestor de paquetes Composer. Composer es un gestor de paquetes php que facilita la gestión de dependencias y librerías.

La versión más reciente de Composer, en el momento de escribir este artículo la 2.1.3, requiere trabajar en un entorno con php 7.3 o superior.

Poniéndonos en un caso práctico, supongamos que hemos instalado Drupal en un servidor Debian 9, lanzamos la url de instalación y nos presenta el siguiente mensaje.

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0".

Podemos comprobar la versión que tenemos en php con el comando php --version.
 

root@gondor-01:/var/www/html/midrupal/web# php --version
PHP 8.0.8 (cli) (built: Jul  1 2021 16:10:07) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.8, Copyright (c), by Zend Technologies

Curiosamente podemos observar que nos indica que la versión que tenemos instalada en la 8.0.8, con lo cual, teóricamente debería dejarnos funcionar pero no es el caso.

Realmente no quiere decir que sea la versión que Apache está utilizando. Para ver qué versión está utilizando el apache, creamos un fichero php que podemos llamar miversionphp.php en el mismo directorio con el código:

<?php

phpinfo();

?>

Lanzamos la url llamando al fichero que hemos creado para que no se active el index.php y veremos un cuadro con multitud de información pero la que nos interesa es la siguiente:

Image
versión correcta de PHP en Apache.

Realmente Apache está utilizando otra versión que tenemos instalada porque está activo el módulo de la versión 7.0. Para cambiar la versión del módulo, tenemos que deshabilitar el anterior y habilitar la versión correcta.


En Debian, para poder ejecutar los comandos de activación o desactivación de módulos de apache, tenemos que poner toda la ruta, por ello, para desactivar la versión de php7.0, escribimos:

root@gondor-01:/var/www/html/midrupal/web# /usr/sbin/a2dismod 7.0

Y activamos el módulo de php7.3:

root@gondor-01:/var/www/html/midrupal/web# /usr/sbin/a2enmod 7.3

 

En principio no debemos asustarnos por los mensajes de respuesta ya que son warnings que nos advierten de posibles incompatibilidades entre módulos. Realmente nos deja activado el módulo de php7.3 para el Apache. Sólo nos queda como indica en la última linea, reiniciar el apache2.


Actualizamos la página y ya aparece la versión correcta:

Image
versión correcta de PHP en Apache.

Podemos volver a lanzar la url de instalación de Drupal. 

 

Esto ha sido Versión correcta de PHP en Apache, como configurarlo.

Si necesitas más ayuda, visita el blog

Image
navegador de entidades
Drupal Navegador de Entidades: Como hacer que muestre lo preseleccionado.

Vamos a ver: Drupal Navegador de Entidades: Como hacer que muestre lo preseleccionado. 

Con el módulo Entity Browser podemos seleccionar una taxonomía, medio o nodo con un método más visual y cómodo que una autocomplete o una lista, ya que nos abre una ventana modal o iframe que contiene una vista que podemos customizar de la manera que queramos

Pero, además de que no es un modulo sencillo por si mismo, de manera natural tiene una funcionabilidad que no es la apropiada cuando vas a seleccionar una entidad, pues cada vez que quieras seleccionar una nueva entidad te la suma, no modifica.

Para que su comportamiento sea el de remplazo de tu preselección, te ponemos los pasos que has de seguir:

Lo primero del todo es en la entidad nueva de  “entity browser” , desplegar la última opción de “selection display” y seleccionar  “multi step selection display” e indicarle que tipo de entidad estas usando en el campo que vas a mostrar con este display.

Drupal entity browser

Lo siguiente ( que ya te lo pide el modulo) es crear una vista del tipo “navegador de entidades”  que muestre las entidades tal como quieres que se vean , que hagas los filtros que necesites y sobre todo, muy importante, que como filtro contextual  añadas la ID de la entidad que estas mostrando.

Drupal navegador de entidades

En mi caso, como estoy mostrando una taxonomia es TID ( Taxonomy ID) desde el filtro contextual , marcando “entity browser Context”

drupal entity browser Context

Por último, en el formulario del campo que quieres que se muestre con “entity browser” , le das a la tuerquecita de la derecha y en selection mode marcas “edit selection”

Drupal entity edit selection

Un consejo: aplícale unos pocos estilos custom al modal que se te abre o será ilegible o incomodo de usar.

Esto ha sido: Drupal Navegador de Entidades: Como hacer que muestre lo preseleccionado. 

Esperamos haberos ayudado, dejad comentarios si necesitáis mas detalles o no os funciona

Image
Resolver conflictos de GIT
Resolver conflictos de GIT con PhpStorm

Cuantas veces trabajando en nuestro día a día, nos llevamos las manos a la cabeza al ver un conflicto en GIT? demasiadas. Por eso, que PhpStorm tenga una herramienta para resolver conflictos de GIT, tan visual y tan sencilla es lo que mas nos puede ayudar en este caso. 

Para ver como resolver conflictos de git con PhpStorm, he creado el siguiente caso: En mi rama local de Develop he querido fusionar ( merge) una rama que contenía  dos conflictos por tanto la fusión falló. 

Resolver conflictos de GIT

Image
vlc_kC8DMNaRJL

En el Fallo me ha dado los archivos exactos que generan conflicto y sus rutas, asique me dirijo al árbol de la izquierda y busco uno de esos archivos que tienen el conflicto. 

Pulsamos encima de el con el botón derecho y bajamos hasta GIT y despues Resolve Conflicts

Image
Resolver conflictos de GIT

Se nos abrirá una ventana con todos los archivos que tienen conflictos y a la derecha tenemos 3 opciones: 

Accept Yours: Con esta opción aceptaras todos los cambios que estén en la rama local, descartando los de la rama remota. 

Accept Theirs: Con esta opción aceptaras todos los cambios que estén en la rama remota que has querido fusionar, descartando los locales. 

Merge: Con esta opción abrimos la zona de edición manual

Image
vlc_mTNkRONg9d

En la zona de edición manual se nos abre una ventana con tres columnas

Image
vlc_5nynlz69dx

En la columna de la Izquierda te abre el archivo con los cambios de la rama develop (locales).

En la columna de la derecha te abre el mismo archivo pero con los cambios que hay en la rama remota que has intentado fusionar (ED-75). 

Y en el centro el resultado de como quedará el archivo una vez vayamos seleccionando que cambios, de cada lado, queremos. Para ello nos ayudamos de las flechas que hay al lado de los cambios. 

 

Hemos visto como resolver conflictos de git con PhpStorm. 

Si necesitas mas ayuda con PhpStorm, visita este enlace

Image
Como configurar una FTP en PHPStorm
Como configurar una FTP en PHPStorm

PhpStorm tiene muchas utilidades de las cuales hablaremos en varios artículos de ayuda. Ahora vamos a explicar cómo configurar una FTP en PHPStorm.

Esto nos puede ser de mucha utilidad cuando no trabajamos con git, o cuando necesitamos subir archivos 

En el menú superior, desplegamos Tools y dentro Deployement. Abajo del todo vamos a la ultima opción “Browse Remote Host

Como configurar una FTP en PHPStorm

 

Para añadir nuestro servidor debemos cubrir el host ( IP o dominio ), el Username y el Password. Probaremos con el Test conectión si nuestros datos son los correctos y a continuación abriremos el icono de la carpetita en Root path para indicarle la ruta “dentro del server” en la que nos queremos situar.

 

Como configurar una FTP en PHPStorm

 

En la siguiente pestaña de Mappings es importante igualar el directorio remo al local, de la tal manera que ambos contengan las carpetas vendor, web etc… bajo la misma raíz.

 

Como configurar una FTP en PHPStorm

 

Una vez tengamos bien configurado nuestro FTP, es muy útil para poder hacer subidas, descargas e incluso comparaciones con el servidor. Solo tenemos que pulsar con el botón derecho sobre un archivo o ruta, bajamos hasta Deployement y se nos abrirán las opciones de subida, bajada y sincronización.

 

Como configurar una FTP en PHPStorm

Esto ha sido Como configurar una FTP en PHPStorm

Puedes descargar PHPStorm desde aqui