Как вы можете сортировать термины таксономии на основе количества использованных времен, с точки зрения?

Я создаю представление, в котором перечислены 10 самых популярных таксономических терминов (тегов). В настоящее время у меня есть представление, возвращающее все термины, и я могу ограничить представление до 10, но я не могу решить, как упорядочить термины по популярности (т. Е. Количество раз, используемых во всех узлах).

У кого-нибудь есть опыт?

7 голосов | спросил Camsoft 18 PMpMon, 18 Apr 2011 17:44:21 +040044Monday 2011, 17:44:21

1 ответ


0

В конце концов, я создал свой собственный модуль для получения терминов из базы данных и группировки /сортировки.

Обратите внимание, что я немного изменил код ниже для публикации, и я не тестировал измененную версию. Также стоит отметить, что он был написан для сайта с использованием PostgreSQL, но он должен работать с 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')));
}

Не забудьте изменить MYMODULE для имени вашего модуля. Наконец, измените строку $vocabId = 1 в _MYMODULE_popular_terms функция для vid (словарный запас) словаря, который вы хотите перечислить.

Обратите внимание, что это только для Drupal 7, хотя переносить его на Drupal 6 не потребуется.

ответил Camsoft 19 PMpTue, 19 Apr 2011 13:36:33 +040036Tuesday 2011, 13:36:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132