Yeni Blok Alanları Oluşturma
onur serkan, Çrş, 15/10/2008 - 18:09 tarihinde.
Kullandığınız temada mevcut olan blok alanları yeterli gelmediğinde, kendi blok alanlarınızı biraz PHP ve CSS yardımıyla tanımlayabilirsiniz. Genel olarak yapmanız gerekenler üç ana aşamada oluşuyor:
- Yeni blok alanını bildirme
- Blok değişkenini ekleme
- CSS ayarları
Drupal 5.x
- Temanıza ait template.php dosyasını açarak aşağıdaki fonskiyonu ekleyin. Eğer benzer bir fonksiyon mevcutsa uygun şekilde düzenleyin:
/** Define the regions **/
function temaadi_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'yenialan' => t('Yeni blok alani'),
);
}Örnekte "Yeni blok alani" adında yeni bir blok alanı ekleniyor. Aynı yöntemi kullanarak her satırda ayrı bir blok alanı tanımlayabilirsiniz.
Not-1:
function temaadi_regions()satırındatemaadikısmını kullandığınız temanın adı ile değiştirmeyi unutmayın.
Not-2: Kodda Türkçe karakter kullanmayın.
Not-3: => işaretinin solundaki isimlerde boşluk kullanamazsınız. - Temanızın page.tpl.php dosyasını açarak yeni bloğu eklemek istediğiniz yere aşağıdaki kodu kopyalayın:
<?php if ($yenialan): ?>
<div id="yeni-alan" class="region">
<?php print $yenialan?>
</div>
<?php endif; ?>
Tanımladığınız blok alanının adına göre koddaki$yenialandeğişkeni ile div id ve class isimlerini değiştirin. - Temanızın style.css dosyasını açıp 2. adımda kullanmış olduğunuz class ve id'ler için istediğiniz stil düzenlemesini yapın.
Drupal 6.x
- Temanızdaki temaadi.info dosyasını açın. Bu dosyada
regions[left] = Left sidebarbiçiminde herhangi bir tanımlama yapılmamışsa aşağıdaki kodun tamamını ekleyin:
Not-1: Eğer temanızda daha önceden bu tarz tanımlamalar yapılmışsa, bu tanımlamaların ardından yukarıdaki kodun sadece kendi blok alanınızla ilgili olan son satırını eklemeniz gerekmektedir.
Not-2: Kodda Türkçe karakter kullanmayın.
Not-3: regions[] bölümünde blok alanını yazarken boşluk kullanamazsınız. - Tema dosyaları önbelleğe alındığı için değişikliklerin etkili olabilmesi için aşağıdaki üç alternatiften birini gerçekleştirerek mevcut önbelleğin silinmesini sağlayın:
- Yönet » Site Kurulumu » Temalar sayfasını ziyaret etmek (önbellek kendiliğinden silinir)
- Yönet » Site Ayarları » Performans sayfasına giderek en altta yer alan "Önbellekteki veriyi sil" düğmesine tıklamak
- Devel eklentisini kullanıyorsanız Devel bloğunda yer alan "empty cache" linkine tıklamak
- Temanızın page.tpl.php dosyasını açarak yeni bloğu eklemek istediğiniz yere aşağıdaki kodu kopyalayın:
<?php if ($yenialan): ?>
<div id="yeni-alan" class="region">
<?php print $yenialan?>
</div>
<?php endif; ?>
Tanımladığınız blok alanının adına göre koddaki$yenialandeğişkeni ile div id ve class isimlerini değiştirin. - Temanızın style.css dosyasını açıp birönceki adımda kullanmış olduğunuz class ve id'ler için istediğiniz stil düzenlemesini yapın.
Anlatımda kullanılan kodlarda Türkçe karakter kullanamasanız da, yeni blok alanlarının isimlerini daha sonradan yönetim bölümündeki çeviri kısmından değiştirebilirsiniz.
- Yeni yorum ekle
- 5280 kez okundu

bu olayı marvin temasına göre anlatsan tadından yenmez hocam :)
Sadece 3. adım farklı. Marvin Chameleon'un alt teması. Bu yüzden chameleon.theme dosyasında yer alan
chameleon_pagefonksiyonunu düzenlemek gerekiyor.Bu fonksiyondan yer alan şu satırları bulun:
$blocks_left = theme_blocks('left');
$blocks_right = theme_blocks('right');
Bu satırların altında .info dosyasında tanımladığınız yeni blok alanlarını örnekteki gibi ekleyin:
$blocks_left = theme_blocks('left');
$blocks_right = theme_blocks('right');
$blocks_yenialan = theme_blocks('yenialan');
Son olarak da bu blok alanının görünmesini istediğiniz yeri bu fonkiyon içinde tespit ederek şu kodu ekleyin:
$output .= "<div id=\"yeni-alan\" class=\"region\" >$blocks_yenialan </div>";
}
en son olayı yapamadım. aslında ben header a logonun sağ tarafına bi arama çubuğu eklemek istiyorum. o yüzden yeni blok ekleme alanından sadece;
'header' => t('header'),
blogunu ekledim. gerek info dosyasına gerek, belirttiğiniz gibi tema dosyasına ekledim bunu. bloklar kısmında arama kutusunun yerini "header" yani "başlık" olarak bölgelerden atadım, (bölgede başlık diye geçti) fakat kaydettiğmde görünmedi.
Soruları forumda soralım, ders sayfaları uzayıp gitmesin. Çözümü bulunduğunda tekrar gelip buraya ekleriz.
//editör notu: İlgili mesaj buraya taşınmıştır.
Zen temasında nasıl block oluşturuluyor? Tema dosyalarında yazdıklarınıza benzer herhangi bir kod bulunmuyor maalesef. Yardımcı olur musunuz?
//edit sorunu çözdüm. zen.info dosyasını gözden kaçırmışım.