Wie können Sie Taxonomiebegriffe in einer Ansicht nach der Häufigkeit der Verwendung sortieren?

8

Ich erstelle eine Ansicht, in der die 10 beliebtesten Taxonomiebegriffe (Tags) aufgelistet sind. Derzeit habe ich die Ansicht, die alle Begriffe zurückgibt, und ich kann die Ansicht auf 10 beschränken, aber ich kann nicht herausfinden, wie die Begriffe nach Beliebtheit sortiert werden (dh wie oft sie auf allen Knoten verwendet werden).

Hat jemand Erfahrung damit?

Camsoft
quelle

Antworten:

9
  1. Erstellen Sie eine neue Ansicht
  2. Beschränkung auf Taxonomien "Taxonomien des Begriffs alle anzeigen"
  3. Fügen Sie eine Beziehung hinzu "Taxonomiebegriff: Inhalt mit Begriff"
  4. Verwenden Sie die Aggregation
  5. Feld "Inhalt: Titel" hinzufügen
  6. Aggregationstyp "Anzahl"
  7. Ändern Sie die Bezeichnung in "Anzahl der Verwendungszwecke".
  8. Sortierkriterien hinzufügen "Inhalt: Titel"
  9. Aggregationstyp "Anzahl"
  10. Sortieren Sie nach Belieben

es sollte so aussehen:

die Aussicht das Ergebnis

Saadlulu
quelle
Ich denke, das funktioniert richtig, stimmen Sie ab
Yusef
Funktioniert immer noch mit Drupal 8!
Insasse
Dieser unangenehme Moment, in dem Sie eine Benachrichtigung von SE erhalten und Ihre eigene Antwort von vor 7 Jahren lesen und sagen: "Wow, was sage ich?"
Saadlulu
0

Views 3 verfügt über eine (sehr Beta) Funktion "Gruppieren nach". Sie sollten dies verwenden und ein Zählfeld bestellen können.

Ich würde nicht garantieren, dass es funktioniert, aber es ist wahrscheinlich einen Versuch wert.

Jeremy French
quelle
Ich versuchte und versuchte und konnte es nicht zum Laufen bringen. :-(
Camsoft
Es tut mir leid, das zu hören, ich habe es in der Vergangenheit mit etwas arbeiten lassen, war aber dadurch eingeschränkt, dass es keine CCK-Felder verwendete. Es kommt aber noch nicht an.
Jeremy French
Die "sehr Beta" sollte ausreichen, um dies nicht als Antwort zu betrachten :) -1, da die Antwort auf eine Lösung hinweist, von der (noch) bekannt ist, dass sie Fehler aufweist, instabil ist und mit Sicherheit nicht funktioniert, dann funktioniert sie .
berkes
Es ist immer noch hilfreich für mich zu wissen, dass Views 3 bald damit umgehen kann. Danke für die Klarstellungen!
uwe
0

Am Ende habe ich mein eigenes benutzerdefiniertes Modul erstellt, um die Begriffe aus der Datenbank abzurufen und zu gruppieren / sortieren.

Bitte beachten Sie, dass ich den folgenden Code zum Posten leicht geändert und die geänderte Version nicht getestet habe. Es ist auch erwähnenswert, dass es für eine Site mit PostgreSQL geschrieben wurde, aber es sollte mit MySQL funktionieren.

/**
  * Implements hook_block_info().
  */
function MYMODULE_block_info() {

  $blocks['poptags'] = array(
    'info' => t('Most Popular Tags'),
    'cache' => DRUPAL_NO_CACHE
  );

  return $blocks;
}

/**
  * Implements hook_block_view().
  */
function MYMODULE_block_view($delta = '') {
  $block = array();

  switch ($delta) {
    case 'poptags':
      $block['subject'] = t('Most Popular Tags');
      $block['content'] = _MYMODULE_popular_terms();
      break;
  }
  return $block;
}

function _MYMODULE_popular_terms() {

    $vocabId = 1;

    $links = array();
    $results = db_query_range('SELECT taxonomy_term_data.tid, taxonomy_term_data.name, count(taxonomy_term_data.tid) AS times_used FROM taxonomy_term_data INNER JOIN taxonomy_index ON taxonomy_term_data.tid = taxonomy_index.tid WHERE taxonomy_term_data.vid = :vid GROUP BY taxonomy_term_data.tid, taxonomy_term_data.name ORDER BY times_used DESC', 0, 10, array(':vid' => $vocabId));
    foreach ($results as $term) {
        $links['term-link-' . db_escape_field($term->name)] = array('title' => $term->name, 'href' => drupal_get_path_alias('taxonomy/term/' . $term->tid));
    }

    return theme('links', array('links' => $links, 'attributes' => array('class' => 'term-links')));
}

Vergessen Sie nicht, MYMODULEden Namen Ihres Moduls zu ändern . Zuletzt ändern Sie die $vocabId = 1Zeile in der _MYMODULE_popular_termsFunktion in das vid (Vokabular-ID) des Vokabulars, dessen Begriffe Sie auflisten möchten.

Beachten Sie, dass dies nur für Drupal 7 gilt, obwohl es nicht viel kosten würde, es auf Drupal 6 zu portieren.

Camsoft
quelle
0

Sie können die Daten von Tagadelic abrufen .

$output = '';
$vids = array(1, 2, 3, 4); #Taxonomy vocabulary-ids you want to be included.
$top_tags = tagadelic_get_weighted_tags($vids, 6, 10);
foreach ($terms as $term) {
  $weight = $term->weight;
  $output .= l($term->name, drupal_get_path_alias('taxonomy/term/' . $term->tid), array(
    'attributes' => array(
      'class' => array("tagadelic", "level$weight"),
      'rel' => 'tag',
      'title'  => $term->description,
      )
    )
  ) . " \n";
}

return $output;

Der einzige Nachteil ist, dass tagadelic einen geringen Aufwand für die Berechnung des "Gewichts" hinzufügt, normalerweise um die Tag-Größen darzustellen, die Sie nicht verwenden werden.

Der Vorteil ist, dass Sie kostenlos Caching erhalten.

berkes
quelle
Ich denke, meine Lösung hat wahrscheinlich den geringsten Overhead, da es sich nur um eine einfache Abfrage handelt. Die Frage betraf auch Drupal7 und Tagadelic hat keine d7-Version.
Camsoft