Landing Page

Landing Page Drupal | Plantillas Twig (Parte 2) - Bootstrap y Flexbox

Video de Youtube
URL de Video remoto

     Debido a que estamos trabajando con Bootstrap 5, para la creación de nuestra Landing Page personalizable en Drupal 8/9/10, hoy utilizaremos las clases de Bootstrap 5 compatibles con Flexbox; de esta manera, nuestro diseño quedará adaptado a múltiples dispositivos (Responsive), sin la necesidad de manipular nuestra hoja de estilos.

     Si analizamos el comportamiento que esperamos obtener para la visualización de nuestra Landing Page, al acceder desde un ordenador, veremos que en la parte central, los elementos deberían presentarse dentro de tres columnas, las dos primeras para la imagen e información del producto, y la última, a todo el ancho del contenido, donde se muestra el formulario para la realización de los pedidos.

 

Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Al acceder a la Página Oficial de Bootstrap, en el apartado de Utilidades, dedicado a FLEX HAZ CLIC AQUI, podremos explorar el listado de clases y sus comportamientos, para facilitarnos la aplicación de casi todas las opciones necesarias en nuestros diseños resposivos, sin demasiados cambios en las hojas de estilos css.

     Si ya conocías Bootstrap, sabrás que, añadiendo una o varias clases dentro de cualquier contenedor o etiqueta html, obtendrás el mismo resultado que si aplicaras varias líneas de código css; esto implica un ahorro considerable dentro de las tareas de diseño, además de ofrecer una amplia documentación y varios ejemplos, que podrás encontrar, tanto dentro de la página oficial, como el muchas otras disponibles en internet.

Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora que ya sabemos cómo documentarnos, sobre el uso de las clases de Bootstrap y Flexbox, volvamos a explorar el archivo node--landingpage--full.html.twig, responsable de mostrar nuestra plantilla.

     Recuerda, que hemos creado esta plantilla, gracias a que activamos el modo Debug o Depurador de Drupal, explicado en capítulos anteriores del curso.

     Si prestamos atención en el código que forma, la parte superior de la plantilla, donde hemos añadido ya la imagen de cabera y el texto que aparece justo debajo de ella, encontraremos algunas de las clases de Bootstrap y Flexbox que acabamos de comentar.

{% if content.field_cabecera_landing|render is not empty %}
<div class="d-flex container-fluid" lc-helper="background" style="height:50vh;background:url({{ file_url(content.field_cabecera_landing[0]['#media'].field_media_image.entity.uri.value) }})  center / cover no-repeat;">
  {% endif %}
</div>
<div class="container p-5 bg-light" style="margin-top:-100px">
  <div class="row">
    <div class="col-md-4 text-center align-self-center">
      <div class="lc-block border-end border-2 ">
        <div editable="rich">
          <p class="display-4 text-secondary">WHY?</p>
        </div>
      </div><!-- /lc-block -->
    </div><!-- /col -->
    <div class="col-md-8">
      <div class="lc-block ">
        <div editable="rich">
          <p class="display-4">{{ label.0 }}</p>
        </div>
      </div><!-- /lc-block -->
    </div><!-- /col -->
  </div>

   Explicación

     d-flex: Es la primera de las clases que deberíamos añadir en nuestra etiqueta HTML, para poder emplear la combinación de Flex y Boostrap; añadirla es el equivalente a escribir la propiedad display: flex, dentro de nuestra hoja de estilos.

     container / container-fluid: tiene la misma funcionalidad que ya conoces de Boostrap, y que en este caso, añadirá la propiedad padding, configurada por defecto para Drupal, cuando utilizamos el tema basado en Boostrap.

     p-5: Esta clase es la encargada de modificar la propiedad padding, tienes varios valores disponibles, además de la opción de utilizarla, especificando si quieres aplicar un padding-top pt-5, o padding buttom pb-5, por ejemplo.

     align-self-center: esta clase, como su nombre lo indica, se encargará de centrar los elementos, dentro del contenedor.

     col-md-4: esta es una de las clases que ya deberías conocer, por versiones anteriores de bootstrap, encargada de adaptar el tamaño de la columna, en los dispositivos de tamaño medio (Tablets, Ipads, etc.)

     Si quieres profundizar más sobre las clases disponibles y su implementación, te recomiendo visitar la página oficial de Boostrap. HAZ CLIC AQUI.

   Añadiendo cambios en la plantilla

     Es el momento de continuar con el resto de cambios necesarios, para seguir ajustando nuestra Landing Page, hasta conseguir que se parezca a nuestra propuesta de diseño.

     En esta ocasión, vamos a sustituir en nuestra plantilla, todo el espacio que ocupa el texto central, para dejarle paso, a dos nuevas filas, donde añadiremos los campos correspondientes, encargados de mostrar las imágenes e información de los productos, además del formulario para los peidos.

     He añadido un para de clases adicionales, sólo para que sea más fácil de entender, donde colocaremos cada uno de los elementos.

     El resultado final, con el nuevo cambio, debería ser parecido al siguiente código:

  <div class="row contenido-central">
     <div class="col-md-12">
       <div class="row info-productos">
            LOS PRODUCTOS AQUI
       </div>
       <div class="row formulario-pedidos">
            EL FORMULARIO AQUI
       </div>
     </div>
  </div>
