it-swarm-vi.com

Làm cách nào tôi có thể lọc các thuật ngữ phân loại theo ngôn ngữ?

Tôi đã tìm kiếm một cách để lọc các thuật ngữ phân loại theo ngôn ngữ (như được thực hiện cho các nút), nhưng tôi không tìm thấy cách nào để làm điều đó.

Liệu mô-đun Views có hỗ trợ bộ lọc trong phân loại quá không, hay chỉ trong các nút?
[.__.] Làm cách nào tôi có thể lọc các thuật ngữ phân loại theo ngôn ngữ?

9
mohamad salama

Bằng cách kích hoạt mô-đun Lượt xem quốc tế hóa , tùy chọn lọc thuật ngữ phân loại theo ngôn ngữ có sẵn. Lưu ý rằng phiên bản hiện đang ở dev nhưng nó hoạt động như một bùa mê.

screenshot showing effect of installing i18nviews

11
Nerrve

Bạn có thể sử dụng mô đun Lượt xem quốc tế hóa kết hợp với mô đun Dịch thuật phân loại (là một phần của Quốc tế hóa ) để có bộ lọc ngôn ngữ cho các thuật ngữ phân loại.

Dịch quan điểm bằng cách sử dụng quốc tế hóa. Đây là một công việc đang tiến hành và không phải tất cả các thuộc tính Lượt xem có thể được dịch. Yêu cầu quốc tế hóa 6.x-1.5 hoặc mới hơn .

3
Kristen

Đây là một giải pháp khác:

function mymodule_views_query_alter(&$view, &$query) {
  if ($view->name == 'yourviewmachinename') {
    $query->where[] = array(
      'conditions' => array(array(
        'field' => 'taxonomy_term_data.language',
        'value' => array('***CURRENT_LANGUAGE***'),
        'operator' => 'in',
      )),
      'args' => array(),
      'type' => 'AND',
    );
  }
}

Nguồn tại đây .

2
Ek Kosmos

Mô-đun Lượt xem không cho phép lọc các thuật ngữ phân loại theo ngôn ngữ được liên kết với nó, vì Drupal chỉ liên kết một ngôn ngữ với các nút.

Tuy nhiên, bạn có thể đặt chế độ xem để chỉ hiển thị các nút có ngôn ngữ được xác định trước.

  • Trong "Tiêu chí lọc", chọn "Thêm"
  • trong mẫu tiếp theo, chọn "Dịch nội dung: Ngôn ngữ"
  • biểu mẫu tiếp theo sẽ cho phép bạn chọn ngôn ngữ nào sẽ sử dụng để lọc nội dung xem giữa "Chọn tất cả", "Ngôn ngữ của người dùng hiện tại", "Ngôn ngữ trang mặc định", "Không có ngôn ngữ" và một trong những ngôn ngữ được bật trong trang web.

Tôi đã thêm bộ lọc này vào chế độ xem phân loại thuật ngữ đi kèm với mô-đun Lượt xem, chọn tiếng Anh làm ngôn ngữ để lọc nội dung và tôi đã tạo hai nút: một bằng tiếng Anh và một bằng tiếng Latin. Tôi đã gán cho cả hai nút cùng một thuật ngữ phân loại, một nút có ID bằng 22.
[.__.] Khi tôi truy cập http://example.com/taxonomy/term/22 , chế độ xem chỉ hiển thị hiệu quả nội dung bằng tiếng Anh.

1
kiamlaluno

Vì tôi gặp một số vấn đề khác với mô-đun Internationalization Views, cụ thể là nó dường như thay đổi giao diện người dùng đã dịch từ các chế độ xem (hướng máy nhắn tin, văn bản đầu trang/chân trang, v.v.), tôi gỡ bỏ mã liên quan để tạo bộ lọc ngôn ngữ riêng biệt mô-đun. Thay thế MYMODULE bên dưới bằng tên của mô-đun của bạn. Làm việc như một cơ duyên cho tôi!

/**
 * Code below is lifted from the i18nviews module. Gives the possibility to filter for
 * language on term views
 *
 * Implementation of hook_views_data_alter().
 *
 * Registers views handlers with dependency to i18n_taxonomy.
 */
function MYMODULE_views_data_alter(&$data) {

  // Add i18n language field to taxonomy_term_data. No clash.
  $data['taxonomy_term_data']['language'] = array(
    'group' => t('Taxonomy term'),
    'title' => t('Language'),
    'help' => t('The language the term is in.'),
    'field' => array(
      'handler' => 'MYMODULE_handler_field_taxonomy_term_language',
      'click sortable' => TRUE,
    ),
    'filter' => array(
      'handler' => 'MYMODULE_handler_filter_taxonomy_term_language',
    ),
    'argument' => array(
      'handler' => 'MYMODULE_handler_argument_taxonomy_term_language',
    ),
  );
}

