views arguments ile bunu yapmak mümkün mü?

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

merhaba arkadaşlar Türkiyedeki tüm iller ve ilçeleri kapsayacak bir site yapıyorum bunun için illere girildiğinde sol sidebarda o il'e ait ilçeleri listeleyeceğim bunun için mesela atıyorum /trabzon-hava-durumu diye bir düğümüm var ve bu düğme tıklanıldığında trabzon ili hava durumu ve sol tarafta trabzon ilçeleri listelenecek bu listelenen düğümlerin yapısı şu şekilde olucak
/of-ilçesi-hava-durumu bunu sistem nereden bilecek of'un traboznun bir ilçesi olduğunu? düşündüğüm illere terim oluşturmak mesela sozluk/trabozun bu ilçe düğümlerini bu ile tanımlıyacağım fakat bunu listelerken sanırım argument ile karşılaştırma yapmam gerekcek sanırım biraz karşık oldu:)

Comments

Sen oflimisuuun? ha puni

vsc's picture

Sen oflimisuuun? ha puni sabahun tokusunda yazayiniz yine de anlatamayisin bi doğru anlatta yardimimiz olurmu pakalum daaa... her bir bölgeye bir delta block oluştur, bunun için relevant content modülünü kullan ve her bir il / ilçe / hava durumu nu tek bir node olarak gir, ilgili delta blok içinde görünecekdir, ilgili delta block sayfanın neresinde görünecek ise yönetim menüsü altındaki block ayarlarından ilgili yere yerleştir... galiba ben de iyi anlatamadım ama ben bunu öğleden sonra yazdım bir karadenizli için bu normal sayılır :) kolay gelsin

Teşekkürler hocam bu

bamban's picture

Teşekkürler hocam bu espirili cevap için :) ayrıca eğer bu bahsettiğiniz modul gerçekten anlattığınız işi yapıyorsa tam istediğim şey inceleyip sonucu buraya yazacağım teşekkürler :) bu konu hakkında bilginiz var mı ? >>> http://drupal.org/node/765902

Düzenli ifade kullanman lazım

pembeci's picture

<?php
$words
= explode(' ', $output);
print
$words[0];
?>

Buradaki $output'un nasıl bir html string olduğuna dair bir örnek ve hangi kısımları kırpmak istediğini gönderirsen ben uygun bir regular expression önerebilirim. Gönderdiğin koddaki etiketleri Drupal'ın kırpmaması için <?php ?> veya <code> etiketi içine alıp gönder.

Şu da işe yarayabilir

pembeci's picture

Field'ın için çalışacak views-view-field.tpl.php dosyasında yapmaya çalışıyorsun bunu benim anladığım. Bu durumda şu aşağıdaki kodu o dosyaya ekleyip çıktısını gönderirsen daha net yardım edebilirim.

