drupal 7 – ¿Cómo agrego una clase a la etiqueta HTML "body" mediante programación?

Pregunta:

Me gustaría agregar una clase CSS personalizada a la etiqueta <body> . Estoy usando Drupal 7 / Corolla.

¿Cómo puedo hacerlo mediante programación desde mi módulo personalizado?

Respuesta:

Las funciones de preproceso se pueden implementar desde módulos y temas.

La función de preproceso que necesita es hook_preprocess_html() y la variable a establecer es $variables['classes_array'] , que es una matriz que contiene todas las clases establecidas para el elemento <body> . El contenido del archivo html.tpl.php que Drupal usa por defecto (si el tema no usa un archivo de plantilla diferente) es el siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
  "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language; ?>" version="XHTML+RDFa 1.0" dir="<?php print $language->dir; ?>"<?php print $rdf_namespaces; ?>>

<head profile="<?php print $grddl_profile; ?>">
  <?php print $head; ?>
  <title><?php print $head_title; ?></title>
  <?php print $styles; ?>
  <?php print $scripts; ?>
</head>
<body class="<?php print $classes; ?>" <?php print $attributes;?>>
  <div id="skip-link">
    <a href="#main-content" class="element-invisible element-focusable"><?php print t('Skip to main content'); ?></a>
  </div>
  <?php print $page_top; ?>
  <?php print $page; ?>
  <?php print $page_bottom; ?>
</body>
</html>

En su módulo, simplemente implemente la función de preproceso de la siguiente manera:

function mymodule_preprocess_html(&$variables) {
  $variables['classes_array'][] = "new-class";
}

template_process () luego usa $variables['classes_array'] para completar $variables['classes'] con el siguiente código:

$variables['classes'] = implode(' ', $variables['classes_array']);

Es preferible usar una función de preproceso en un módulo si su sitio usa más de un tema, o si el tema establecido para su sitio no es el que usted creó. En este caso, puede configurar sus clases CSS personalizadas y no perderlas al actualizar el tema o simplemente cambiar el tema predeterminado utilizado por su sitio. Si su sitio usa solo un tema, y ​​ese tema es un tema personalizado que creó, entonces puede implementar la función de preproceso en su tema personalizado. A medida que mantiene el tema, las clases de CSS no se pierden al actualizar su tema.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım