logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Creación de configuraciones avanzadas del tema

19/06/2025, by Ivan

En la sección de administración de Drupal, cada tema tiene su propia página de configuración en la ruta admin/Appearance/Settings/nombreDelTema. Esta página contiene un formulario con configuraciones estándar, como "Configuración de la imagen del logo" y "Configuración del favicon".

En Drupal 8, los temas pueden modificar todo el formulario de configuración del tema añadiendo una función PHP ya sea en el archivo THEMENAME.theme o en el archivo theme-settings.php. En uno de estos archivos, el tema debe implementar la función hook THEMENAME_form_system_theme_settings_alter(&$form, $form_state). Consulta la "API de formularios en Drupal 8" y la lista completa de elementos Form y render, así como la documentación de hook_form_FORM_ID_alter() para entender toda la flexibilidad del API de formularios.

Aquí tienes un ejemplo: si tienes un tema llamado "foo" y quieres añadir un campo de texto con un valor predeterminado "blue bikeshed". Añade lo siguiente al archivo foo/foo.theme o al archivo foo/theme-settings.php:

function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
  // Solución temporal para un bug del núcleo que afecta a los temas administrativos. Ver issue #943212.
  if (isset($form_id)) {
    return;
  }

  $form['foo_example'] = array(
    '#type'          => 'textfield',
    '#title'         => t('Widget'),
    '#default_value' => theme_get_setting('foo_example'),
    '#description'   => t("Coloca este texto en el espacio del widget en tu sitio."),
  );
}

Para establecer un valor predeterminado para cualquier elemento de formulario añadido, necesitas agregar en el archivo config/install/THEME.settings.yml una línea simple: NOMBRE_CONFIGURACIÓN: VALOR_POR_DEFECTO. Para nuestro tema foo, edita el archivo foo/config/install/foo.settings.yml y añade la siguiente línea:

foo_example: blue bikeshed

En cualquiera de los archivos PHP de tu tema, puedes obtener el valor establecido por el usuario llamando a:

$foo_example = theme_get_setting('foo_example');

Ten en cuenta que los autores de temas pueden crear formularios dinámicos complejos usando la API avanzada de formularios (autocompletado, conjuntos de campos plegables).

Obtener valores de configuración en los archivos de tu tema

Para usar un parámetro en un archivo Twig, necesitas agregar una nueva variable al archivo Twig mediante la función de preprocesamiento en el archivo THEMENAME.theme.

$variables['varname'] = theme_get_setting('varname')

Por ejemplo, para añadir nuestro parámetro foo_example en el archivo node.html.twig, añádelo en el archivo foo.theme:

<?php
function foo_preprocess_node(&$variables) {
  $variables['foo_example'] = theme_get_setting('foo_example');
}

Luego, en el archivo node.html.twig puedes acceder a foo_example como cualquier variable normal de Twig:

{{ foo_example }}

Más información

Consulta el registro de cambios para Drupal 8: https://www.drupal.org/node/2382645

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.