<?php
// $Id: views-view-field.tpl.php,v 1.1 2008/05/16 22:22:32 merlinofchaos Exp $
/**
  * This template is used to print a single field in a view. It is not
  * actually used in default Views, as this is registered as a theme
  * function which has better performance. For single overrides, the
  * template is perfectly okay.
  <em>
  * Variables available:
  * - $view: The view object
  * - $field: The field handler object that can process the input
  * - $row: The raw SQL result that can be used
  * - $output: The processed output that will normally be used.
</em>/

drupal_set_message("row : <pre>" . print_r($row, true) . "</pre>");
drupal_set_message("field : <pre>" . print_r($field, true) . "</pre>");
drupal_set_message("output : <pre>" . print_r($output, true) . "</pre>");
?>

Devel eklentin varsa doğrudan dprint_r($row) vs. kullanabilirsin.

Öncelikle pembeci nin

vsc's picture

Öncelikle pembeci nin yazdıklarını dikkate al, eğer anlattıkları sana ağır geliyor ve uygulamada sıkıntıya düşüyorsan o zaman tam punu kullanacaksun => http://drupal.org/project/relevant_content

Aslında daha kestirmesi var; sen sitenin tam ortasina of un il/ilce/hava durumunu koy herkes ona göre kendini ayarlasun... saatlerimizi isviçre ye göre ayarlıyor hava durumunu da of göre ayarlaruz daaaa :)

Teşekkürler pembeci sorun şu

bamban's picture

Teşekkürler pembeci sorun şu kod ile çözüldü

<?php

   
  
   $baslik
= $output;

   
$bak = strpos($baslik," " );


  if(
$bak){

$kel = explode(' ', $baslik);
   

  }else {

  
$kel = explode('|:|', $baslik);

}

 
$kod = explode('|:|', $baslik);

?>

<a href="node/<?php print $kod[1]; ?>"><?php echo $kel[0]; ?></a>
      

vsc verdiğin moduülleri henüz kurmadım sıra onlara geldi :) teşekkürler

@vsc benim yapmak istediğim

bamban's picture

@vsc benim yapmak istediğim aslında şu bilemiyorum eklenti ile mümkün mü

benim 81 adet düğümüm var ve bunları ana syada il isimleri ile sıraladım yani menüden öğe olarak ekledim şimdi buradan herhangi bir ile tılanıldığında o il içeriği ve soldaki iller kaybolup o ile ait ilçeler sırlanacak her il için ayrı bir ilçe blok'u oluşturup daha sonra söz konusu blok'u sadece bu il de göster mi demeleliyim ?

Ofli içinden kelduği kipi

vsc's picture

Ofli içinden kelduği kipi anlat daaaa Lazca düşünüp Türkçe yazaysun hiçpirşey anlaşilmayi :)
Şimdi illeri node olarak oluşturdun ilçe bloklarını da oluştur en son yönetim altındaki blok yönetim menüsünden ilgili blok u düzenle (sayfanın neresınde, hangi içerik ile beraber görünecek, kimler görebilecek falan) hepsi bu kadar, bir ilin içeriği yani bir node acıldığında yandaki sütünda o ilin ilçeleri görünecektir, kolay iş yani de piz kolay işi sevmeyuz mesele pudur aslinda :) bu son şakaydı bir daha yapmayacağım, umarım kızmamışındır, kolay gelsin

@vsc hocam yani her il için

bamban's picture

@vsc hocam yani her il için ayrı blok oluşturacağım (81 adet) sonra bunu görünürlük ayarlarından o ilgili node açıldığında göster diyeceğim değil mi?

Sanırım relevant_content eklentisine ihtiyacım olmayacak değil mi?

Hayır kesinlikle kızmıyorum ilgin için ayrıca teşekkür ederim

Evet... relevant content (

vsc's picture

Evet... relevant content ( yani tükçesi ilgili/ilişkili içerik) bu iş için kullanılabilir, standart bir blok oluşturup sonra düzenlesen de olabilir ama bu sefer blok içeriği için modül yazman gerekecek... sen relevant_content kullan ve node linkini (yani node/numara) şeklinde linki blok düzenlerken en alttaki kutuya yazacaksın ve sadece bu link ile beraber göster diyeceksin hepsi bu kadar, kolay gelsin

Teşekkürler çok işime yaradı

bamban's picture

Teşekkürler çok işime yaradı

yapmak istediğinizi ne güzel

uzmankodra's picture

yapmak istediğinizi ne güzel sonunda yapabilmişsiniz. keşke ben de istediğim şeyi yapabilseyim. ama yapamıyorum. bir terim sayfasına gittiğimde viewsin blok özelliğini kullanarak o terim sayfasındaki nodeları listelemeyi deniyorum ama olmuyor. göstermiyor. burda benzer birşey var ama anlamış değilim. http://drupalsn.com/learn-drupal/drupal-questions/question-2650 :(

merhaba, şimdi sende mi

vsc's picture

merhaba, şimdi sende mi Oflusun diyeceğim de bu sefer Oflu kesin kızacak bana onun için demiyorum hemen konuya gireceğim bir TÜR(class) oluşturdun ve bu tür e birkaç node ekledin veya var olan bir tür e birkaç node ekledin ve bunları bir manu oluşturup listelemek ve bir lock içinde görüntülemek istiyorsun sanırım; bunun için Taxonomy e gideceksin ilgili tür e terim ekleyeceksin ve bu terim linkini biryere not edeceksin, sonra menü işlemlerine gideceksin ve yeni bir menü oluştururken link olarak taxonomy ye eklediğin terim in linkini vereceksin, sonra sitenin kullanıcı menüsüne bakacaksın senin eklediğin menü nerede ise klikleyip neticeye bakacaksın... eğer anlattıklarını yanlış anlamamışsam göreceğin netice tam senin istediğin olacak :) kolay gelsin

Views ile terime göre benzer içerikleri göstermek

CihanA's picture

Views ile terime ait benzer içerikleri göstermek için http://www.aratmedya.com/webtasarim/views-ile-terime-gore-benzer-icerikl... adresinde yabancı bloglarda buluna dersi Türkçeye çevirmiştim. Belki işine yarar. Kolay gelsin.

şimdi beni anlamamışsınız.

uzmankodra's picture

şimdi beni anlamamışsınız. wiews le birlikte gelen taxonomy_term i biliyorsunuz. bu özellik aktif kullanıyorum. bunu ayrı tutatlım. bunu ben ayrıca bir de block ile kullanmak istiyorum. (cloneladım) ama block da kullanılmıyor. bununla ilgili çeşitli açıklamalar vardı. olmamasına dair. ama çözüm olarak da php code kullanılıyor. bana bu kod gerekiyor. nasıl yazabilrim. otomatik olarak bir terim sayfası açıldığında içindeki nodelar listenmesi için.

yazdıklarını tam olarak

vsc's picture

yazdıklarını tam olarak anlamakta zorlanıyorum, sen views ın retationship özelliğini kullanarak node lar arasında bir ilişik oluşturmaya çalışsan daha doğru olacak gibi... aşağıdaki link e bir bakıver ve kendi düşüncene göre uyarlamaya çalış: http://drupaldersleri.org/ders/295/views-relationships-iliskiler.html
kolay gelsin

istediğim şeyin zor

uzmankodra's picture

istediğim şeyin zor olmadığını bildiğim halde bu kadar basit birşeyin olmamasına inanamıyorum.

uzmankadro kardeşim sorun da

vsc's picture

uzmankadro kardeşim sorun da burada zaten, sen ne yapmak istediğini tam anlatabilsen birimiz sana yardımcı olacağız da henüz o aşamaya gelemedik, pembeci nerelerdesin şu işe bir el atıversen de olay çözülse... iyi çalışmalar

vsc abicim daha nasıl

uzmankodra's picture

vsc abicim daha nasıl anlatayım bilmiyorum. en basit şekilde anlatmaya çalışıorum.

http://drupaldersleri.org/ders/324/views-arguments-degiskenler.html

linkteki veya aşağıdaki, php code kısımında örnek gösterilen php kodu var. bana bu örnek kodun taxonomy terimi için olanı gerekiyor. yani ziyaretçi bir terime tıkladığnda veya bir terim sayfasını açtığında o terim içindeki nodeları blok içinde göstericem. tek bir terim için istemiyorum. dinamik olucak. bir terim içinde node varsa gösterecek yoksa göstermeyecek. aynı taxonomy_term işlevi görecek ama blok şekilnde çalışacak ve taxonomy_term aktifken aynı sayfalarda birlikte görünecek. tek farkları birisi sadece blok ile gösterilecek. umarım yeterince anlaşılır anlatabildim şimdi. daha nasıl anlatacağımı bilemiyorum.


PHP Code: Argument değerini php kodu ile hesaplayabilir ve return komutu ile görünüme gönderebilirsiniz. Anlatımın başında verdiğim bilgiyi aklınızın bir kenarına yazmanızı söylemiştim; şimdi o bilgiyi tekrar hatırlayalım: "bloklar argument değerini doğrudan URL'den alamazlar". İşte bloklar için genellikle bu seçenek kullanılarak php kodu yardımıyla url'den alınan argument değeri blok görüntüsüne aktarılır. Örneğin user/1 yolundaki "1" değerini Kullanıcı: ID argument'ına aktarmak için şöyle bir kod kullanabilirsiniz (bu örneği kod kullanmadan bir üstteki User ID from URL seçeneği ile de yapabilirsiniz tabii ki ama burada amaç örnek göstermek):

if (arg(0) == 'user' && is_numeric(arg(1))) {
return array(arg(1));
}

Bu kodda URL'deki argument değerlerini arg() fonskiyonu ile alıyoruz. arg(0)=='user' ile ilk argument değerinin user olduğundan emin oluyor, is_numeric(arg(1)) ile de ikinci argument değerinin sayısal bir değer olup olmadığına bakıyoruz. Eğer bu iki koşul da sağlanırsa yukarıdaki php kodu Kullanıcı: ID argument değeri için user/1 yolundaki "1" değerini return array(arg(1)); ile döndürüyor. Sonuçta sitemizin kullanıcı profil sayfalarında göstermek için atayacağımız bu argument'a sahip bir Views bloğu hangi üyenin profiline bakılıyorsa bunu url'den anlayıp o üye ile ilgili içeriği sunacak. Yani user/1 sayfasında id'si bir olan admin kullanıcısı ile ilgili içerikler, user/2 sayfasında id'si 2 olan kullanıcıyla ilgili olan sunulacak.


peki bu işi views ile yapmak

vsc's picture

peki bu işi views ile yapmak için bu kadar kasmaya gerek yok, bir dağı aşamıyorsan etrafından dolaşırsın netice aynı olur, biraz ara ver kafan dinlensin(zaman zaman bunu ben yapıyorum iyi oluyor) sonra relevant content modülünü sen de incele ve ofluya anlattıklarımı tekrar oku, bu modül senin işin için de yeterli olması gerekir, sonra tekrar görüşelim, iyi çalışmalar

hocam relevant content işime

uzmankodra's picture

hocam relevant content işime yaramıyor.. ben istediğim şeyi en güzel views ile alabilirim. Herşeyi düşündüm. ve ayrıca views dururken başka bir eklenti kullanmak gereksiz olur diye düşünüyorum.

views argument

bilvanisli's picture

argument ekliyoruz.
eklediğimiz argument Taxonomy:Term ID

ekle diyoruz.

seçenekler kısmında "provide default argument" seçiyoruz.

"Default argument type:php code"

Php Kodu:

$node=node_load(arg(1));
if($node)
{
         foreach($node->taxonomy as $term)
         {
               $terms[]=$term->tid;
         }
          return implode ('+',$terms);
}
else
{
return;
}

umarım işine yarar.

Bu kodda "a" içerik türünde bir sayfa açıldığında "block" olarak aynı term id ye sahip "b" içerik türü gösteriliyor.
Yani sen "a" içerik türünde sayfalar oluşturup(terim açıklaması gibi bişi olabilir, ya da içerik olmayabilir vb.) bahsettiğin şekilde bu node un linkine tıklandığında "b" türündeki içerikler listelenir. Burada "b" senin listelemek istediğin içerik türü.
Views ın filter kısmına da Node type=b yaparsın bence olur biter :)

Anlatımım biraz gariptir. Umarım sorun olmaz :)

bilvanisli çok teşekkür

uzmankodra's picture

bilvanisli çok teşekkür ederim ilgin içiin. ama bir node sayfası açılınca değil. sadece bir terim sayfası görüntülenirken o terimdeki nodelar göstircem. verdiğin kodları denedim güzel çalışıyor ama node içinde senin de söylediğin gibi. malesef işimi görmüyor. lütfen yazabiliyorsan terim içindekileri listelecek bir kod yaz bana. lütfen :(

Terim sayfasında zaten

CihanA's picture

Terim sayfasında zaten pembecinin de dediği gibi nodelar listeleniyor...

Ne yapmayı hedeflediğini bende anlayabilmiş değilim. Terim sayfası ile kasdettiğin nedir daha ayrıntılı açıklayabilir misin? Örneğin bir resim ekle ve sunabilir misin veya bahsettiğin sayfanın url sini paylaşırsan biraz daha anlaşılır olabilir düşüncesindeyim.

Yoksa denildiği gibi terim sayfasında ilgili düğümler zaten listelenir ve bu sayfayı düzenlemek istiyorsan da pembecinin de dediği gibi views 2 ile beraber gelen taxonomy_term views bölümünü etkin hale getirip düzenlemen yeterlidir.

önemli değil. ben o yüzden

bilvanisli's picture

önemli değil.
Aslında benim anlatmak istediğim şuydu. "a" türünde oluşturduğun sayfaların node olduğunu sadece sen bileceksin. Kategoriymiş gibi görünecek. Bunu bir düşün bence. Diğer şekilde nasıl yapabiliriz bi bakalım:

öncelikle arg konusunu anlamak gerek. Mesela benim sitede taxonomy teriminin url si
" /taxonomy/term/5" şeklinde bu url de

arg(0)="taxonomy"
arg(1)="term"
arg(2)="5"

bu sebeple de yukarıdaki yorumumdan sadece php kodu değişiyor. PHP kodu:

if (arg(2) && is_numeric(arg(2))) {
    return arg(2);
  }

şeklinde oluyor. Takma adlar sonucu değiştirmez. Sanırım seninkinde de aynı olacaktır.

bu arada üstteki yorum carpuntoken in sitesinde yazdığıyla aynıymış. Özür dilerim.

Default view taxonomy_term

pembeci's picture

Views 2 içinde zaten Drupal'ın taxonomy sayfalarını simüle eden taxonomy_term diye bir hazır view var. Onu aktifleştirip (enable) sonra da "Add Display"den "Block" seçsen istediğine zaten ulaşmayacak mısın? Ben mi bu sefer de ne istediğini tam anlamadım.

bilvanisli verdiğin kod işe

uzmankodra's picture

bilvanisli verdiğin kod işe yaradı. çok tşkler.