Rastgele sıralamayı kullanırken kopyaları nasıl kaldırırım?


31

Düğüm başlığını ve logosunu (bir cck alanı) gösterdiğim bir görünüm oluşturdum. Tartışmalarda taksonomi terim adını geçtim.

Sonuçta bir düğüm 2 veya 3 kez görüntüleniyor; Sorgu ayarlarında farklı onay kutusunu zaten kontrol ettim, ancak bu da çalışmıyor. Yinelemelere neden olan rastgele sıralama kullandım; rastgele sıralama kaldırdığımda, iyi çalışıyor.

Rastgele sıralamayı devre dışı bırakmadan çoğaltmaları nasıl önleyebilirim?


Birisi, kopyaların ve karşı önlemlerin sebeplerini açıklarsa, gerçekten iyi olurdu. 'belki' işi sadece yarı optimal olan 5 çözüme sahip
n3rd

Yanıtlar:


19

Yinelenen kayıtları kaldırmak için görünümler birleştirme ayarlarını etkinleştirerek GROUP BY veya DISTINCT uygulayabilirsiniz.
1. Git ve görünümünüzü düzenleyin
2. Gelişmiş »DİĞER bölümünde, Birleştirmeyi kullan: seçeneğini etkinleştirerek etkinleştirin :
3. ALAN veya FİLTRE KRİTERLERİ bölümünde, hangi alanlara göre gruplandırmak veya ayırt etmek istediğiniz Toplama ayarlarını seçin ve uygulayın .


2
Örnek problemim var, kullanım kümelemesini etkinleştiriyorum ve dosyalamada distinctseçim yok, Toplama tipinde hangi tip seçmeliyim?
Yusef

39

Bir görünümde farklı değerler elde etmenin basit yolu, aşağıdakileri yapmaktır:

  1. Git ve görünümünü düzenle
  2. Gelişmiş »DİĞER bölümünde" Sorgu ayarı "üzerine tıklayın
  3. "Farklı" onay kutusunu işaretleyin.

Benim sorumla, Sorgu ayarlarında farklı seçeneği işaretlemiş olduğumdan zaten bahsetmiştim.
Ahmad,

Eugene ve Clive, İş, Bunu paylaştığınız için teşekkür ederiz.

8

Görünümleri kullanarak farklı değerler elde etmenin basit yolu, aşağıdakileri yapmaktır:

  1. Git ve görünümünü düzenle
  2. Gelişmiş »DİĞER bölümünde" Sorgu ayarı "üzerine tıklayın
  3. "Farklı" onay kutusunu işaretleyin.

Yinelenen kayıtları kaldırmak için görünümler birleştirme ayarlarını etkinleştirerek GROUP BY veya DISTINCT uygulayabilirsiniz.

  1. Git ve görünümünü düzenle
  2. Gelişmiş »DİĞER bölümünde Kullanım toplama etkinleştirilerek: Evet
  3. ALANLAR veya FİLTRE KRİTERLERİ bölümünde, hangi alanlara göre gruplandırmak veya ayırmak istediğiniz Toplama ayarlarını seçin ve uygulayın.

5

Bu sorunun çoktan cevaplandığını biliyorum, ancak kullanımın bir kısmı için bu çözümler işe yaramıyor. Ancak, biraz araştırma yaptıktan sonra ihtiyaçlarım için işe yarayan bir çözüm buldum.

Bunu düzeltmeme izin veren gerçekten yararlı bir geçici çözüm buldum. Ben kod pasajını DropBucket'e gönderdim. Temel olarak, bir grup cümlesi ve alanı belirten sorgu yorumları için tüm görünüm sorgularını kontrol eden bir Drupal 7 sorgu değiştirme kancası uygularsınız. Sonra bu groupby'yi SQL sorgusuna ekler.

/**
 *  Found this trick on theoleschool.com.
 *  
 *  Description: Allows the view developer to specify the query
 *  group by action in the query comments. Great way to force the
 *  removal of duplicates.
 *  
 *  Just go into your query comments and type in "groupby:" with
 *  that colon followed by the field you want to group by.
 * 
 *  Examples...
 *  groupby:node.nid
 *  groupby:file_managed_file_usage.fid
 * 
 *  Ref-Comment: http://theoleschool.com/comment/496#comment-496
 *  Ref-Article: http://theoleschool.com/blog/using-hookviewsalter-add-group-statement
 */
