Come posso creare regioni personalizzate in un tema?


58

Voglio aggiungere una nuova area che sarà estesa a tutto il sito. Descrivi il processo di inserimento di questa nuova regione nel mio tema, se possibile generalizzalo per aggiungere qualsiasi nuova regione personalizzata.


blog dettagliato: goo.gl/kD3TZu
Suresh Kamrushi

Risposte:


68

Le regioni vengono definite nel file .info del tema. Vedi: Struttura del file .info

È quindi necessario inserire i tag modello pertinenti nel file page.tpl.php.

Quindi, ad esempio, se hai definito la regione sidebarnel tuo file .info di temi, dovresti aggiungere: <?php print render($page['sidebar']); ?>nella posizione pertinente nel tuo page.tpl.php.


6
Se il tuo tema non ha un file page.tpl.php puoi copiare il valore predefinito dal modulo di sistema nel tuo tema e modificarlo.
Mikey P

5
Omega non ha bisogno della parte page.tpl.php, basta dichiarare la regione in .info E CANCELLARE CACHI.
Capi Etheriel,

20

Un altro punto: non perdere le regioni richieste!

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

Ulteriori informazioni al riguardo sono disponibili all'indirizzo http://drupal.org/update/themes/6/7#closure .

Per chiarire questo punto: se si definiscono le proprie regioni, è necessario definire tutto ciò che si sta utilizzando, inclusi quelli richiesti. In altre parole, non puoi semplicemente definire regioni aggiuntive: se ne definisci una, devi definirle tutte.


9

La creazione di una regione per un tema Drupal 7 non è diversa dalla creazione di una regione per una regione Drupal 6; le differenze tra Drupal 7 e le versioni precedenti sono essenzialmente:

  • Le regioni non sono definite usando una mytheme_regions()funzione come in Drupal 5, ma sono definite in mytheme.info usando le regions[]direttive, che è ciò che viene fatto anche con i temi Drupal 6.
  • Le regioni vengono renderizzate usando la funzione Drupal render(), invece di stampare il contenuto di una variabile.

Le regioni Drupal 7 predefinite sono le seguenti:

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

I temi principali di Drupal 7 ora includono una regione chiamata "evidenziata" che utilizza lo stesso display dell'area della missione in Drupal 6; includono anche una regione chiamata 'help', che per impostazione predefinita ha lo stesso contenuto della $helpvariabile utilizzata da Drupal 6.


4

Le aree tematiche sono definite nel file .info del tema - consultare i documenti . Basta aggiungere una linea con regions[corner] = Cornerper ottenere una regione d'angolo.

Quindi è necessario modificare il file page.tpl.php e aggiungere <php print render($corner); ?>dove si desidera visualizzare la regione. Se il tuo tema non ha un page.tpl.php, copia dal tema di base o dal modulo di sistema.

Insidie ​​comuni:

  • Se nel file theme.info non erano state dichiarate regioni, utilizzava le regioni predefinite di Drupal. Se si desidera aggiungere, sarà necessario dichiarare nuovamente le aree predefinite. Ovviamente puoi rimuovere qualsiasi regione ma ti preghiamo di supportare le regioni richieste. Vedi di nuovo i documenti .

  • Le modifiche al file .info o l'aggiunta di nuovi file al tema (come page.tpl.php) verranno notate solo dopo aver svuotato la cache.

  • Omega, un tema di base molto popolare, non avrà bisogno di alcun cambiamento in page.tpl.php, ma solo nel file .info. Ma dovrai visitare le impostazioni del tema nell'interfaccia utente e assegnare la tua regione a una zona.


Questo è un riassunto delle risposte con insidie ​​comuni.
Capi Etheriel,

È regions[content] = Contentla regione unica richiesta in D7? drupal.org/node/171205#regions sembra implicare questo, ma poi drupal.org/node/171224 dice che le regioni richieste sono content, help, page_topepage_bottom
Jim Garrison

Non so se Drupal controlli per nessuna delle regioni, ma contentè sicuramente molto importante. helpè supportato da core (per generare messaggi di aiuto), page_bottomè probabilmente il punto in cui viene stampato js inferiore e page_topsembra essere usato per le navbar come quelle della barra degli strumenti core.
Capi Etheriel,

2

Segui i passaggi seguenti per creare un'area personalizzata nel tuo tema:

  1. Vai al tuo file theme.info e aggiungi questa riga.

    regions[machine_name_of_your_region] = Name of your region
  2. Sebbene sia possibile anche chiamare blocchi di regioni nel modello nodo, in genere si aggiungerà la regione al modello di pagina del tema. Questo di solito è page.tpl.php, o se hai file modello personalizzati per pagine diverse, modifica anche quelli. La nuova area verrà visualizzata solo nelle pagine create attorno al modello a cui aggiungi la nuova area. Incollalo dove vuoi che appaia la tua nuova regione.

    <?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. Configurazione - Prestazioni - Cancella tutte le cache


0

Crea una nuova regione in tema

Hai solo bisogno di definirlo in due file.

  • 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

Ora esegui il rendering di questa regione

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

Ora cancella tutta la cache, ecco qua, hai una nuova regione nel tuo tema. Puoi vederlo nella tua pagina di configurazione del blocco.

Per ulteriori informazioni, visitare http://drupal.org/node/171205

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.