Blokları PHP ile istenilen içerik türü ve kategoride göstermek

İlgili Konular: Drupal Genel Bilgiler     

Drupal ile blokları php kipi yerine kolay yoldan istediğiniz yerde göstermek isterseniz öncelikle pathauto eklentisinini yol ayarlarında içerik türü ve kategori isimlerini yol adınıza dahil edin. Daha sonra blok ayarlarında sadece listelenen sayfalarda görüntüle kısmına (örneğin içerik türü adımız blog olsun) içerik türü makine adını yazıyoruz(blog/*). Böylece içerik türü adı ile başlayan (blog) tüm sayfalarda bloğumuz görüntülenmiş oluyor.

Şimdi gelelim ileri düzey bir işlemle bunu yapmaya. İlk yaptığımız yöntem kolay ancak sayfamızın adresinin fazla uzun olmasına neden olabiliyor. Hele birde içerik başlıklarımız çok uzunda arama motorları bu uzun adresi olumsuz algılayacaktır. Bu nedenle biraz daha deneyimli olarak PHP kipini kullanabilirsiniz.

Öncelikle sisteminizde pathauto eklentisi kutulu olmalıdır. Daha sonra

Blok ayarları sayfasına girerek istediğimiz blok ile ilgili ayarlar bağlantısına tıklıyoruz.

2010-02-23_132050.jpg

Bloğumuzun Sayfaya özel görünürlük ayarlarına gelin bloğu belirli sayfalarda göster seçeneğinde Aşağıdaki PHP kodu DOĞRU döndürürse göster (PHP-kipi, sadece uzmanlar) seçeneğini seçerek altındaki metin bölümüne ilgili kodları yazıyoruz (Bu kodların düzgün çalışabilmesi için sisteminizde pathauto kurulu olmalıdır ve siteniz bir sunucuda yüklü, temiz URL aktif durumda olmalıdır).

Aşağıda bulunan kodu; bloğunuzun görüntülenmesini istediğiniz sayfalara göre ayarlayarak ekleyin.

<?php
//Pathauto'dan gelen takma adları alarak bunları dizi değerlerine ayırıyoruz.
$node = node_load(arg(1));
$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);
//İstediğimiz içerik türünde görüntülemek için sorguluyoruz.
if($node->type == "icerik_turunuz"){
return true;
}
//İstediğimiz kategori adında görüntülemek için sorguluyoruz.
else if ($path[0] == "ilgili_taxonomy_adı") {
return true;
}?>

Bu kod da hem içerik türü hemde kategori adına göre bloğumuzun görünümünü ayarlayabiliyoruz.

Sadece içerik türü için görüntülemek istersek aşağıdaki kodu kullanabiliriz:

<?php
//Pathauto'dan gelen takma adları alarak bunları dizi değerlerine ayırıyoruz.
$node = node_load(arg(1));
$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);
//İstediğimiz içerik türünde görüntülemek için sorguluyoruz.
if($node->type == "icerik_turunuz"){
return true;
}?>

Sadece kategori için görüntülemek istersek aşağıdaki kodu kullanabiliriz:

<?php
//Pathauto'dan gelen takma adları alarak bunları dizi değerlerine ayırıyoruz.
$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);
//İstediğimiz kategori adında görüntülemek için sorguluyoruz.
if ($path[0] == "ilgili_taxonomy_adı") {
return true;
}?>

Bu kodları kendim oluşturmadım açıkcası sadece bir düzene sokması bana aittir. Buradaki konuda tartışmaya katkıda bulunan etcetera9 ve dooper arkadaşlarımızın önerileri üzerine yazımı oluşturdum. Asıl konuyu orada geniş anlatımını ise burada bulabilirsiniz. Artık tercih ize kalmış.

Kolay gelsin.

Yorumlar

S.A eline sağlık Cihan drupal için gerçekten iyi hizmetler veriyorsun, teşekkür ediyorum.

Yukarıda sözü geçen anlatım sanırım benim yapmak istediğimle aynı şey. Denedim hepsini fakat olmadı veya yapamadım :).

İstediğim şu;

Bir katagorim var ismi A:

Birde A katagorisine oluşturduğum bir views var. Oluşturduğum views i a katagorisinde ve sadece ona ait olan yazılarda göstermek istiyorum. Ne yapmaliyim?

Localhost (kendi bilgisayarında) mı deniyorsun? Kendi bilgisayarında pathauto düzenli çalışmadığından bu yöntem de çalışmayacaktır.

Şöyle birşeyi kendine uyarlayıp deneyebilirsin:
Aşağıdaki kod ile sadece id si 2 olan terimleri çekiyorum, tekrar terimlerin sözlük id leri 2 mi die kontrol ediliyor (aslında sadece terim varmı diede kontrol olabilir) daha sonra bir terim olması halinde true döndürülüyor. Terimin idsine göre bu kodu kulana bilirsin.

<?php
$terms = taxonomy_node_get_terms_by_vocabulary($node,2);
foreach ($terms as $term) {
if ($term->vid == 2) {
return true;
}
}
?>

Yeni yorum veya soru gönder

Bu alanın içeriği gizlenecek, genel görünümde yer almayacaktır.
  • PHP source code can also be enclosed in <?php ... ?> or <% ... %>.
  • You may insert videos with [video:URL]

Biçimlendirme seçenekleri hakkında daha fazla bilgi


3 + 3 =
Basit matematik sorusunuz çözünüz. Örn; 1+3= 4