Je veux ajouter une nouvelle zone qui sera large du site. Décrivez le processus d'obtention de cette nouvelle région dans mon thème, si possible généralisez-le pour ajouter une nouvelle région personnalisée.
Je veux ajouter une nouvelle zone qui sera large du site. Décrivez le processus d'obtention de cette nouvelle région dans mon thème, si possible généralisez-le pour ajouter une nouvelle région personnalisée.
Réponses:
Vous définissez des régions dans votre fichier .info de thème. Voir: Structure du fichier .info
Vous devez ensuite mettre les balises de modèle appropriées dans votre fichier page.tpl.php.
Ainsi, par exemple, si vous avez défini la région sidebar
dans votre fichier .info de thèmes, vous devez alors ajouter: <?php print render($page['sidebar']); ?>
à l'emplacement 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 sont disponibles à l' adresse 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 ceux qui sont requis. En d'autres termes, vous ne pouvez pas simplement définir des régions supplémentaires: si vous en définissez une, vous devez les définir toutes.
Créer une région pour un thème Drupal 7 n’est pas différent 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 suivantes:
mytheme_regions()
fonction comme dans Drupal 5, mais elles sont définies dans mytheme.info à l'aide de regions[]
directives, ce qui est également le cas avec les thèmes Drupal 6.render()
, au lieu d'imprimer le contenu d'une variable.Les régions Drupal 7 par défaut 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 'en surbrillance' qui utilise le même affichage que la zone d’énoncé de mission de Drupal 6; ils incluent également une région nommée 'help', qui a par défaut le même contenu que la $help
variable utilisée par Drupal 6.
Les régions de thème sont définies dans votre fichier .info de thème - voir la documentation . Ajoutez simplement une ligne avec regions[corner] = Corner
pour obtenir une région Corner.
Ensuite, vous devez éditer le fichier page.tpl.php et ajouter <php print render($corner); ?>
où vous voulez que la région apparaisse. Si votre thème n'a pas de page.tpl.php, copiez-le à partir du thème de base ou du module système.
Pièges courants:
Si le fichier theme.info n'avait aucune région déclarée, il utilisait les régions par défaut de Drupal. Si vous voulez ajouter, vous devrez re-déclarer les régions par défaut. Vous pouvez bien sûr supprimer n'importe quelle région, mais veuillez soutenir les régions requises. Voir la documentation à nouveau.
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'une fois les caches effacées.
Omega, un thème de base très populaire, ne nécessitera aucun changement dans page.tpl.php, mais uniquement dans le fichier .info. Mais vous devrez visiter les paramètres de thème dans l'interface utilisateur et affecter votre région à une zone.
regions[content] = Content
seule région requise dans D7? drupal.org/node/171205#regions semble impliquer, mais alors drupal.org/node/171224 dit que les régions sont nécessaires content
, help
, page_top
etpage_bottom
content
c’est vraiment très important. help
est supporté par core (pour afficher les messages d’aide), page_bottom
c’est probablement où js en bas est imprimé et page_top
semble être utilisé pour les barres de navigation telles que celles de la barre d’outils principale.
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. Si vous avez des fichiers de modèle personnalisés pour différentes pages, modifiez-les également. La nouvelle région apparaîtra uniquement 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 - Performances - Effacer tous les caches
Vous avez juste besoin 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
Maintenant rendre cette région
<?php if ($page['new_region']): ?>
<div class="new_region_class">
<?php print render($page['new_region']); ?>
</div>
<?php endif; ?>
Maintenant effacez tout le cache, 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