it-swarm-eu.dev

Jak můžete třídit taxonomické termíny podle počtu použitých pohledů?

Vytvářím pohled, který obsahuje seznam 10 nejoblíbenějších taxonomických pojmů (značek). V současné době mám zobrazení, které vrací všechny výrazy, a mohu zobrazení omezit na 10, ale nedokážu přijít na to, jak si objednat termíny podle popularity (tj. Kolikrát se používá ve všech uzlech).

S tím má někdo zkušenost?

8
Camsoft

Nakonec jsem vytvořil svůj vlastní vlastní modul, abych získal podmínky z databáze a seskupil/třídil je.

Vezměte prosím na vědomí, že níže uvedený kód jsem mírně upravil pro zveřejnění a upravenou verzi jsem netestoval. Za zmínku také stojí, že byl vytvořen pro web pomocí PostgreSQL, ale měl by fungovat s MySQL.

/**
  * 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')));
}

Nezapomeňte změnit MYMODULE pro název vašeho modulu. Nakonec změňte $vocabId = 1 řádek v _MYMODULE_popular_terms funkce k vid (slovní zásoba slovníku) slovníku, který chcete uvést podmínky.

Upozorňujeme, že to platí pro Drupal 7), i když to nebude trvat příliš dlouho, než jej přenesete na Drupal 6).

0
Camsoft
  1. Vytvořte nové zobrazení
  2. limit na taxonomie „zobrazit taxonomie termínu vše“
  3. Přidat vztah „Taxonomy term: Content with term“
  4. Použijte agregaci
  5. Přidat pole „Obsah: Název“
  6. Typ agregace „Počet“
  7. Změnit štítek na něco jako „kolikrát se používá“
  8. Přidat kritéria třídění „Obsah: Název“
  9. Typ agregace „Počet“
  10. Řadit, co se vám líbí

mělo by to vypadat takto:

the viewthe result

9
saadlulu

Zobrazení 3 má (velmi beta) funkci „seskupit podle“; měli byste být schopni toto použít a objednat pole pro počítání.

Nezaručil bych, že to funguje, ale asi to stojí za pokus.

0
Jeremy French

Data můžete vytáhnout z tagadelic .

$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;

Jedinou nevýhodou je, že tagadelic přidává drobné režijní náklady pro výpočet "váhy", obvykle k prezentaci velikostí tagů, které nebudete používat.

Vzhůru nohama je to, že dostanete do mezipaměti zdarma.

0
berkes