Skip to Content

PHP Kipi İstenen Vocabulary ID Göstermek

dooper, Cmt, 20/02/2010 - 01:23 tarihinde.

Mevcut bir blok'u istediğim Vocabulary ID ve içerik türünde göstermek istiyorum bunun için aşağıdaki gibi bir kod yazdım fakat çalışmadı ilk if çalıştı fakat 2nci if çalışmadı

<?php
   
    $node = node_load(arg(1));
$node1 = node_load(arg(1));

    if($node->type == "haber_ekle"){

       return true;
}else if(is_array($node1->taxonomy)){

        foreach($node1->taxonomy as $term){
       
        if($term->vid == 3){
       
        return true;
       
       
        }
       
       
       
        }

 


}




?>

kayakentli, Cmt, 20/02/2010 - 02:48 tarihinde.

Kodu bir de:

<?php
$node = node_load(arg(1));
if($node->type == "haber_ekle"){
return true;
}
if (arg(0) == 'node' && is_numeric(arg(1))) {
foreach ($node->taxonomy as $vid => $term) {
if($term->vid == '1') {
return TRUE;
}
}
}
?>

Bu şekilde kullan bakalım, olacak mı?

cihan, Cmt, 20/02/2010 - 11:12 tarihinde.

Sadece meraktan soruyorum arg(1) bize sayısal bir değer mi veriyor drupalde?

cihan, Cmt, 20/02/2010 - 11:20 tarihinde.

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.
İçerik türü olayını bilmiyorum kayakentlinin dediğide olmaz ise karma yaparsın. Aşağıdaki kodu denedim.

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

dooper, Cmt, 20/02/2010 - 14:12 tarihinde.

cihan arg(1); drupal apiden anladığım kadarı ile adres çubugundaki path i parçalaıyor explode fonksiyonu ile sonra explode dizi döndürüyo arg(0) arg(1) arg(2) gibi kaykentli denedim fakat kategori bölümünde gözükmüyo sadece o sözlüğe ait terimlerde gözüküyo biraz daha kurcalarsam olacak gibi teşekkürler

cihan, Cmt, 20/02/2010 - 14:46 tarihinde.

Pathi parçalıyor ama sayısal verimi onu merak ettim sonuçta yoldakiler normal bir char verisi olarak dönmez mi? Hem sayısal hemde karakter olarak.

kayakentli, Cmt, 20/02/2010 - 16:12 tarihinde.

Örnek path: ?q=node/12

arg(o) = node
arg(1) = 12

'dir. Eğer nümerik veri olup olmadığını kontrol etmek istiyorsan is_numeric() fonksiyonunu kullanabilirsin.

cihan, Cmt, 20/02/2010 - 17:54 tarihinde.

pathauto kullanmamız bunu değiştirmiyor mu? Arka planda normal node sayılarımı devam ediyor?

dooper, Cmt, 20/02/2010 - 18:27 tarihinde.

sanırım .htacsess dosyasında aşağıdaki kural değiştiriyo aslında dediğiniz gibi arka planda yine parametre mantığı devam ediyor çalışmaya

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

etcetera9, Cmt, 20/02/2010 - 20:33 tarihinde.

Pathauto'dan gelen takma ad kullanılmak istenirse:

$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);

Daha sonra URL'nin parçaları $path[0], $path[1], vs. şeklinde kullanılabilir...

dooper, Pzr, 21/02/2010 - 01:57 tarihinde.

@etcetera9 teşekkürler verdiğin fonksiyon işime yaradı şu şekilde kullandım

rewrite edilmiş yolu etcetera9 nın verdiği fonksiyonla parçaladım sözlük adını aldım daha sonra bu diziyi if ile denetleyerek fonksiyona true gönderdim ve oldu..

<?php
$node = node_load(arg(1));

$path = drupal_get_path_alias($_GET['q']);
$path = explode('/', $path);

if($node->type == "haber_ekle"){
return true;
}else if ($path[0] == "konular") {

        return true;



}

?>

cihan, Pzr, 21/02/2010 - 11:39 tarihinde.

Hadi geçmiş olsun:)

Bu bilgi bizler gibi php bilenlere iyi olmuş ancak basit yolunu kullanmak biraz daha rahat olabilir; path auto ile yol ayarına içerik türü ve sözlük adını yazdırmak kolaylık olur. Tabi adres satırını seo amacı dışında şişirmek olumsuzluk oda ayrı mesele.

Buradaki basit kod satırlarına bakıp kaçmasın kimse:)