web-gelistirme-sc.com

Rastgele sıralamayı kullanırken kopyaları nasıl kaldırabilirim?

Düğüm başlığı ve bir logo (bir cck alanı) görüntülediğim bir görünüm oluşturdum. Argümanlarda sınıflandırma terimi adını geçtim.

Sonuçta bir düğüm 2 veya 3 kez görüntülenir; Sorgu ayarlarındaki farklı onay kutusunu zaten işaretledim, ancak bu da çalışmıyor. Ben kopyaları neden gibi görünüyor rastgele sıralama kullandım; Rastgele sıralamayı kaldırdığımda iyi çalışıyor.

Rastgele sıralamayı devre dışı bırakmadan kopyaları nasıl önleyebilirim?

30
Ahmad

Görünüm toplama ayarlarını yinelenen kayıtları kaldırmak için etkinleştirerek GROUP BY veya DISTINCT uygulayabilirsiniz.
1. Git ve görüşünü düzenle
2. Gelişmiş "DİĞER bölümünde Toplama kullan: Evet
3. ALANLARI veya FİLTRE KRİTERLERİ bölümünde, gruplamak istediğiniz alanları seçin ve uygulayın Toplama ayarları tarafından veya farklı.

19
Sithu

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

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

Views kullanarak farklı değerler elde etmenin basit yolu aşağıdakileri yapmaktır:

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

Görünüm toplama ayarlarını yinelenen kayıtları kaldırmak için etkinleştirerek GROUP BY veya DISTINCT uygulayabilirsiniz.

  1. Git ve görüşünü düzenle
  2. Gelişmiş "Diğer bölümünde, Toplamayı kullan seçeneğini etkinleştirerek: Evet
  3. SAHALAR veya FİLTRE KRİTERLERİ bölümünde, hangi alanlara göre gruplamak istediğinizi veya farklı yaptığınız Toplama ayarlarını seçin ve uygulayın.
8
no name

Bu sorunun zaten yanıtlandığını biliyorum, ancak bazı kullanımlar 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 kullanışlı bir çözüm buldum. Kod snippet'ini DropBucket'e gönderdim. Temelde, bir groupby yan tümcesi ve alanı belirten sorgu açıklamaları için tüm görünüm sorgularını denetleyen bir Drupal 7 sorgu değiştirme kancası uygularsınız ve 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/15

Kaynak referans sayfadaki yorumlardadır.

5
Patrick

Ben de aynı problemi yaşadım. Sonuçta Views Distinct modülünü yükleyerek çözdüm.

Views'daki ilişkiler veya diğer birleştirmeler genellikle "yinelenen" sonuçlar oluşturur. Örneğin, birden çok değeri olan bir alana sahip bir düğüm, çok değerli alandaki değer başına bir kez Görünüm'de görünebilir. Sinir bozucu ve Görünüm satırında "DISTINCT" SQL sorgu seçeneği aslında sorunu çözmüyor çünkü sonuç satırı teknik olarak farklı. Views Distinct bu "yinelenen" satırları kaldırmak veya toplamak için basit bir GUI yöntemi vermeyi amaçlamaktadır.

4
雨滴米

Birden çok Date fields ve FIRST date... İşte böyle oldu: In Views->advanced->Other: use aggregation: YES Ve sonra: SORT CRITERIA->Aggregation settings->Aggregation type: COUNT

count örneğin yerine sayı vermek için beklediğimden, ancak sonuç farklı yaptı ...

0
Amadeus

Çok değerli tarih alanları ile ilgili sorunlar vardı. Öğeler tarih girildiği sıklıkta gösteriliyordu. Burada bahsedilen diğer çözümlerin hiçbiri benim için çalışmadı. Ama sonra hala D7'de çalışan bir D6 çözümü buldum orada .

hook_views_pre_render(&$view) sihirli bir kelimedir. Örnekte, yalnızca belirli bir görünümün belirli bir görüntüsüyle sınırlıdı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;
    }
  }
}

DÜZENLE: Maalesef bu, bir sınır ayarlanmışsa, yinelenen öğe sayısını görünümden çıkarır. Birisi bunun için bir çözüm bulursa, lütfen yorum yapın!

0
leymannx

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

Tohumlu rastgele bir sipariş işleyici ekler. Sql Rand () işlevinde sabit bir tamsayı bağımsız değişkeni N belirtilirse, yinelenebilir bir sütun değerleri dizisi üreten çekirdek değeri olarak kullanılır. Bu, sayfalamayı ve öğelerin iki kez görünmemesini mümkün kılar. PHP kullanarak özel bir tohum hesaplamak da mümkündür, böylece günün tarihi gibi değişkenlere dayalı sahte rasgele sayılar oluşturursunuz.

0
Mike Pfeiffer

Eski bir iş parçacığını uyandırmamak, ancak yanıt (Drupal 7 ve açıkta bulunan bir arama filtresi kullanılıyorsa), "arama: arama terimleri" altındaki "arama puanını kaldır" seçeneğini işaretlemektir.

"Filtre Kriterleri" altında

"Ara: Arama Terimleri" ekle

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

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

Kaydet'i tıklayın

0
Bryan