Bir temada nasıl özel bölgeler oluşturabilirim?


58

Site çapında olacak yeni bir alan eklemek istiyorum. Bu yeni bölgeyi temama sokma sürecini açıklayın, mümkünse yeni ve özel bir bölge eklemek için genelleştirin.


ayrıntılı blog: goo.gl/kD3TZu
Suresh Kamrushi

Yanıtlar:


68

Tema .info dosyanızdaki bölgeleri tanımlarsınız. Bkz: .info dosyasının yapısı

Daha sonra, ilgili şablon etiketlerini page.tpl.php dosyasına yerleştirmeniz gerekir.

Örneğin, bölgeyi sidebartemalar .info dosyanızda tanımladıysanız, şunu eklersiniz: <?php print render($page['sidebar']); ?>page.tpl.php içindeki ilgili yere.


6
Temanızda bir page.tpl.php dosyası yoksa, varsayılanı sistem modülünden temanıza kopyalayabilir ve bu kopyayı değiştirebilirsiniz.
Mikey P

5
Omega, page.tpl.php kısmına ihtiyaç duymaz, sadece bölgeyi .info VE CLEAR CACHES olarak ilan edin.
Capi Etheriel

20

Başka bir nokta: Gerekli bölgeleri kaçırmayın!

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

Bununla ilgili daha fazla bilgiyi http://drupal.org/update/themes/6/7#closure adresinde bulabilirsiniz .

Bu noktaya açıklık getirmek için: Kendi bölgelerini tanımlarsanız, gerekli olanlar da dahil olmak üzere kullandığınız her şeyi tanımlamanız gerekir. Başka bir deyişle, yalnızca ek bölgeler tanımlayamazsınız: Herhangi birini tanımlarsanız, hepsini tanımlamanız gerekir.


9

Drupal 7 teması için bölge oluşturmak, Drupal 6 bölgesi için bölge oluşturmaktan farklı değildir; Drupal 7 ve önceki sürümler arasındaki farklar aslında:

  • Bölgeler, mytheme_regions()Drupal 5'te yapıldığı gibi bir işlev kullanılarak tanımlanmamıştır , ancak bunlar mitinde de tanımlanmaktadır regions[].
  • Bölgeler, render()bir değişkenin içeriğini yazdırmak yerine Drupal işlevi kullanılarak oluşturulur .

Varsayılan Drupal 7 bölgeleri aşağıdaki gibidir:

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

Drupal 7 ana temaları şimdi Drupal 6'daki görev bildirimi alanıyla aynı ekranı kullanan 'vurgulanan' adlı bir bölge içerir; Ayrıca, varsayılan olarak $helpDrupal 6 tarafından kullanılan değişkenin aynı içeriğe sahip olduğu 'help' adında bir bölge içerirler .


4

Tema bölgeleri, tema .info dosyanızda tanımlanır - belgelere bakın . regions[corner] = CornerKöşe bölgesi almak için bir satır ekleyin .

Ardından page.tpl.php dosyasını düzenlemeniz ve bölgenin görünmesini <php print render($corner); ?>istediğiniz yeri eklemeniz gerekir . Temanızda bir sayfa.tpl.php yoksa, temel temadan veya sistem modülünden kopyalayın.

Ortak tuzaklar:

  • Theme.info dosyasında ilan edilmiş bir bölge yoksa, Drupal varsayılan bölgelerini kullanıyordu. Eklemek istiyorsanız, varsayılan bölgeleri yeniden bildirmeniz gerekir. Elbette herhangi bir bölgeyi kaldırabilirsiniz ancak lütfen gerekli bölgeleri destekleyin. Dokümanlara tekrar bakın .

  • .İnfo dosyasındaki değişiklikler veya temaya yeni dosyalar (örneğin, page.tpl.php) eklendiğinde, yalnızca önbellekleri temizledikten sonra fark edilir.

  • Çok popüler bir temel tema olan Omega, page.tpl.php dosyasındaki herhangi bir değişikliğe ihtiyaç duymaz, sadece .info dosyasındadır. Ancak, kullanıcı arayüzündeki tema ayarlarını ziyaret etmeniz ve bölgenizi bir bölgeye atamanız gerekir.


Bu ortak tuzaklar ile cevapların bir araya getirilmesidir.
Capi Etheriel

regions[content] = ContentD7 sadece gerekli bölge? drupal.org/node/171205#regions bu ima gibi görünüyor, ama daha sonra drupal.org/node/171224 gerekli bölgeler olduğunu söylüyor content, help, page_topvepage_bottom
Jim Garrison

Drupal'ın herhangi bir bölgeyi kontrol edip etmediğini bilmiyorum ama contentkesinlikle çok önemli. helpçekirdek tarafından desteklenir (yardım mesajlarının çıktısını almak için), page_bottommuhtemelen js altının basıldığı ve page_topçekirdek araç çubuğu gibi gezinme çubukları için kullanıldığı görülüyor.
Capi Etheriel

2

Temanızda özel bölge oluşturmak için aşağıdaki adımları izleyin:

  1. Theme.info dosyasına gidin ve bu satırı ekleyin.

    regions[machine_name_of_your_region] = Name of your region
  2. Düğüm şablonunda bölge bloklarını da çağırabilseniz de, bölgeyi genellikle temanın sayfa şablonuna eklersiniz. Bu genellikle page.tpl.php'dir veya farklı sayfalar için özel şablon dosyalarınız varsa, bunları da düzenleyin. Yeni bölge, yalnızca yeni bölgeyi eklediğiniz şablonun çevresinde oluşturulan sayfalarda görünecektir. Yeni bölgenizin görünmesini istediğiniz yere yapıştırın.

    <?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. Yapılandırma - Performans - Tüm önbellekleri temizle


0

Temada Yeni bölge oluşturma

Sadece iki dosyada tanımlamanız gerekir.

  • 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

Şimdi bu bölgeyi oluştur

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

Şimdi tüm önbelleği temizle, İşte başlıyorsunuz, temanızda yeni bir bölgeniz var. Blok konfigürasyon sayfanızda görebilirsiniz.

Daha fazla ziyaret için http://drupal.org/node/171205

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.