/**
 * Field handler to provide simple renderer that shows term language.
 */
class MYMODULE_handler_field_taxonomy_term_language extends views_handler_field_taxonomy {
  function render($values) {
    $languages = locale_language_list();
    $value = isset($languages[$values->{$this->field_alias}]) ? $languages[$values->{$this->field_alias}] : '';
    $value = $this->get_value($values);
    return $this->render_link($this->sanitize_value($value), $values);
  }
}

/**
 * Filter by language
 */
class MYMODULE_handler_filter_taxonomy_term_language extends views_handler_filter_in_operator {
  function get_value_options() {
    if (!isset($this->value_options)) {
      $this->value_title = t('Language');
      $languages = array(
        '***CURRENT_LANGUAGE***' => t("Current user's language"),
        '***DEFAULT_LANGUAGE***' => t("Default site language"),
        LANGUAGE_NONE => t('No language')
      );
      $languages = array_merge($languages, locale_language_list());
      $this->value_options = $languages;
    }
  }
}

/**
 * Argument handler to accept a language.
 */
class MYMODULE_handler_argument_taxonomy_term_language extends views_handler_argument {
  function construct() {
    parent::construct('language');
  }

  /**
   * Override the behavior of summary_name(). Get the user friendly version
   * of the language.
   */
  function summary_name($data) {
    return $this->term_language($data->{$this->name_alias});
  }

  /**
   * Override the behavior of title(). Get the user friendly version of the
   * node type.
   */
  function title() {
    return $this->term_language($this->argument);
  }

  function term_language($langcode) {
    $languages = locale_language_list();
    return isset($languages[$langcode]) ? $languages[$langcode] : t('Unknown language');
  }
}
0
vegardjo

Thêm vào YOU_MODULE.module của bạn

function YOUR_MODULE_views_data_alter(&$data) {
  $opts['title'] = 'Language';
  $opts['table'] = 'taxonomy_term_data';
  $opts['help'] = 'Taxonomy term language.';
  $opts['filter']['handler'] = 'YOUR_MODULE_handler_filter_language';
  $data['taxonomy_term_data']['language'] = $opts;
}

Thêm vào YOU_MODULE.info của bạn

files[] = views/handlers/filter/YOUR_MODULE_handler_filter_language.inc

Tạo tệp "lượt xem/trình xử lý/bộ lọc/YOU_MODULE_handler_filter_lingu.inc" trong thư mục mô-đun của bạn và đặt nội dung tiếp theo:

/**
 * @file
 * Views handler to filter language by term.
 */

/**
 * Filter by submission status
 */
class YOUR_MODULE_handler_filter_language extends views_handler_filter_in_operator {
  function get_value_options() {
    $languages = array(
      '***CURRENT_LANGUAGE***' => t("Current user's language"),
      '***DEFAULT_LANGUAGE***' => t("Default site language"),
      LANGUAGE_NONE            => t('Language neutral'),
    );
    $this->value_title = t('Language');
    $options = array_merge($languages, locale_language_list());
    $this->value_options = $options;
  }

  // '0' won't work as a key for checkboxes.
  function value_form(&$form, &$form_state) {
    parent::value_form($form, $form_state);
    $form['value']['#type'] = 'select';
  }
}

Xóa tất cả bộ nhớ cache và tiêu chí mới sẽ xuất hiện.

Hoặc sử dụng mô-đun của tôi Akuma Taxonomy

0
Nikita Makarov

Lọc ngôn ngữ cho dịch thực thể. Bộ lọc ngôn ngữ trong phần "Tiêu chí lọc" của chế độ xem chỉ cần thiết nếu bạn sử dụng hệ thống dịch nút. Thay vào đó, nếu bạn sử dụng hệ thống hiện đại hơn Dịch thực thể có sẵn cho Drupal 7, chỉ cần điều chỉnh cài đặt "Ngôn ngữ trường" trong phần "Khác" của chế độ xem.

Cách thực hiện đối với các thuật ngữ phân loại. Tôi đã thử điều này cho các thuật ngữ phân loại và nó hoạt động. Chỉ cần đảm bảo bạn thêm một trong hai trường hợp chính xác cho mỗi trường có thể dịch, cụ thể là trường có mô tả "Xuất hiện trong: taxonomy-term: your-vocab-name". Để biết chi tiết, xem về vấn đề # 1841434 .

0
tanius