function mymodule_query_alter(QueryAlterableInterface $query) {
  if ($query->hasTag('views')) {
    static $count;
    $view =& $query->getMetaData('view');

    if (strstr($groupby = $view->query->options['query_comment'], 'groupby')) {
      list($action, $field) = explode(':', $groupby);

      if (strlen($field) > 0) {
        $query->groupBy($field);
      }
    }
  }
}

http://dropbucket.org/node/153

Kaynak referansı sayfadaki yorumlarda yer almaktadır.


DISTINCT ile Views 3.3 ve daha üst sürümlerinde düzgün çalışmadığı bilinen sorunların olduğunu da eklemek istiyorum.
Patrick,

1
Yukarıdakileri yapmak yerine, görünümün adını kontrol edebilir ve ardından grubu ekleyebilirsin.
Potney Switters

Harika çalışıyor. Buradaki çözümlerin hiçbiri benim için işe yaramadı ... kodlamada son çözümü bulmak için her zaman rock kodlama :)
RajeevK

4

Ben de aynı problemi yaşadım. Sonunda Views Distinct modülünü kurarak çözdüm .

Görünümlerdeki ilişkiler veya diğer bağlantılar genellikle "yinelenen" sonuçlar oluşturur. Örneğin, birden çok değeri olan bir alana sahip olan bir düğüm, çoklu değer alanındaki değer başına Görünüm başına bir kez gösterilebilir. Sinir bozucu ve Görünümler Kullanıcı Arabirimindeki "DISTINCT" SQL sorgusu seçeneği aslında sorunu çözmüyor çünkü sonuç satırı teknik olarak farklı. Görünümler Ayrı , bu "yinelenen" satırları kaldırmak veya birleştirmek için basit bir GUI yöntemi vermeyi amaçlar.


0

Çok değerli tarih alanları ile ilgili sorunlar vardı. Maddeler bir tarih girildiği sıklıkta gösterildi. Burada belirtilen diğer hiçbiri benim için çalıştı. Ama sonra yine D7 çalışan bir D6 çözüm buldu orada .

hook_views_pre_render(&$view)sihirli kelime. Örnekte, yalnızca belirli bir görüntünün belirli bir ekranı ile sınırlandırılmıştır. Umarım yardımcı olur.

function MYMODULE_views_pre_render(&$view) {
  $used_nids = array();

  if ($view->name == 'events') {

    if ($view->current_display == 'page_2') {

      foreach ($view->result as $row) {

        if (!in_array($row->nid, $used_nids)) {

          $new_view_result[] = $row;
          $used_nids[] = $row->nid;
        }
      }
      $view->result = $new_view_result;
    }
  }
}

EDIT: Ne yazık ki, bu bir limit ayarlanmışsa, görünümdeki çift öğelerin sayısını çıkarır. Birisi belki bunun için bir çözüm bulursa, yorum yapın!


0

Eski bir ipliği uyandırmak değil, cevabı (Drupal 7 ve açık arama filtresi kullanıyorsanız), "arama: arama terimleri" nin altındaki "arama puanını kaldır" seçeneğini işaretlemektir.

"Filtre Kriterleri" altında

"Arama: Arama Terimleri" ekleyin

"Arama Puanını Kaldır" seçeneğini işaretleyin

"Uygula (tüm ekranlar)" üzerine tıklayın

Kaydet'e tıklayın


0

Bu diğer yöntemlerin hiçbiri benim için çalıştı, ancak Views Random Seed modülü aslında hile yaptı. Yine de, sorunlarım çağrı cihazı kullanmakla daha fazla ilgiliydi. İşte bu modülün proje sayfasından bir alıntı:

Tohum ile rastgele bir sipariş işleyicisi ekler. Sql RAND () işlevinde sabit bir tamsayı argümanı N belirtilirse, tekrarlanabilir bir sütun değerleri dizisi üreten tohum değeri olarak kullanılır. Bu sayede sayfalama yapılmasına ve iki defa gözüken eşyaların bulunmamasına olanak sağlar. PHP kullanarak özel bir tohum hesaplamak da mümkündür, bu sayede günün tarihi gibi değişkenlere bağlı olarak rastgele rasgele sayılar oluşturabilirsiniz.


0

Birden çok var Date fieldsve baştan itibaren sıralamak istiyorum FIRST date... İşte nasıl çalıştığını: In Views->advanced->Other: use aggregation: YES Ve sonra: SORT CRITERIA->Aggregation settings->Aggregation type: COUNT

countÖrnek yerine bana rakam vermeyi umuyordum , ancak sonucu belli etti ...

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.