hook_preprocess_node()

Descripción

La Preprocess Function sirve para modificar los comportamientos por defecto de Drupal, en este caso vamos a acceder al formulario por defecto y lo haremos disponible para colocarlo dentro de un nodo y posteriormente dentro de un paragarphs, así podremos imprimirlo en cualquier lugar y posición dentro de la web.

Si quieres aprender más sobre las preprocess functions

Instrucciones

  1. Creamos un contenido con los campos que acompañarán al formulario Ej.: detalles_contacto
     
  2. En nuestro archivo SUBTEMA.theme (que forma parte de los archivos de todos los temas y subtemas), copiaremos el código que está debajo y cambiaremos los nombres por los de nuestro contenido.
     
  3. Instalar el módulo Paragraphs y crear el Contenedor para nuestro "Contenido + Formulario". Ej.: bloque_formulario.
     
  4. Activamos el modo debug o depurador, para averiguar la sugerencia de la plantilla correspondiente al paragraphs.
     
  5. Creamos la plantilla y añadiremos dentro la variable que imprimirá nuestro "Contenido + Formulario"
     
  6. Creamos la plantilla para nuestro nodo "detalles_contacto" y ponemos la variables que imprimirán sus contenidos + Formulario

/** * Implements hook_preprocess_node() for node.html.twig. */

function SUBTEMA_preprocess_node(array &$variables) {

  if(isset($variables['node'])){
    $node = $variables['node'];
    if(($node->getType() == 'detalles_contacto')) {
      $message = \Drupal::entityTypeManager()
        ->getStorage('contact_message')
        ->create(array(
          'contact_form' => 'feedback', //ID(NOMBRE MAQUINA) del formulario
        ));
      $form = \Drupal::service('entity.form_builder')->getForm($message);
      $variables['feedback_form'] = $form;
    }
  }

}

Herramienta o plataforma

Notas

No exiten notas para mostrar