2 alanı karşılaştırarak görünümü nasıl filtreleyebilirim? Alan-a <alan-b


18

2 fiyat alanı olan bir ürün içerik türü var.

Fiyat-A'nın fiyat-B'den düşük olduğu tüm ürünleri gösteren bir görünüm oluşturmak istiyorum.

Sadece bir filtre ekleyip fiyat-A'yı seçip daha az çalışmayı seçip değeri fiyat-B olarak ayarlayabileceğimi umuyordum, ancak bunu yapamazsınız.

Bir görünüm kanca, özellikle hook_views_query_alter kullanarak baktım ama hiç şansım olmadı.

Ben de Views PHP modülünü kullanmayı denedim ve işe yarayamadım.

Bunu başarmanın en iyi yolunu bilen var mı?

Yanıtlar:



4

Drupal Yanıtlar Yığın Değişimi'ne hoş geldiniz! Bunu şimdiden ve bildiğim gibi Drupal görüşlerinde başarmanın doğrudan bir yolu yok.

Views PHP modülünü kullanarak bunu yapabilirsiniz . Bu modülü etkinleştirin ve yukarıdaki modülü yükledikten sonra görünüm kategorisi Global Kategorisinden seçebileceğiniz bir filtre PHP filtresi ekleyin.

Filtrenin PHP kodu bölümünde aşağıdaki gibi bir şey php kodu ekleyin.

$node = node_load($data->nid);

$field_a = field_get_items('node', $node, 'field_price_a');
$price_a = field_view_value('node', $node, 'field_price_a', $field_a[0]);

$field_b = field_get_items('node', $node, 'field_price_b');
$price_b = field_view_value('node', $node, 'field_price_b', $field_b[0]);

if ($price_a >= $price_b) {
  return TRUE;
}

Field_price_a'yı Fiyat A alan adınızla ve field_price_b'yi Fiyat B alan adınızla değiştirin.

Test ettim ve benim için çalıştı! Umarım sen de kırabilirsin :-)


Önerin için teşekkürler. Hala bu kod biraz çalışmasını alamadım ve dsm ($ data) yaparken ortaya alanları kullandık; Ben de sadece bir onay kutusu eklemek ve onay kutusu işaretli ise filtre düşünüyorum. Yardımın için teşekkürler.
Fadzy

Bu arada, herhangi bir özel kodlamaya veya herhangi bir katkıda bulunan modüle ihtiyaç duymadan görünümlerle mümkündür.
Елин Й.



-2

Fiyat, içerik türünüzdeki bir alansa, Drupal 7 görünümlerinde otomatik olarak ve kolayca bir alan karşılaştırıcısı seçebilirsiniz. Sanırım bu işe yaramalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.