Image
Descuentos con Drupal Commerce, como crearlos
Descuentos con Drupal Commerce, como crearlos

Para crear descuentos con Drupal Commerce para nuestra tienda, vamos hasta /admin/commerce/descuentos y le damos a “añadir descuento”.

Image
Descuentos con Drupal Commerce

Le daremos un nombre para ayudarnos luego a identificarlo sin necesidad de editarlo, por ejemplo “5% de descuento compras +50€”. Si queremos que cuando se muestre al cliente se llame de otra manera, rellenaremos “nombre a mostrar” con ella, para que vean, por ejemplo “ 5% promoción de primavera” cuando se aplique el descuento en la cesta. También podemos rellenar la descripción del descuento, que solo será visible por el admin de la web.

Image
Descuentos con Drupal Commerce

Seleccionaremos entonces, del desplegable, el tipo de descuento que queremos aplicar, puede ser que al comprar un producto obtenga otro de regalo, o que determinados productos tengan descuento… las posibilidades son muy amplias, para este caso usaremos la ultima, “porcentaje del subtotal del pedido”.

Image
Descuentos con Drupal Commerce

Una vez seleccionado el tipo de oferta, debemos marcar las condiciones bajo las que se aplicará el descuento, que pueden ser por pedido, por cliente o por productos, pero no son excluyentes, es decir, podemos crear reglas de descuento complejas seleccionando y configurando varias condiciones a cumplir.

Image
Descuentos con Drupal Commerce
Image
Descuentos con Drupal Commerce

Nosotros seleccionaremos “total del pedido actual” y haremos que al comprar mas de 100€ en producto, se aplique el descuento. Así que como operador seleccionamos “mayor que”, en cantidad pondremos 100,00 y en la divisa usaremos la correspondiente a nuestra tienda.

Image
Descuentos con Drupal Commerce

Con esta condición definida, si el cliente coloca en su cesta producto o productos, por un valor total de 100€ no obtendrá descuento pero si dicho valor es de 101€ si se le aplicará el descuento. Por último en esta sección debemos indicar si queremos que “todas las condiciones deben pasar” o que “solo una debe pasar”. En nuestro ejemplo, al ser una sola condición da igual lo que pongamos, pero si es una regla compleja, en la que haya varias condiciones pero no todas sean necesarias aplicaríamos “solo una debe pasar”, para que en la caso de cumplir una de las definidas aplicara el descuento.

Pasamos entonces a activar la regla de descuento creada ( o no ), marcaremos en que tipo de pedido será aplicada y definiremos la fecha de inicio de la promoción, si queremos por ejemplo que se active el 1 de mayo y se desactive el 15 junio, los limites de uso (cuantas veces puede un mismo cliente hacer uso del descuento, ilimitadas o el numero de veces que definamos nosotros), y la compatibilidad con otros descuentos, (si tenemos varios aquí podemos decidir si se puede aplicar mas de uno en la misma compra).

Image
Descuentos con Drupal Commerce

Y esto ha sido Descuentos con Drupal Commerce, recordad que tenéis este y otros manuales de ayuda en nuestro blog y si aun así no halláis respuesta a vuestro problema, podéis publicar vuestras preguntas en el tablón, donde la comunidad os ayudará a resolverlas.

 

 

Image
Drupal Commerce impuestos
Drupal Commerce impuestos

Drupal Commerce impuestos.

Al usar Drupal Commerce para crear una tienda, necesitaremos, antes o después, definir los impuestos que se van a aplicar en cada venta sobre los productos o servicios que se ofrezcan. Deberemos crear un impuesto tipo IVA o VAT, que se aplicará en los productos y aparecerá en el checkout. Podremos además decidir si mostrar el precio con el impuesto añadido en el producto o no, y que Drupal Commerce lo desglose y lo muestre durante el proceso de compra. Si vuestro tipo o tipos de producto tienen todos la misma tasa de impuestos, podréis definir esta parte en unos pocos clics.
Para ello seguimos, desde el menú de administración, la ruta Comercio—Configuración—tipos de impuesto, y al ver esto:

Image
Drupal Commerce impuestos

Pulsamos sobre “añadir tipo de impuesto” para comenzar a configurar nuestro Iva o Vat, le asignamos un nombre para identificarlo en la vista de configuración general (solo nosotros veremos este nombre).

Image
Drupal Commerce impuestos

A continuación seleccionamos el tipo de extensión, para este ejemplo marcaremos “personalizado” en el listado. Si marcamos la opción “mostrar tasas…”, cuando se muestre la vista del producto, mostrará el precio con este impuesto incluido, si no lo marcamos, lo mostrará desglosado durante el proceso de compra.

Image
Drupal Commerce impuestos

En la etiqueta a mostrar seleccionamos impuesto, puesto que en el campo siguiente ya ampliaremos la información mostrada.

Image
Drupal Commerce impuestos

Ahora le damos un nombre a la tasa (este es el nombre que verá el cliente cuando haga la compra) y le indicamos el porcentaje a aplicar.

Image
Drupal Commerce impuestos

Si quisiéramos indicar un país o países concretos donde aplicar esta tasa, los seleccionamos desde la siguiente opción, con los países seleccionados, si el cliente no pertenece a alguno de ellos no se le sumará el impuesto, si no añadimos nada, la tasa se usará en todos los productos, independientemente del país del usuario que haga la compra.

