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.
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.
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.
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:
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.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.
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.
Suivez les étapes ci-dessous pour créer une région personnalisée dans votre thème:
Accédez à votre fichier theme.info et ajoutez cette ligne.
regions[machine_name_of_your_region] = Name of your region
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; ?>
Configuration - Performance - Effacer tous les caches
Il vous suffit de le définir dans deux fichiers.
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
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