Sayfa görünümlerinde taxonomy çıktısını değiştirmek
Drupal ile yaptığımız sayfalarda yazdığımız konunun türü veya içeriği gibi bilgileri taxonomy kullanarak göstermek isteyebiliriz. Bu gibi durumlarda drupalin kullandığı standart "$terms" değişkeni ile yazdırmak işimize gelmez. Bu değişkeni kullandığımızda tüm etiketler düz bir şekilde sayfamızda yer alır.
Taxonomy çıktısını bu sayfada olduğu gibi "ilgili konular" şeklinde değiştirerek kullandım. Böyle kullanmamdaki amacım diğer rasgele etiket olarak kullandığım taxonomy etiketlerini ilgili konular bölümünden ayırmaktı. Sizinle iki türlü kod paylaşacağız. Birinde içeriğinizle alakalı tüm etiketler, diğerinde ise sadece istediğiniz etiketleri görüntüleyebilirsiniz. Aslında sadece tek bir kod parçası var ve biz onu türetiyoruz.
Sayfanızda tüm taxonomy etiketlerini göstermek isterseniz aşağıdaki kodu kullanabilirsiniz:
<?php
$vocabularies = taxonomy_get_vocabularies();
foreach($vocabularies as $vocabulary) {
if ($vocabularies) {
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vocabulary->vid);
if ($terms) {
print '<div class="terms"><h1>' . $vocabulary->name . ':</h1> ';
foreach ($terms as $term) {
print l($term->name, 'taxonomy/term/'.$term->tid, array('title' => $term->description) ) . ' ';
}
print '</div>';
}
}
}
?>
<?php endif; ?>
Bu kod bölümünü node.tpl.php sayfasının içersinde etiketleri görüntülemek istediğiniz yerde kullanın. Kodlarda herhangi bir değişiklik yapmanıza gerek yoktur. Ayrıca etiketlere eklediğiniz açıklama metinleri bağlantı alt değeri olarak kullanacaktır.
Sayfadaki etiketlerin görünümü aşağıdaki şekilde olacaktır:
etiket1,etiket2,etiket3,...
Sözlük2 adı:
etiket1,etiket2,etiket3,...
...
Bu şekilde tüm sözlüklere ait etiketler listelenir.
Sadece sözlük2 etiketlerini listelemek istersek, sözlük2'in id değerini belirtmeniz gerekmektedir. Sözlük2'in id değeri "2" olsun ve biz buna göre kodumuzu hazırlayalım.
Sözlüklerinizin id'leri genellikle oluşturulma sıralarına göre oluşturulmaktadır.
İşimize yarayacak kod bloğu aşağıdaki gibidir:
<?php
$terms = taxonomy_node_get_terms_by_vocabulary($node,2);
if ($terms) {
print '<div>';
print 'İlgili Konular: ';
foreach ($terms as $term) {
print l($term->name, 'taxonomy/term/'.$term->tid, array('title' => $term->description) ) . ' ';
}
print '<br /></div>';
}
?>
<?php endif; ?>
Bu kod bölümünde 2 şeklinde belirtilen yere kullanmak istediğiniz sözlüğün id değerini girin ve node.tpl.php dosyasında yazdırmak istediğiniz yerde kullanın.
Yorumlar
Yeni yorum veya soru gönder