¿Cómo creo regiones personalizadas en un tema?

58

Quiero agregar una nueva área que abarcará todo el sitio. Describa el proceso de incluir esta nueva región en mi tema, si es posible, generalícela para agregar una nueva región personalizada.

palbakulich
fuente
blog de detalle: goo.gl/kD3TZu
Suresh Kamrushi

Respuestas:

68

Define regiones en su archivo .info de tema. Ver: Estructura del archivo .info

Luego debe colocar las etiquetas de plantilla relevantes en su archivo page.tpl.php.

Entonces, por ejemplo, si definió la región sidebaren su archivo .info de temas, entonces agregaría: <?php print render($page['sidebar']); ?>al lugar relevante en su page.tpl.php.

Camsoft
fuente
66
Si su tema no tiene un archivo page.tpl.php, puede copiar el valor predeterminado del módulo del sistema en su tema y modificar esa copia.
Mikey P
55
Omega no necesita la parte page.tpl.php, solo declara la región en .info Y BORRAR CACHES.
Capi Etheriel
20

Otro punto: ¡No te pierdas las regiones requeridas!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

Puede encontrar más información sobre esto en http://drupal.org/update/themes/6/7#closure .

Para aclarar este punto: si define sus propias regiones, debe definir todo lo que está utilizando, incluidas las que son necesarias. En otras palabras, no puede simplemente definir regiones adicionales: si define alguna, debe definirlas todas.

laura
fuente
9

Crear una región para un tema de Drupal 7 no es diferente de crear una región para una región de Drupal 6; Las diferencias entre Drupal 7 y las versiones anteriores son esencialmente:

  • Las regiones no se definen usando una mytheme_regions()función como se hizo en Drupal 5, pero se definen en mytheme.info usando regions[]directivas, que es lo que se hace también con los temas de Drupal 6.
  • Las regiones se representan utilizando la función Drupal render(), en lugar de imprimir el contenido de una variable.

Las regiones predeterminadas de Drupal 7 son las siguientes:

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

Los temas centrales de Drupal 7 ahora incluyen una región llamada 'resaltada' que usa la misma pantalla que el área de declaración de misión en Drupal 6; también incluyen una región llamada 'ayuda', que por defecto tiene el mismo contenido de la $helpvariable utilizada por Drupal 6.

kiamlaluno
fuente
4

Las regiones del tema se definen en su archivo .info del tema; consulte los documentos . Simplemente agregue una línea con regions[corner] = Cornerpara obtener una región de la esquina.

Luego debe editar el archivo page.tpl.php y agregar <php print render($corner); ?>donde desea que se muestre la región. Si su tema no tiene page.tpl.php, copie desde el tema base o desde el módulo del sistema.

Errores comunes:

  • Si el archivo theme.info no tenía regiones declaradas, estaba usando regiones predeterminadas de Drupal. Si desea agregar, deberá volver a declarar las regiones predeterminadas. Por supuesto, puede eliminar cualquier región, pero debe admitir las regiones requeridas. Ver los documentos de nuevo.

  • Los cambios en el archivo .info o la adición de nuevos archivos al tema (como page.tpl.php) solo se notarán después de borrar las cachés.

  • Omega, un tema base muy popular, no necesitará ningún cambio en page.tpl.php, solo el archivo .info. Pero tendrá que visitar la configuración del tema en la interfaz de usuario y asignar su región a una zona.

Capi Etheriel
fuente
Este es un resumen de las respuestas con dificultades comunes.
Capi Etheriel
¿Es regions[content] = Contentla única región requerida en D7? drupal.org/node/171205#regions parece dar a entender esto, pero luego drupal.org/node/171224 dice que las regiones son necesarios content, help, page_topypage_bottom
Jim Garrison
No sé si Drupal busca alguna de las regiones, pero contentdefinitivamente es muy importante. helpes compatible con el núcleo (para generar mensajes de ayuda), page_bottomes probablemente donde se imprime js inferior y page_topparece usarse para barras de navegación como las barras de herramientas principales.
Capi Etheriel
2

Siga los pasos a continuación para crear una región personalizada en su tema:

  1. Vaya a su archivo theme.info y agregue esta línea.

    regions[machine_name_of_your_region] = Name of your region
  2. Aunque también puede llamar a bloques de región en la plantilla de nodo, generalmente agregará la región a la plantilla de página del tema. Esto suele ser page.tpl.php, o si tiene archivos de plantilla personalizados para diferentes páginas, edítelos también. La nueva región aparecerá solo en las páginas creadas alrededor de la plantilla a la que agrega la nueva región. Pégalo donde quieras que aparezca tu nueva región.

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
  3. Configuración - Rendimiento - Borrar todas las cachés

Astha chauhan
fuente
0

Crear una nueva región en tema

Solo necesita definirlo en dos archivos.

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

Ahora renderiza esta región

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

Ahora borra todo el caché, aquí tienes, tienes una nueva región en tu tema. Puede verlo en su página de configuración de bloque.

Para más información visite http://drupal.org/node/171205

gsjha
fuente