Views'te Tarihe göre Satıra renk nasıl verilir?

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

Selam arkadaşlar benim yapmaya çalıştığım Viewte oluşturduğum tabloda bir tarih alanı var ve ben tabloda bu tarihten öncesi için o satırın renk değiştirmesi istiyorum alan adı : field_yayintarihi bunu view theme'de if içerisinde nasıl belirtmeliyim?
Yardımı olacak arkadaşlara şimdiden çok teşekkürler.

Comments

Arkadaşlar site adresimde

knsrdm's picture

Arkadaşlar site adresimde http://www.dizidownload.com
buradaki gerisayım(http://www.dizidownload.com/gerisayim) kısmındaki tabloyu renklendirmek için bunu öğrenmek istiyorum. yardımcı olabilecek varmı?

bilvanisli's picture

orada kullanabileceğin template(tpl) ler belirtilmiş. Bunlardan Display output u tıkladığında onun içeriğini gösterir.Bu içerikte gerekli yere if koyup bu dosyayı oradaki en spesifik örnek(views-view--Gerisayim2--default.tpl.php gibi bişi) ismiyle kaydedip tema dosyaları(ikarev) içine koy. Sonuç elde edemezsen o dosyanın içeriğini buraya yazarsan belki yardımcı olabiliriz. Yazdıklarımdan ben bile bişi anlamadım. Umarım sen anlarsın:)

views-view-table--Gerisayim2-

knsrdm's picture

views-view-table--Gerisayim2--page-1.tpl
Dosyasının içeriği

<?php
if (!empty($title)) :
?>

<?php
endif;
?>
<?php
foreach ($header as $field => $label):
?>

<?php
endforeach;
?>

<?php
foreach ($rows as $count => $row):
?>
<?php
print implode(' ', $row_classes[$count]);
?>
">
<?php
foreach ($row as $field => $content):
?>

<?php
endforeach;
?>

<?php
endforeach;
?>

<?php
print $title;
?>
<?php
print $fields[$field];
?>
">
<?php
print $label;
?>
<?php
print $fields[$field];
?>
">
<?php
print $content;
?>

Şunu bir dene

pembeci's picture

Dosyanın html kısımları input filtre'a takılmış sanki. implode'lu kısımda şöyle birşeyler yapman gerekiyor muhtemelen:

<?php
print implode(' ', $row_classes[$count]);
?>

yerine

<?php
$row_classes
[$count][] = ($row['field_yayintarihi']['value'] < time()) ? "past" : "future";
print
implode(' ', $row_classes[$count]);
?>

bu sayede her tablo satırına "past" veya "future" diye bir class ekleyip daha sonra css'yle o satırların rengini ayarlayabilirsin. HTML koduna bakıp bu class'lar eklenmiş mi kontrol et. Şayet yukarıdaki çalışmazsa şunu bir dene ve mesaj olarak gösterilen çıktıyı buraya gönder. Yine aynı yerde:

<?php
if ($count == 0) drupal_set_message(print_r($row, true));
print
implode(' ', $row_classes[$count]);
?>

Dediğiniz eklemeyi yaptım

knsrdm's picture

Dediğiniz eklemeyi yaptım fakat sayfa kaynağına baktığımda bütün satırlar şu halde gözüküyor
tr class="odd past"
ve
tr class="even past"
hiçbir satır
tr class="odd future"
haline gelmedi!

field_yayintarihi'nin formatına baktım! Time zone handling: User's Time Zone olarak ayarlandı. bundan kaynaklanan bir sorun olabilirmi!
ben
tr bgcolor="---- Eğer tarih bugünse #CCCCCC ---- bugünden eskiyse #999999 ---- bugünden büyükse #FFFFFF"
şeklinde yapmayı düşünmüştüm fakat neyi neyle karşılaştırmak gerektiğini anlayamadım.

Ek: Bu alan!
ContentTemplate Eklentisinde
$node->field_yayintarihi[0]['value'] **
2009-05-17T08:00:00


<?php
if ($count == 0) drupal_set_message(print_r($row, true));
print
implode(' ', $row_classes[$count]);
?>

bu kısmı eklediğimde ise şu hata mesajını aldım!

Array ( [field_dizi_adi_value] => The Vampire Diaries [field_sezonno_value] => 01 [field_bolumno_value] => 12 [field_bolumadi_value] => Unpleasantville [field_yayintarihi_value] => Cum, 01/29/2010 - 03:00 [field_yayintarihi_value_1] => 5 gün 7 saat önce )

field value timestamp değilmiş demek

pembeci's picture

Views anlaşılan timestamp'i alıp biçimlendiriyor. O zaman şunu deneyebilirsin:

<?php
$row_classes
[$count][] = (strpos($row['field_yayintarihi_value_1'], "sonra") === false) ? "past" : "future";
print
implode(' ', $row_classes[$count]);
?>

style dosyanın uygun bir yerine de şöyle birşey ekleyebilirsin:

div.gerisayim table tbody tr.past {
   background-color : #999999;
}

div.gerisayim table tbody tr.future {
   background-color : #FFFFFF;
}

dediklerinizi yaptım ve sonuç

knsrdm's picture

dediklerinizi yaptım ve sonuç olumlu
yardımınız için çok teşekkür ederim

Son olarak http://www.tvcountdown.com/ adresindeki gibi dizileri kullanıcıların seçebilmesi için checkbox kullanabilirmiyim bu konuda bilginiz varmı?

Kodun son hali!!!

Biraz değiştirip şu hale getirdim.

<?php
       
if(stripos($row["field_yayintarihi_value_1"], "sonra")) {
                print
"future ";
        }
        if(
stripos($row["field_yayintarihi_value_1"], "sonra") == false && stripos($row["field_yayintarihi_value_1"], "dak") == false) {
                print
"past ";
        }
        if(
stripos($row["field_yayintarihi_value_1"], "sonra") == false && stripos($row["field_yayintarihi_value_1"], "dak") == true)  {
                print
"bugun ";
        };
print
implode(' ', $row_classes[$count]);
?>

işe yaramasına sevindim

pembeci's picture

checkbox'lar için views eklentisinin exposed filtre özelliğini bir şekilde kullanman lazım:

http://groups.drupal.org/node/12830
http://www.google.com.tr/search?q=drupal+views+exposed+filter

şu eklentiler de işine yarayabilir belki:

http://drupal.org/project/betterselect
http://drupal.org/project/hierarchical_select