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.
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.
Risposte:
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 sidebar
nel tuo file .info di temi, dovresti aggiungere: <?php print render($page['sidebar']); ?>
nella posizione pertinente nel tuo page.tpl.php.
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.
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:
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.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 $help
variabile utilizzata da Drupal 6.
Le aree tematiche sono definite nel file .info del tema - consultare i documenti . Basta aggiungere una linea con regions[corner] = Corner
per 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.
regions[content] = Content
la 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_top
epage_bottom
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_top
sembra essere usato per le navbar come quelle della barra degli strumenti core.
Segui i passaggi seguenti per creare un'area personalizzata nel tuo tema:
Vai al tuo file theme.info e aggiungi questa riga.
regions[machine_name_of_your_region] = Name of your region
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; ?>
Configurazione - Prestazioni - Cancella tutte le cache
Hai solo bisogno di definirlo in due file.
;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;
regions[navigation] = 'Navigation'
regions[header] = 'Top Bar'
regions[highlighted] = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region
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