</div>
Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora ya tenemos claro, cuál debería ser la estructrura para conseguir el resultado esperado en mi Landing Page, el problema con el que nos encontramos, es que nuestra plantilla sólo tienes dos campos, con los que podamos jugar, field_cabecera_landingfield_contenidos_landing, ya que hemos optado, por el uso de paragraphs, para facilitar la personalización de sus contenidos.

     Si volvemos a la parte del código donde imprimimos nuestra imagen, podremos concluir, que lo que necesitamos para obtener el resto de valores de nuestra página, es añadir la variable que imprime el campo global de los paragraphs y a continuación, añadir las plantillas correspondientes, para cada uno de los elementos contenidos dentro de éste.

     Lo primero que deberíamos hacer será remover la parte del código donde estarán las imágenes, información y el formulario, para añadir dentro sólo el campo global de los paragraphs.

     Por ahora, nuestra plantilla principal, node--landingpage--full.html.twig, debería quedar con el suguiente resultado:

  <div class="row contenido-central">
     <div class="col-md-12 p-5">
        {{ content.field_contenidos_landing }}
     </div>
  </div>
</div>

     Una vez añadido el código anterior, si visitamos nuestra Landing Page, deberíamos ver en pantalla, algo parecido a la siguiente imagen:

Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si todo ha ido correctamente, y ves en pantalla un resultado parecido al anterior, es el momento de inspeccionar los elementos y crear las plantillas correspondientes a cada paragraphs, para cotinuar con el resto de modificaciones.

Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Plantilla principal para la landing page

     El código final de la plantilla general para la landing (node--landingpage--full.html.twig), que incluye además, el campo de selección para el color, gracias al módulo Color Field, será :

{{ attach_library('bootstrap_barrio/node') }}

