Görünümler bağlamsal filtre VEYA nasıl kullanılır?


18

Bir süre için net ve SE'ye göz attıktan sonra, 2'yi contextual filtersOR ile birleştirmek için iyi bir çözüm yoktur (varsayılan AND yerine).

Bu yazı bir PHP hackinden bahsediyor ve bu yazı , 7.x-3.1 görünümlerinde yakın zamanda yapılan bir değişikliği belirten bir konuya bazı bağlantılar içeriyor . Ayrıca hook_views_query_alter(&$view, &$query)görünümü değiştirmek için kullanıldığından da bahseder .

Çalışan bir örneği veya daha iyi bir çözümü olan var mı?


Şu andan itibaren daha iyi bir çözüm olduğunu düşünmüyorum. İşaret ettiğiniz konularda belirtildiği gibi, bu görünüşte devam eden bir konudur. Ben bu hafta aynı sorun üzerinde tökezledi ve ekleri ile bir çözüm bulmak zorunda kaldı. Ama sonra, karışık bir liste değil, tüm ihtiyaçlara uymayan iki bağlantılı liste veriyor.
Countzero

Yanıtlar:



7

Burada başlayan yorum dizisi etkili bir geçici çözümü açıklar. MotoTribe aynı konuya bağlandı, ancak sorulduğu sırada, bu sayfada çalışan bir örnek yoktu. Şimdi, aşağıdaki gibi var:

Modülünüzde hook_views_api()şunları uygulayın :

function MODULENAME_views_api() {
  return array(
    'api' => 3,
  );
}

Ardından modülünüze MODULENAME.views.inc adlı yeni bir dosya ekleyin ve uygulayın hook_views_query_alter():

function MODULENAME_views_query_alter(&$view, &$query) {
  if ($view->name == 'whatever_your_view_is_called') {
    $query->where[0]['type'] = 'OR';
  }
}

Ayrıca bu uyarıya dikkat edin:

Görünüşe göre, her Görünümle birlikte gelen "İçerik: Yayınlandı (Evet)" filtresinin, bağlamsal filtrelerle (grup 0) aynı filtre grubunun bir parçası olduğu düşünülür. Bu yüzden, görünümümün yalnızca bağlamsal filtrelerle belirtilen (yayınlanan AND (arg1 VEYA arg2 VEYA ...)) herhangi bir gruba ait yayınlanmış düğümleri görüntülemesini sağlamak için "İçerik: Yayınlandı (Evet)" yeni bir filtre grubu ("Ve / Veya, Yeniden Düzenle" iletişim kutusunu kullanarak). Kullanıcı arayüzünün yeni bir gruba taşındıktan sonra "İçerik: Yayınlandı (Evet)" filtresini farklı göstermediğini (ancak başka bir grup bulunmadığını), ancak kendisine geçirilen sorgu nesnesinin hook_views_query_alter()taşındığını unutmayın yukarıdaki 0'daki kodun artık onu etkilememesine neden olarak grup 0'dan grup 1'e.


1
En azından OP sorusuna yapılan göndermelerin alaka düzeyini açıklamak daha iyidir. Bağlantılar devam edemeyeceğinden, yalnızca bağlantı yanıtları önerilmez.
Triskelion

@Triskelion: Ah, kesinlikle haklısın. Bunu düzeltmek için cevabımı düzenledim.
coredumperror

4

AND yerine OR ile kullanılacak bağlamsal filtreler yapmak için Görünüm işleyicilerini değiştiren bir modül vardır: İçerik Bağlamlı Filtreleri OR veya


"Geçerli kullanıcı" + "işaretli kullanıcılardan gelen içerikle bir görünüm oluşturmak istiyorum (geçerli kullanıcı takip bayrağı [kullanıcı] kullanılarak işaretlendi)"
Umair

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.