it-swarm.com.de

Wie zeige ich nur 3 der neuesten Beiträge für jeden Begriff in einer Ansicht?

Mit Hilfe einer anderen Frage: Neueste Knoten für jeden Taxonomiebegriff in Ansichten anzeigen Ich konnte die gewünschte Ansicht erstellen, außer dass alle Beiträge für jeden Begriff angezeigt werden (gruppiert nach Begriff). Wie beschränke ich jeden Begriff so, dass nur 3 der neuesten Beiträge angezeigt werden?.

z.B.

Term 1
- Beitrag 1
- Beitrag 2
- Beitrag 3

Term 2
- Beitrag 1
- Beitrag 2
- Beitrag 3

Term 3
- Beitrag 1
- Beitrag 2
- Beitrag 3

13
Nigel Waters

Wenn Sie nur einen Knoten benötigen, können Sie die Beziehung "Repräsentativer Knoten" verwenden. Wenn Sie jedoch drei Knoten pro Begriff benötigen, verwenden Sie etwas wie Ansichtsfeldansicht .

1) Erstellen Sie eine "untergeordnete" Ansicht für den Inhalt. Etwas wie das: enter image description here

Fügen Sie Taxonomiebegriffsargumente, Pager-Limits, Sortierung usw. hinzu: enter image description here

Jetzt können Sie diese Ansicht an eine andere anhängen.

2) Taxonomieansicht erstellen: enter image description here

Fügen Sie ein ID-Feld für versteckte Begriffe hinzu und fügen Sie dann das Feld "Global: Ansicht" hinzu: enter image description here

Vergessen Sie nicht, das Caching zu konfigurieren. Von Ansichten Feldansicht Seite:

Es wird dringend empfohlen, dieses Modul in Verbindung mit dem Zwischenspeichern von Ansichten zu verwenden. Ansichten Inhaltscache und Cache-Aktionen sind gute Möglichkeiten zum Zwischenspeichern von Ansichten.

9
kalabro

Nach weiteren Untersuchungen scheint Peek Summary genau das zu sein, was Sie wollen. Die Screenshots in der Dokumentation sind für Drupal 6, und es ist etwas anders in Drupal 7, daher habe ich einige aktualisierte Screenshots angehängt.

  • Wählen Sie "Zusammenfassung zusammenfassen" unter "Kontextfilter"> "Wenn der Filterwert nicht in der URL enthalten ist"> "Zusammenfassung anzeigen"> "Format".

Choose Peek Summary from 'Contextual Filters' > 'When the filter value is not in the URL' > 'Display a summary' > 'Format'

  • Sie sehen eine Ansicht von Unteransichten. Klicken Sie auf das Zahnrad neben dem Pager für die Gruppe, die Sie einschränken möchten.

Click pager preferences icon

  • Geben Sie die maximale Anzahl der Elemente ein, die in den Pager-Optionen angezeigt werden sollen.

First field under Pager Options

Sie müssen den Pager für jede Gruppe bearbeiten, die Sie einschränken möchten, was unglücklich ist. Wenn Sie den Pager für eine Gruppe bearbeiten, werden die Einstellungen für alle Gruppen geändert. Wenn Sie eine andere Anzahl von Knoten pro Gruppe als die Gesamtzahl der Gruppen anzeigen möchten, überschreiben Sie diese in den Einstellungen für "Format" unter "Kontextfilter" (im ersten Screenshot in lila).

Es hat den Nachteil, dass im Wesentlichen [n] Ansichten für [n] Gruppierungen erstellt werden. Dies kann je nach Anzahl der vorhandenen Gruppierungen ein Leistungsproblem darstellen, beschränkt die Abfrage jedoch nur auf die Anzahl der anzuzeigenden Gruppen. Dies kann Ihre Leistung je nach Anwendungsfall verbessern. Wie immer verantwortungsbewusst zwischenspeichern.

7
beth

Eine Möglichkeit, dies im Code einzuschränken, besteht darin, einem benutzerdefinierten Modul Folgendes hinzuzufügen:

function custom_views_pre_render(&$view) {
  //get the rows from the view just before render
  $results = $view->result;
  //create a counter
  $count = '';
  //we're going to built up a new $result array
  $new_results = array();
  //iterate through each view row
  foreach($results as $result) {
    //find the taxonomy term
    $term = $result->taxonomy_term_data_name;
    //add the term to a string of all the terms we've seen so far
    $count .= $term;
    //make sure to separate them with spaces to make them easier to count
    $count .= ' ' ;
    //count how many rows have the same term as the current one
    $term_count = array_count_values(str_Word_count($count, 1));

    if($term_count[$term] <= 3){
      //if this is the third or fewer row with this term, add it to the new result array
      $new_results[] = $result;
    }
  }
  //instead of the normal view output, only show the results we put in our array.
  $view->result = $new_results;
}

Dies dient zur Ansicht von Taxonomiebegriffen, die über eine Beziehung mit Knoten verbunden sind. Wenn Sie nur eine Ansicht der Knoten haben, kann Ihr Kilometerstand variieren.

Dies verhindert zwar die Anzeige von mehr als 3 pro Begriff, verhindert jedoch nicht, dass die Abfrage alle Ergebnisse für jeden Begriff zurückgibt, sodass die SQL-Leistung überhaupt nicht verbessert wird. Wenn Sie für jeden Begriff eine sehr große Anzahl von Ergebnissen haben, können Sie separate Ansichtsfenster anzeigen und alle mit CTools Page Manager in einer Region platzieren, damit Sie keine großen Abfragen ausführen.

Wie immer werden Sie dieses Zeug in der Produktion zwischenspeichern wollen.

2
beth