{%
  set classes = [
    'node',
    'node--type-' ~ node.bundle|clean_class,
    node.isPromoted() ? 'node--promoted',
    node.isSticky() ? 'node--sticky',
    not node.isPublished() ? 'node--unpublished',
    view_mode ? 'node--view-mode-' ~ view_mode|clean_class,
    'clearfix',
  ]
%}
<article{{ attributes.addClass(classes) }}>
  <header>
    {{ title_prefix }}
    {% if label and not page %}
      <h2{{ title_attributes.addClass('node__title') }}>
        <a href="{{ url }}" rel="bookmark">{{ label }}</a>
      </h2>
    {% endif %}
    {{ title_suffix }}
    {% if display_submitted %}
      <div class="node__meta">
        {{ author_picture }}
        {% block submitted %}
          <em{{ author_attributes }}>
            {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
          </em>
        {% endblock %}
        {{ metadata }}
      </div>
    {% endif %}
  </header>
  <div{{ content_attributes.addClass('node__content', 'clearfix') }}>

    {% if content.field_cabecera_landing|render is not empty %}
    <div class="d-flex container-fluid" lc-helper="background" style="height:50vh;background:url({{ file_url(content.field_cabecera_landing[0]['#media'].field_media_image.entity.uri.value) }})  center / cover no-repeat;">
      {% endif %}
    </div>
    <div class="container p-lg-5" style="margin-top:-100px;
                                         background-color: {{ content.field_color_fondo_landing.0 }}"
     >
      <div class="row">
        <div class="col-md-4 text-center align-self-center">
          <div class="lc-block border-end border-2 ">
            <div editable="rich">
              <p class="display-4 text-secondary">WHY?</p>
            </div>
          </div><!-- /lc-block -->
        </div><!-- /col -->
        <div class="col-md-8">
          <div class="lc-block ">
            <div editable="rich">
              <p class="display-4">{{ label.0 }}</p>
            </div>
          </div><!-- /lc-block -->
        </div><!-- /col -->
      </div>
      <div class="row contenido-central">
         <div class="col-md-12 p-md-5">
            {{ content.field_contenidos_landing }}
         </div>
      </div>
    </div>

  </div>
</article>

   Plantilla para la imagen y el texto del producto

     El código correspondiente a la parte superior, donde mostramos la imagen del producto, acompañada de un título y un párrafo, (paragraph--bloque-imagen-y-textos.html.twig) será:

{%
  set classes = [
    'paragraph',
    'd-lg-flex',
    'paragraph--type--' ~ paragraph.bundle|clean_class,
    view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class,
    not paragraph.isPublished() ? 'paragraph--unpublished'
  ]
%}
<style>
  @media (min-width: 992px) {
    .field--name-field-imagen-producto {
      width: 550px;
    }
  }
</style>
{% block paragraph %}
  <div{{ attributes.addClass(classes) }}>
    {% block content %}
      <div class="row no-gutters d-flex">
        <div class="imagen-producto d-sm-column">
          {{ content.field_imagen_producto }}
        </div>
      </div>
      <div class="row no-gutters d-flex">
        <div class="texto-producto d-sm-column">
          <h2>{{ content.field_texto_superior.0 }}</h2>
          <p>{{ content.field_textos_producto.0 }}</p>
        </div>
      </div>
    {% endblock %}
  </div>
{% endblock paragraph %}

   Plantilla para el Bloque formulario

     Para la plantilla, encargada de modificar el aspecto gráfico correspondiente al formulario, que además incluye la etiqueta html <hr />, con algunos estilos en línea, (paragraph--bloque-formulario.html.twig), será:

{%
  set classes = [
    'paragraph',
    'd-flex flex-column',
    'paragraph--type--' ~ paragraph.bundle|clean_class,
    view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class,
    not paragraph.isPublished() ? 'paragraph--unpublished'
  ]
%}
{% block paragraph %}
  <div{{ attributes.addClass(classes) }}>
    {% block content %}
      <hr style="height: 5px; background-color: #333333;margin-top: 40px; margin-bottom: 40px"/>
      <div class="titular text-align-center flex-row"><h2>{{ content.field_titulo_formulario }}</h2></div>
      <div class="formulario">
        {{ content.field_formulario_bloque }}
      </div>
    {% endblock %}
  </div>
{% endblock paragraph %}

 

Landing Page Drupal | Plantillas Twig (Parte 1) - Campos condicionales

Video de Youtube
URL de Video remoto

     Llegados a este punto, hoy nos ocuparemos de cambiar el aspecto de nuestra Landing Page, para que comience a verse como nuestra propuesta gráfica. Para ello, lo primero que deberíamos hacer es asegurarnos de que estén todos lo elementos necesarios y los campos, con la información de prueba, que nos permitirá comprobar que todo funciona y se muestra, como esperamos.

    He aprovechado para añadir las imágenes correspondientes, para conseguir un resultado más acorde con el diseño y, si haz comenzado con una instalación desde cero, como hice yo, antes de pasar a la modificación de la plantilla, tu Landing Page, debería tener un aspecto como la siguiente imagen.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   Modificación de bloques

     Por defecto, cuando realizamos una instalación nueva de un theme en Drupal, es muy frecuente encontrarnos con varios elementos colocados en posiciones incorrectas o que simplemente no necesitamos, para nuestros contenidos. En este caso, tendremos que modificar los bloques, que son el equivalente a las "Areas", donde se colocan los contenidos.

     Si ya tienes experiencia previa con Drupal, sabrás como hacerlo, si no es así, tendrás que dirigirte a la página de configuración de los bloques, ubicada en "/admin/structure/block", reorganizar el contenido y desactivar aquellas funcionalidades o contenidos que no vayas a necesitar.

     El aspecto de la página de bloques, es el de la siguiente imagen.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Una vez que hayamos terminado, con las correcciones relacionadas a los bloques, y antes de pasar a la fase de modificación de nuestra plantilla, el aspecto del tipo de contenido Landing Page, debería corresponder a la siguiente imagen:

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   Activando el modo Debug o Depurador de Twig en Drupal.

     Ha llegado el momento de comenzar con la personalización de nuestra plantilla, para ello activaremos el modo debug o depurador de Drupal.

     Existen varias maneras de activarlo, pero yo prefiero seguir los pasos de esta guía. HAZ CLIC AQUÍ.

     Recuerda, que para que sean efectivos estos cambios, será necesario borrar la cache de Drupal y actualizar la base de datos. Puedes hacerlo por medio de la interfaz de usuario de Drupal, o como he hecho yo, utilizando los comando de "drush cr" y "drush updb"

Imagen
Drush Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si hemos realizado bien los pasos, para activar el modo Debug o Depurador de Twig, al hacer clic en la tecla F12 o seleccionar inspeccionar, haciendo clic derecho sobre la página, deberíamos ver las sugerencias que nos ofrece Drupal, para nombrar nuestra plantilla y poder comenzar con la realización de los cambios.

Imagen
Landing Page Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Permisos y visualización de paragraphs

     Ahora podríamos decir que estamos verdaderamente, preparados para comenzar con las modificaciones de nuestra Landing Page, pero antes de "ponernos manos a la obra", tenemos que hacer una comprobación muy importante, ya que, hasta el momento, hemos estado trabajando dentro de la interfaz de Drupal, gracias a nuestro usuario administrador, pero los usuarios finales, no tendrán este tipo de acceso, es decir, que al visitar nuestra web, lo harán como usuarios anónimos. Por lo que será necesario comprobar si nuestra Landing Page está accesible y/o visible, para todos aquellos que la visiten.

     Sin cerrar nuestra sesión en el navegador en el que estamos, abriremos una ventana en "Modo Incógnito" y copiaremos la dirección de nuestra Landing Page, para ver el resultado... 

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Efectivamente, nos encontramos con el primer problema durante las tareas de desarrollo, ya que nuestro contenido no está visible para el resto de usuarios que visita nuestra web. Así que vamos a realizar varias comprobaciones, para solucionarlo.

   Causas y soluciones de Contenido no visible en Drupal

     Causa 1 - Contenido no publicado. 

     Aunque por defecto, en Drupal, todos los contenidos están publicados, siempre podremos modificar dicho comportamiento o estado del contenido, desde el listado dentro de administrar contenidos, en la url "/admin/content", o desde el mismo contenido afectado, desmarcando la opción Publicar, que se encuentra al final de este.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Causa 2 - Permisos de acceso en los Paragraphs.

     Otra de las posibles causas, por las cuales no podemos ver nuestra Landing Page con un tipo de usuario anónimo, puede estar relacionada con los permisos de acceso relacionados específciamente con los Paragraphs, ya que la estructura principal de nuestro tipo de contenido, está formado por varios Tipos de Paragraphs.

     Para confirmar esta información, primero comprobaremos si está activado el módulo encargado de gestionar esta clase de permisos, para ello, volveremos a la página de administración de los módulos, "/admin/modules", y luego buscaremos los módulos relacionados, escribiendo paragraphs en el buscador.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Ahora que hemos comprobado, que está activado el módulo "Paragraphs Type Permissions", encargado de gestionar los permisos de visualización, para los Paragraphs, la próxima comprobación para corregir el fallo, será dirigirnos a la pantalla de configuración de los permisos en Drupal, ubicada en la url " /admin/people/permissions", ahora, buscaremos el apartado donde están los paragraphs y sus permisos, podremos hacerlo con el buscador del navegador, presionando las teclas Ctrl + F

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   A continuación, buscaremos los paragraphs que nos interesa mostrar para los usuarios anónimos y marcaremos la opción de "Ver contenido", en cada uno de ellos. Finalmente, guardaremos los cambios, borraremos la cache de Drupal y volveremos al navegador en Modo Incógnito, para comprobar si se ha corregido el fallo de visualización.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     A partir de este momento, seguiremos trabajando en el Modo Incógnito, para que sea vea todo más limpio. Así que seleccionaremos Inspeccionar, haciendo clic derecho en el ratón, y a continuación, buscaremos la sugerencia al nombre de plantilla, que mejor se ajuste a nuestras necesidades y a continuación, buscaremos la plantilla modelo y la renombraremos, dentro de la carpeta Templates, en nuestro Theme personalizado.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Como podemos ver, en la sugerencia, buscaremos la plantilla modelo dentro de la carpeta Template del theme Bootstrap, y a continuación, copiaremos el archivo dentro de la carpeta Template, en nuestro Theme Personalizado, con el nombre elegido del grupo propuesto al hacer clic en inspeccionar.

     Debido a que nuestra plantilla está compuesta por un campo dentro del tipo Landing Page y varios Paragraphs, y para tener el mayor grado de control en todos sus elementos, vamos a necesitar de varias plantillas. 

     La que acabamos de crear, será la encargada de modificar el aspecto a nivel global o externo y, posteriormente, añadiremos una plantilla por cada uno de los paragraphs que forman la estructura, de esta manera, cada elemento será independiente a nivel gráfico y de comportamiento, en relación con la información que se muestra en cada uno de ellos.

   Comprobación de la plantilla

     Existe una forma muy simple para comprobar si hemos creado y nombrado bien, la plantilla con la que vamos a trabajar, para ello, solo hay que añadir cualquier palabra o símbolo, al lado de la variable {{ content }} de la plantilla, borrar la cache de drupal y comprobar si se imprime la palabra o símbolo que hemos añadido al visitar la página.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

Landing Page Drupal | Generar subtheme bootstrap

Video de Youtube
URL de Video remoto

     Ahora que ya hemos creado nuestro tipo de contenido LandingPage, es el momento ideal, para comenzar a personalizar su aspecto, en Drupal, el responsable de la presentación gráfica de los contenidos es el Theme o el Subtheme que tengamos instalado. Por defecto, Drupal ya viene con varios themes, disponibles, que podríamos personalizar mediante la interfaz de usuario, pero en nuestro ejercicio, vamos a generar un Subtheme, basándonos en el theme Bootstrap barrio, que hemos descargado previamente, como parte de los requerimientos, que analizamos en el primer capítulo del curso.

   Diferencia entre Theme y Subtheme

     Como he mecionado antes, el theme es el encargado de la parte gráfica, entonces, ¿por qué no lo activamos y modificamos su código directamente?, es importante que sepas, que NUNCA DEBES MODIFICAR DIRECTAMENTE EL CÓDIGO DE UN THEME O DE UN MÓDULO EN DRUPAL, la razón, es que si haces eso, perderías todos los cambios al actualizar Drupal, ya que en cada actualización, suele repararse fucionalizades fallidas o se optimiza el código, eliminando aquellos fragmentos y funciones desactualizadas.

     Por esta razón, cuando quieras realizar personalizaciones en un Theme, debes generar un Subtheme, en el que podrás tener disponibles, la funcionalizades del theme o base theme, y al mismo tiempo, añadir tus propios cambios de CSS o del comportamiento de tus plantillas.

   Cómo generar un subtheme Bootstrap barrio desde consola

     Paso 1 - Permisos y posición

       Lo primero que necesitaremos hacer, antes de poder generar un subtheme, desde la consola, es colocarnos en la carpeta themes, de nuestra instalación de Drupal.

       Así, que arrancaremos nuestros contenedores de Docker, si estás siguiendo el curso exactamente como yo, y a continuación, te colocarás en la carpeta donde deberías tener bootstrap_barrio.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Dentro de la carpeta bootstrap_barrio, existe un archivo, con el código que nos permitirá generar el subtheme, pero antes de poder ejecutarlo, debemos asegurarnos de que cuenta con los persmisos necesarios, así que el siguiente paso será añadirlo, utilizando el siguiente código:

chmod +x scripts/create_subtheme.sh
Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   Paso 2 - Generar el subtheme

     Una vez hayamos otorgado los permisos al archivo, podremos ejecutar el código que nos generará el subtheme, para ello, sin movernos de dónde estamos, escribiremos el comando:

./scripts/create_subtheme.sh

     A continuación, veremos en la consola, una serie de preguntas relacionada con los datos de nuestro subtheme, que deberemos ir completando hasta el final del proceso. 

Imagen
Curso Landing Drupal 9 | www.drupaladicto.com - Consultor especializado en Drupal y Symfony
Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     La primera de las preguntas, está relacionada con el nombre_maquina de nuestro subtheme o tema personalizado, tal y como podemos ver en el texto de ejemplo, el nombre puede estar compuesto por una o varias palabras, unidas por un guion bajo. En mi caso, utilizaré landing_theme como nombre para mi subtheme, pero tú puedes utilizar el que prefieras.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Al contestar la primera pergunta, haremos clic y veremos en la pantalla, la siguiente, que está relacionada con el nombre que se añadirá en el archivo .info.yml, y que veremos al entrar al listado de themes disponibles en la url "/admin/appearance", esta vez, podremos escribirlo cómo queramos. 

     En mi caso, yo utilizaré Landing Page Theme

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony
Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Si abrimos nuestro proyecto en el navegador y buscamos en la url "/admin/appearance", encontraremos en el apartado de Themes desinstalados, el nuevo subtheme que acabamos de generar desde la consola.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   Activación y personalización de configuración

     Ahora es el momento de activar el sutheme, comprobar que no hay ningún error en nuestro Drupal, y por ahora, lo único que vamos a modificar de la configuración por defecto es el uso del Contenedor Fluido, para que la cabecera de nuestra LandingPage, ocupe todo el ancho de la pantalla, tal y como se define en la propuesta gráfica.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Ahora que ya tenemos nuestro subtheme activado sin ningún error, es el momento de crear una LandingPage, con todos los datos de prueba, para comenzar con su personalización, una vez hayamos creado este primer contenido, activaremos el modo debug de Drupal, para saber el nombre de la plantilla correspodiente al tipo de contenido y a continuación, comenzaremos a modificarla e ir añadiendo los valores y campos correspondientes, siguiendo nuestra estructura inicial.

     Para conocer más acerca de cómo trabajar con Themes y plantillas en Drupal, HAZ CLIC AQUÍ

     Para conocer los pasos de activación del modo debug o depurador de Drupal HAZ CLIC AQUI

Landing Page Drupal | Creación tipo de contenido

Video de Youtube
URL de Video remoto

     Ahora que ya hemos activado algunos módulos, necesarios para este proyecto, es el momento de comenzar con la configuración del tipo de contenido Landing Page, para ello, nos dirigiremos a la url "/admin/structure/types/add", o seleccionaremos desde el menú administrador, gracias al módulo Admin Toolbar, la opción de Añadir nuevo tipo de contenido, que nos abrirá la página de configuración, donde podremos comenzar con la definición de todas las características y campos para nuestra LandingPage.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     En la primera pantalla de configuración, escribiremos el nombre del nuevo tipo de contenido LandingPage, y a continuación seleccionaremos las opciones básicas, como son:

- Opciones de publicación: Publicado

-  Opciones del menú: Main Navigation o Menú principal

    Desmarcaremos el resto de las opciones, en todas las pestañas, y a continuación comenzaremos con la configuración, haremos clic en el botón inferior de Guardar y administrar campos, que nos llevará a la siguiente pantalla, donde podremos añadir todos los campos, para cumplir con todas las funcionalidades de la propuesta gráfica inicial.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     En el capítulo de los requerimientos, llegamos a la conclusión de que, si queríamos ofrecer la usuario la flexibilidad suficiente para personalizar esta LandingPage, tendríamos que ayudarnos del módulo paragraphs, que nos permitirá cumplir con esta posibilidad, así que el primer cambio que haremos a nuestro tipo de contenido, será borrar el campo body, que viene por defecto y en su lugar añadiremos dos nuevos campos:

- CabeceraLanding: tipo Multimedia, gracias a los módulos Media y Media Library

- ContenidosLanding: tipo Paragraphs, en el que añadiremos el resto de componentes personalizables.

   Paso 1 - Configuración Cabecera Landing

     En el caso de la imagen de cabecera para nuestra landing, simplemente, una vez añadido el tipo de campo multimedia, gracias a la activación del módulo, procederemos a definir el resto de configuraciones relacionadas, como reorganizar los campos que se mostrarán en el formulario de creación de la cabecera, definir si queremos un valor por defecto para este campo y ocultar el modo de vista resumen y las etiquetas en la pestaña de gestionar presentación.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

   Paso 2 - Contenidos Landing

     En el caso de los paragraphs, que ocuparán el campo de ContenidosLanding, tendremos que hacer varios cambios, el primero de ellos será crear los Paragraphs que deberán estar disponibles, dentro del campo ContenidosLanding, y a continuación, los añadiremos al campo dentro del tipo de contenido LandingPage, para que el usuario pueda decidir cómo y cuándo añadirlos a su landing personalizada.

     Al igual que en el paso anterior, para poder trabajar con los paragraphs, es necesario asegurarnos de tener activados, al menos dos módulos esenciales, el Paragraphs y Paragraphs Type Permissions, una vez activados, podremos comenzar a añadir los paragraphs que vamos a implementar, desde al url "/admin/structure/paragraphs_type/add"

     El primer paragraphs que añadiremos será, el que permitirá añadir la imagen del producto, junto a los textos que se muestran en la propuesta gráfica.

     En este caso, ambos campos dentro del paragraph solo deberían permitir un valor, para cada uno, la imagen será del tipo Multimedia, para que pueda reutilizarse desde la libería y el campo de texto, será del tipo largo con formato, para que puedan editarse los textos, con varios estilos configurables desde el CKEditor.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Una vez añadidos los campos, dentro del paragraph, al que hemos llamado Bloque Imagen y textos, podremos configurar el campo correspondiente, dentro del tipo LandingPage, para que pueda ser seleccionado posteriormente.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony
Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     El siguiente paragraphs que vamos a añadir, será el que permita al usuario, escribir y/o editar, la frase que se mostrará junto al título de la página, en la parte superior de ésta. 

     Para ello, al igual que con el bloque anterior, crearemos el nuevo tipo de paragraphs y a continuación, lo marcaremos como disponible, dentro del campo Contenidos Landing.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Una vez configurado el nuevo campo, para la frase que se mostrará junto al título de la página, el campo ContenidosLanding, debería tener un aspecto como el siguiente, para que ambos bloques "paragraphs", estén disponibles al momento de generar un nuevo contenido de este tipo.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     El tercer paragraphs que vamos a añadir, para que esté dentro de las opciones del contenido, será el relacionado con el fomulario de pedidos, desde la misma LandingPage, para ello, esta vez, añadiremos dos campos, uno de tipo texto simple, que permitirá agregar el título del bloque, que se mostrará sobre el formulario y a continuación un nuevo campo del tipo webform, que nos aparece, gracias a que hemos activado el los módulos webform y webform ui, previamente.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Aunque hemos añadido un campo del tipo webform, todavía no hemos configurado el fomulario que vamos a utilizar en nuestra LandingPage, siguiendo la propuesta de diseño, eso lo veremos en el próximo capítulo.

     Por ahora, añadiremos este nuevo paragraphs, al campo dentro de LandingPage, para que esté disponible, como el resto, dentro del campo ContenidosLanding.

     El Bloque formulario, que acabamos de crear, debería tener el siguiente aspecto por dentro.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Si repasamos un poco, el campo ContenidosLanding, debería tener en este momento, los tres paragraphs marcados como permitidos, para que el usuario pueda decidir cuáles activará y la posición para cada uno de ellos, al momento de crear una nueva LandingPage.

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

     Por ahora, para organizar un poco la estructura, reorganizaremos los campos dentro de la pestaña Administrar visualización del formulario, dentro de LandingPage, para que los tres compontentes fundamentales Título, Cabecera Landing y Contenidos Landing, se muestren en primera posicíon al momento de crear una nueva LandingPage, el aspecto debería ser como la siguiente imagen. 

Imagen
Curso Landing Page Drupal 9 | Drupaladicto consultores especializados en Drupal y Symfony

Landing Page Drupal | Requerimientos

Video de Youtube
URL de Video remoto

     Antes de comenzar a desarrollar un proyecto, ya sea con Drupal o con cualquier otra herramienta, es muy recomendable, establecer desde el inicio, cuáles serán las posibles necesidades o requerimientos, con el fin de poder alcanzar nuestro objetivo final.

   Requermientos a nivel de entornos

     En nuestro caso, trabajaremos en un proyecto Drupal 9, así que algunos de los requemientos fundamentales, que deberíamos tener disponibles, tanto en el entorno de desarrollo como en el de producción, para poder publicar la web, son los siguientes:

  • Servidor Apache o Ngnix
  • Servidor MySql
  • Php 8.1 o superior
  • Posibilidad de ejecutar comando de Composer, que es un manejador de librerías Php

     Recomendación:

  • Uso de Docker (Para evitar problemas de compatibilidad entre entornos)

   Requerimientos a nivel de Drupal

   Requerimientos basados en la propuesta gráfica

     Ahora que ya nos hemos asegurado de cumplir todos los requerimientos anteriores y que podremos instalar nuestro proyecto Drupal 9, para comenzar a desarrollar nuestra Landing Page o página de aterrizaje, basándonos en una propuesta gráfica, es el momento de analizar, dicha propuesta, para identificar las mejores opciones, relacionadas con los módulos y themes de Drupal, que necesitaremos, para lograr la realización de proyecto.

Imagen
Curso Landing Drupal 9 | www.drupaladicto.com - Consultor especializado en Drupal y Symfony

   Módulos requeridos

     Partiendo de esta propuesta gráfica, comenzaremos con algunos módulos que nos facilitarán las tareas de desarrollo, así como las relacionadas con las funcionalidades del proyecto una vez terminado.

     A continuación, vamos a nombrar los módulos que utlizaremos durante todo el proyecto:

  • Admin Toolbar: Nos ayudará a navegar a través de la web, usando la interfaz de Drupal
  • Pathauto: Nos permitirá configurar las urls amigables, de forma automática para nuestra landing page.
  • Paragraphs: Nos permitirá crear una estructura personalizable para los elementos de la landing page.
  • Webform: Nos permitirá configurar un formulario, con su propia bandeja de entrada y otras funcionalidades.
  • Twig Teak: Nos permitirá añadir en la plantilla, bloques y otros elementos, sin la necesidad de utilizar funciones Preprocess
  • Social Media Links Block and Field: Nos permitirá añadir un bloque para las redes sociales, fácil de configurar
  • Boostrap Barrio: Para crear un subtheme personalizado
  • Media y Media Library: Para gestionar las imágenes, con posiblidad de reutilizarlas
  • Color field: Nos permitirá añadir un selector de colores, para que usuario pueda personalizar algunos elementos

   Creación de Landing Page o página de aterrizaje

     Paso 1 - Creación del tipo de contenido

       Para nuestro ejemplo, trabajaremos con un tipo de contenido nuevo, al que llamaremos landing_page, de esta manera, tendremos control total sobre sus componentes, campos, modo de visualización, etc.

       Ya que hemos activado todos los módulos, podremos comenzar a utilizarlos a medida que vayamos avanzando. Para ofrecer una mejor experiencia de usuario, es decir, que nuestro cliente tenga la posibilidad de crear, editar o publicar fácilmente su continido, dividiremos en dos partes sus componentes.

     Campo cabeceraLanding: Este campo, de tipo Media estará en la raíz del contenido y será el encargado de cargar la imagen de cabecera, para nuestra landing page. Al ser de tipo Media, ofrecerá la posibilidad de reutilizar imágenes existentes, desde la librería de imágenes, evitando sobrecarga de archivos y ahorro de tiempo en su implementación.

     Campo contenidosPágina: Este campos de tipo Paragraphs, llevará, en tu interior, el resto de elementos que se podrán añadir en la página, para que el cliente, pueda decirdir cuántos elementos necesitará, así como el ubicación de cada elemento y algunas personalizaciones, como, por ejemplo, el color de fondo. 

Imagen
Curso Landing Drupal 9 | www.drupaladicto.com - Consultor especializado en Drupal y Symfony