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
- Creamos un contenido con los campos que acompañarán al formulario Ej.: detalles_contacto
- 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.
- Instalar el módulo Paragraphs y crear el Contenedor para nuestro "Contenido + Formulario". Ej.: bloque_formulario.
- Activamos el modo debug o depurador, para averiguar la sugerencia de la plantilla correspondiente al paragraphs.
- Creamos la plantilla y añadiremos dentro la variable que imprimirá nuestro "Contenido + Formulario"
- Creamos la plantilla para nuestro nodo "detalles_contacto" y ponemos la variables que imprimirán sus contenidos + Formulario
Código
/** * 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;
}
}
}