Image
Drupal Commerce impuestos

Finalmente, cliqueamos sobre guardar para almacenar los cambios. Podemos crear tantas tasas como sea necesario, repitiendo este proceso para cada una de ellas.

Y de esta manera hemos añadido nuestro primer impuesto a Drupal Commerce. Recordad que podeis ver este y otros manuales de ayuda en el blog, y si no encontrais alli respuesta a vuestras dudas, podeis publicarlas en el tablón, donde serán respondidas por la comunidad, o enviarnos un mensaje.

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
Bloque custom en Drupal 8/9 : Mi primer bloque
Bloque custom en Drupal 8/9 : Mi primer bloque

Una vez que tenemos claro como crear un módulo custom en Drupal 8/9, nos surge la necesidad de incluir en nuestro portal un bloque custom en Drupal 8/9 que pinte algo, ya sea un texto , formulario o cualquier entidad de Drupal.

Lo primero que necesitamos es generar la estructura para que Drupal se entere de que existe un bloque nuevo:

Image
Bloque custom en Drupal

Como podemos ver, la estructura es: MIMODULO/src/Plugin/Block y dentro la clase con una nomenclatura en concreto, aunque pongamos otro nombre a nuestra clase seguiría funcionando, pero lo correcto es llevar un orden lógico.

Ahora ya dentro de la clase empezamos generar el código mínimo necesario para que Drupal lo pueda interpretar.

Para empezar necesitamos especificar en cual nombre de espacio se encuentra nuestro bloque y como mínimo necesitamos añadir la clase a la que necesitamos extender:

Image
Bloque custom en Drupal

Además tenemos que definir de forma obligatoria la "id" y el nombre de nuestro bloque:

Image
Bloque custom en Drupal

De esta forma ya podemos generar la estructura básica del block que se conforma de una clase extendiendo de "BlockBase" de Drupal y que tiene que tener como mínimo una función pública llamada "build" por la cual Drupal mostrara todo el contenido del bloque.

Image
Bloque custom en Drupal

En este ejemplo simplemente queremos que nuestro bloque pinte un texto "Hola Mundo", para ello desde nuestro bloque retornamos un "Markup" con el texto:

Image
Block build markup

En este momento si colocamos en nuestro bloque en cualquier lugar de nuestra web, veremos el texto insertado.

Ejemplo completo de la clase:

 

<?php

namespace Drupal\a_test\Plugin\Block;

use Drupal\Core\Block\BlockBase;


/**
 * Provides a 'A test' Block.
 *
 * @Block(
 *   id = "a_test_hello_world",
 *   admin_label = @Translation("A Test Hello World"),
 * )
 */
class aTestHolaBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return [
      '#markup' => $this->t('Hola Mundo'),
    ];
  }

}

 

Y así es como podemos crear un bloque custom en Drupal 8/9: Mi primer bloque | AulaDrupal.

Para mas información visite nuestro blog.

Image
Módulo custom en Drupal 8/9 : Mi primer módulo
Módulo custom en Drupal 8/9 : Mi primer módulo

Lo bueno de Drupal es que es una comunidad muy activa, en la cual muchas personas contribuyen añadiendo funcionalidades para que el resto de las personas las puedan utilizar. Aun así, siempre surge la necesidad a la hora de crear o mantener un portal disponer de funcionalidades que o bien no existen o existen, pero no se adaptan a nuestras necesidades. En este caso podemos crearlas nosotros mismos de una manera muy sencilla. Así que vamos a aprender a crear un módulo custom en Drupal.

Antes de empezar, necesitamos saber que en Drupal existen dos tipos de módulos:

Image
Estructura básica

Los módulos contrib que son los que podemos encontrar en Drupal.org y que están disponibles para su uso por cualquier persona que los descargue y los módulos custom que son aquellos privados que se usan en un proyecto en concreto y no son públicos.

En nuestro caso crearemos nuestro módulo dentro de la carpeta custom, para ello simplemente creamos un nuevo directorio con el nombre de nuestro módulo. Algo a tener en cuenta y que es muy importante, es que el nombre de la carpeta será el nombre máquina que Drupal utilizará para llamar a las funciones dentro del módulo.

Para el ejemplo, crearemos un módulo que se llamara "A Test", por lo que crearemos el directorio con el mismo nombre.

Image
a_test module

Fíjese que siempre se tiene que añadir en minúsculas y los espacios se transforman en guiones bajos.

Una vez creada la carpeta del módulo necesitamos generar dentro de ella un fichero por el cual Drupal será capaz de detectar que el nuevo directorio es un nuevo módulo. El nombre del fichero tiene que contener el nombre máquina del módulo seguido de ".info.yml".

Image
Info.yml

El contenido de este archivo debe seguir una estructura básica la cual puede ser mucho más extensa dependiendo de la funcionalidad.

name: A Test
type: module
description: Mi primer módulo custom
package: custom
core_version_requirement: ^8.8 || ^9

Donde especificamos el nombre, tipo, descripción, package o grupo de módulos y la versión de Drupal donde nuestro módulo funciona.

Cuando este fichero ya está creado y rellenado, Drupal ya sabe que existe y si navegamos al listado de módulos desde dentro del propio portal, nuestro módulo ya es visible para instalar.

Image
Install

 

Y así es como podemos crear un módulo custom en Drupal 8/9.

Para mas información visite nuestro 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