html.tpl sayfasında $is_node şartı

Events happening in the community are now at Drupal community events on www.drupal.org.
serdark's picture

drupal 7 kullanıyorum.

html.tpl sayfasında bir şart koşmak istiyorum.

if($is_front) { bunları yap } bu çalışıyor. anasayfa ise yazdıracaklarımı yazdırıyorum. fakat bir node sayfası açılıdığında da benzer şekilde.

bir şart koşmak ve node sayfalarında istediğimi yazdrıamk istiyorum.

$is_node, denedim diğerlerini denedim yapamadım.
html. tpl sayfasına ne yazarsam istediğimi yapabilrim?

Comments

kardeşim güzel demişsin buna

serdark's picture

kardeşim güzel demişsin buna bakmıştım zaten. kullanım örneği verebilmisin acaba? bu fonksiyonlar zaten mevcut.

node_is_page($node) bu

cemoezer's picture

node_is_page($node) bu sekilde kullanabilirsin.

if (node_is_page($node)) {
//Code
}
else {
//Code
}

yani node.module içinde

serdark's picture

yani node.module içinde bahsettiğin fonksiyonu kontrol ettim. evet var. verdiğin kodu da html sayfasında denedim. hata veriyor malesef.

ve node sayfasında bile elseyi döndürüyor.

Notice: include() (/home/serdar/public_html........./html.tpl.php dosyasının 405 satırı) içinde Undefined variable: node.
Notice: node_is_page() (/home/serdar/public_html/drupal7/modules/node/node.module dosyasının 1491 satırı) içinde Trying to get property of non-object.

Nasil kullandigini

cemoezer's picture

Nasil kullandigini gönderirsen belki yardimci olabilirim.

yani anlattığm şekilde

serdark's picture

yani anlattığm şekilde kullanıyorum. hata veriyor o şekilde.

Çünkü istediğin fonksiyon o değil

pembeci's picture

Yukarıdaki fonksiyonda önce bir node yükleyip sonra dur bakalım yüklü sayfa bu node mu diye bakabilirsin. Yani parametre olarak geçireceğin $node'u yüklemen gerekiyor ki hata mesajından anlaşılan sen bunu yapmamışsın. Ayrıca sadece sayfa $node'a yüklediğin node ise true döner başka bir node ise yanlış döner.

Sorunu doğru anlıyorsam senin istediğin bu değil, aşağıda benim gönderdiğim fonksiyondur işini görecek olan.

Şunu dene

pembeci's picture

Yukarıdaki yüklenen sayfa filanca node mu ($nid üzerinden) diye bakıyor. Aşağıdakini dene:

<?php
 
if (menu_get_object('node', 1)) {
   
// ....
 
}
?>

menu_get_object
örnek kullanım

filanca node açılınca şunu

serdark's picture

filanca node açılınca şunu yap demek istemiyorum.

eğer açılan sayfa node ise o düğümün içindeki şu belittiğiim field alanını ekrana yazdır. eğer node sayfası değilse işlemi atla.

aynı şekilde terim sayfaları için de yapmak istiyorum.
açılan sayfa bir terim ise o terimin açıklama fieldi getir. gibi.

tabi bunu views ile yapmak mümkün diyeceksin. yada page tpl içinde gayet mümkün oluyor.

önemli olan html.tpl php içne yazdırabilmek.

aklıma db den direkt çekmek vs geliyor ama bu node sayfası açıldığında iki kez veri çekimi demek olacak.

Zaten öyle

pembeci's picture

Bahsettiğim fonksiyon (ve if kodu) zaten filanca node açılınca diye çalışmıyor, dur bakalım yüklenen sayfa node mu (veya taxonomy sayfası mı, argumanını değiştirerek) diye bakıyor. Bağlantısını verdiğim örnek koda baktın mı? Tam da senin istediğin gibi bir örnek. Ayrıca node mu diye baktıktan sonra o node'a ulaşıp işlem de yapabiliyorsun. Ekstradan dur bakalım poll node mu vs gibi if'ler eklemek veya node field'ları çekmek de mümkün çünkü fonksiyonun dönderdiği nesne node'un (veya taxonomy'nin) kendisi benim anladığım.

Bağlantılar yeniden

pembeci's picture

Bağlantılarda sorun var gibi:

menu_get_object

örnek
(aslında template dosyasını değiştirmek yerine buradaki gibi hook üzerinden yaparsan tema'dan bağımsız olur yaptığın ilave)