Bagaimana cara membuat kawasan khusus dalam sebuah tema?


58

Saya ingin menambahkan area baru yang akan menjadi lebar situs. Jelaskan proses memasukkan wilayah baru ini ke dalam tema saya, jika mungkin menggeneralisasikannya untuk menambahkan wilayah kustom baru.


Jawaban:


68

Anda menentukan wilayah dalam file .info tema Anda. Lihat: Struktur file .info

Anda kemudian harus meletakkan tag templat yang relevan di file page.tpl.php Anda.

Jadi misalnya jika Anda mendefinisikan wilayah sidebardi file tema .info Anda, Anda kemudian akan menambahkan: <?php print render($page['sidebar']); ?>ke tempat yang relevan di halaman Anda.tpl.php.


6
Jika tema Anda tidak memiliki file page.tpl.php, Anda dapat menyalin default dari modul sistem ke tema Anda, dan memodifikasi salinan itu.
Mikey P

5
Omega tidak memerlukan bagian page.tpl.php, cukup nyatakan wilayah dalam .info DAN CLEAR CACHES.
Capi Etheriel

20

Satu hal lain: Jangan lewatkan daerah yang dibutuhkan!

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

Lebih lanjut tentang ini dapat ditemukan di http://drupal.org/update/themes/6/7#closure .

Untuk mengklarifikasi tentang hal ini: Jika Anda menentukan daerah Anda sendiri, Anda perlu mendefinisikan semua yang Anda gunakan, termasuk yang diperlukan. Dengan kata lain, Anda tidak bisa hanya mendefinisikan wilayah tambahan: Jika Anda mendefinisikan apa pun, Anda harus mendefinisikan semuanya.


9

Membuat wilayah untuk tema Drupal 7 tidak berbeda dengan membuat wilayah untuk wilayah Drupal 6; perbedaan antara Drupal 7 dan versi sebelumnya pada dasarnya:

  • Daerah tidak didefinisikan menggunakan mytheme_regions()fungsi seperti yang dilakukan dalam Drupal 5, tetapi mereka didefinisikan dalam mytheme.info menggunakan regions[]arahan, yang juga dilakukan dengan tema Drupal 6.
  • Wilayah diberikan menggunakan fungsi Drupal render(), alih-alih mencetak konten variabel.

Wilayah Drupal 7 default adalah yang berikut:

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

Tema inti Drupal 7 sekarang termasuk wilayah bernama 'disorot' yang menggunakan tampilan yang sama dengan area pernyataan misi di Drupal 6; mereka juga menyertakan wilayah bernama 'bantuan', yang secara default memiliki konten yang sama dari $helpvariabel yang digunakan oleh Drupal 6.


4

Wilayah tema didefinisikan dalam file .info tema Anda - lihat dokumen . Cukup tambahkan baris dengan regions[corner] = Corneruntuk mendapatkan wilayah Corner.

Maka Anda perlu mengedit file page.tpl.php dan menambahkan di <php print render($corner); ?>mana Anda ingin daerah itu muncul. Jika tema Anda tidak memiliki page.tpl.php, salin dari tema dasar atau dari modul sistem.

Perangkap umum:

  • Jika file theme.info tidak memiliki wilayah yang dideklarasikan, itu menggunakan wilayah default Drupal. Jika Anda ingin menambahkan, Anda harus mendeklarasikan ulang wilayah default. Anda dapat, tentu saja, menghapus wilayah mana pun tetapi tolong dukung wilayah yang diperlukan. Lihat dokumen lagi.

  • Perubahan pada file .info atau menambahkan file baru ke tema (seperti page.tpl.php) hanya akan terlihat setelah Anda menghapus cache.

  • Omega, tema dasar yang sangat populer, tidak akan memerlukan perubahan apa pun di page.tpl.php, hanya file .info. Tetapi Anda harus mengunjungi pengaturan tema di UI dan menetapkan wilayah Anda ke zona.


Ini adalah penutup jawaban dengan perangkap umum.
Capi Etheriel

Apakah regions[content] = Contentsatu-satunya wilayah yang diperlukan di D7? drupal.org/node/171205#regions tampaknya menyiratkan ini, tapi kemudian drupal.org/node/171224 mengatakan bahwa daerah yang diperlukan adalah content, help, page_topdanpage_bottom
Jim Garrison

Saya tidak tahu apakah Drupal memeriksa salah satu wilayah, tetapi contentjelas sangat penting. helpdidukung oleh core (untuk menampilkan pesan bantuan), page_bottommungkin di mana js bawah dicetak dan page_toptampaknya digunakan untuk navbar seperti bilah alat inti.
Capi Etheriel

2

Ikuti langkah-langkah di bawah ini untuk membuat wilayah khusus di tema Anda:

  1. Buka file theme.info Anda dan tambahkan baris ini.

    regions[machine_name_of_your_region] = Name of your region
  2. Meskipun Anda juga bisa memanggil blok wilayah di templat simpul, Anda umumnya akan menambahkan wilayah ke templat halaman tema. Ini biasanya page.tpl.php, atau jika Anda memiliki file templat khusus untuk halaman yang berbeda, edit juga. Wilayah baru hanya akan muncul di halaman yang dibangun di sekitar templat tempat Anda menambahkan wilayah baru. Rekatkan di mana pun Anda ingin daerah baru Anda muncul.

    <?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. Konfigurasi - Kinerja - Hapus semua cache


0

Buat wilayah baru di Tema

Anda hanya perlu mendefinisikannya dalam dua file.

  • Info tema
  • Halaman.tpl.php

Info tema

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Halaman.tpl.php

Sekarang render wilayah ini

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

Sekarang Kosongkan semua cache, Ini dia, Anda memiliki daerah baru di tema Anda. Anda dapat melihatnya di halaman konfigurasi blok Anda.

Untuk lebih lanjut kunjungi http://drupal.org/node/171205

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.