web-dev-qa-db-fra.com

Comment créer des régions personnalisées dans un thème?

Je veux ajouter une nouvelle zone qui sera à l'échelle du site. Décrivez le processus d'intégration de cette nouvelle région dans mon thème, si possible généralisez-la pour ajouter une nouvelle région personnalisée.

58
palbakulich

Vous définissez des régions dans votre fichier thème .info. Voir: Structure du fichier .info

Vous devez ensuite placer les balises de modèle pertinentes dans votre fichier page.tpl.php.

Ainsi, par exemple, si vous avez défini la région sidebar dans votre fichier de thèmes .info, vous ajouteriez alors: <?php print render($page['sidebar']); ?> à l'endroit approprié dans votre page.tpl.php.

68
Camsoft

Un autre point: ne manquez pas les régions requises!

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

Plus d'informations à ce sujet sur http://drupal.org/update/themes/6/7#closure .

Pour clarifier ce point: si vous définissez vos propres régions, vous devez définir tout ce que vous utilisez, y compris celles qui sont requises. En d'autres termes, vous ne pouvez pas simplement définir des régions supplémentaires: si vous en définissez une, vous devez toutes les définir.

20
laura

La création d'une région pour un thème Drupal 7 n'est pas différente de la création d'une région pour une région Drupal 6; les différences entre Drupal 7 et les versions précédentes sont essentiellement:

  • Les régions ne sont pas définies en utilisant une fonction mytheme_regions() comme cela a été fait dans Drupal 5, mais elles sont définies dans mytheme.info en utilisant les directives regions[], Ce qui est fait également avec Drupal 6 thèmes.
  • Les régions sont rendues en utilisant la fonction Drupal render(), au lieu d'imprimer le contenu d'une variable.

Les régions par défaut Drupal 7 sont les suivantes:

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

Les thèmes principaux de Drupal 7 incluent désormais une région nommée "mise en évidence" qui utilise le même affichage que la zone d'énoncé de mission dans Drupal 6; ils incluent également une région nommée 'help', qui a par défaut le même contenu que la variable $help utilisée par Drupal 6.

9
kiamlaluno

Les régions de thème sont définies dans votre fichier .info de thème - voir docs . Ajoutez simplement une ligne avec regions[corner] = Corner Pour obtenir une région Corner.

Ensuite, vous devez modifier le fichier page.tpl.php et ajouter <php print render($corner); ?> à l'endroit où vous souhaitez que la région s'affiche. Si votre thème n'a pas de page.tpl.php, copiez à partir du thème de base ou du module système.

Pièges courants:

  • Si le fichier theme.info n'avait pas de régions déclarées, il utilisait Drupal régions par défaut. Si vous voulez ajouter, vous devrez re-déclarer les régions par défaut. Vous pouvez, bien sûr, supprimez toute région, mais veuillez prendre en charge les régions requises. Voir à nouveau docs .

  • Les modifications apportées au fichier .info ou l'ajout de nouveaux fichiers au thème (comme page.tpl.php) ne seront remarqués qu'après avoir effacé les caches.

  • Omega, un thème de base très populaire, n'a besoin d'aucune modification dans page.tpl.php, juste le fichier .info. Mais vous devrez visiter les paramètres du thème dans l'interface utilisateur et affecter votre région à une zone.

4
Capi Etheriel

Suivez les étapes ci-dessous pour créer une région personnalisée dans votre thème:

  1. Accédez à votre fichier theme.info et ajoutez cette ligne.

    regions[machine_name_of_your_region] = Name of your region
    
  2. Bien que vous puissiez également appeler des blocs de région dans le modèle de nœud, vous ajouterez généralement la région au modèle de page du thème. Il s'agit généralement de page.tpl.php, ou si vous avez des fichiers de modèle personnalisés pour différentes pages, modifiez-les également. La nouvelle région n'apparaîtra que sur les pages construites autour du modèle auquel vous ajoutez la nouvelle région. Collez-le où vous voulez que votre nouvelle région apparaisse.

    <?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. Configuration - Performance - Effacer tous les caches

2
Astha chauhan

Créer une nouvelle région dans le thème

Il vous suffit de le définir dans deux fichiers.

  • 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

Rendez maintenant cette région

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

Maintenant Vider tout le cache, c'est parti, vous avez une nouvelle région dans votre thème. Vous pouvez le voir sur votre page de configuration de bloc.

Pour plus d'informations, visitez http://drupal.org/node/171205

0
gsjha