it-swarm-id.com

Bagaimana saya bisa memfilter istilah taksonomi berdasarkan bahasa?

Saya telah mencari cara untuk memfilter istilah taksonomi berdasarkan bahasa (seperti yang dilakukan untuk node), tetapi saya tidak menemukan cara untuk melakukannya.

Apakah modul Views mendukung filter juga dalam taksonomi, atau hanya dalam node?
Bagaimana saya bisa memfilter istilah taksonomi berdasarkan bahasa?

9
mohamad salama

Dengan mengaktifkan modul Tampilan Internasionalisasi , opsi untuk memfilter istilah taksonomi berdasarkan bahasa tersedia. Perhatikan bahwa versi saat ini dalam dev tetapi berfungsi seperti pesona.

screenshot showing effect of installing i18nviews

11
Nerrve

Anda dapat menggunakan modul Tampilan Internasionalisasi bersama dengan modul Terjemahan Taksonomi (yang merupakan bagian dari Internasionalisasi ) untuk mendapatkan filter bahasa untuk istilah taksonomi.

Terjemahkan tampilan menggunakan Internasionalisasi. Ini adalah pekerjaan yang sedang berjalan dan tidak semua properti Views dapat diterjemahkan. Membutuhkan Internasionalisasi 6.x-1.5 atau lebih baru .

3
Kristen

Ini solusi lain:

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

Sumber di sini .

2
Ek Kosmos

Modul Views tidak memungkinkan untuk memfilter istilah taksonomi berdasarkan bahasa yang terkait dengannya, karena Drupal hanya mengaitkan bahasa dengan node.

Anda dapat mengatur tampilan untuk hanya menampilkan node dengan bahasa yang telah ditentukan.

  • Di bawah "Filter kriteria," pilih "Tambah"
  • di formulir berikutnya, pilih "Terjemahan konten: Bahasa"
  • formulir selanjutnya akan memungkinkan Anda memilih bahasa mana yang akan digunakan untuk memfilter konten tampilan antara "Pilih semua," "Bahasa pengguna saat ini," "Bahasa situs default," "Tidak ada bahasa," dan salah satu bahasa yang diaktifkan di situs.

Saya menambahkan filter ini pada tampilan istilah taksonomi yang datang dengan modul Views, memilih bahasa Inggris sebagai bahasa untuk menyaring konten, dan saya membuat dua node: satu dalam bahasa Inggris, dan satu dalam bahasa Latin. Saya ditugaskan untuk kedua node istilah taksonomi yang sama, yang dengan ID sama dengan 22.
Ketika saya mengunjungi http://example.com/taxonomy/term/22 , tampilan secara efektif hanya menampilkan konten dalam bahasa Inggris.

1
kiamlaluno

Karena saya mengalami beberapa masalah lain dengan modul Tampilan Internasionalisasi, yaitu sepertinya mengubah semua yang sudah diterjemahkan UI dari tampilan (arah pager, teks header/footer dll.), Saya angkat kode yang relevan untuk membuat filter bahasa keluar dalam sebuah terpisah modul. Ganti MYMODULE di bawah ini dengan nama modul Anda. Bekerja sebagai pesona bagi saya!

/**
 * 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

Tambahkan ke YOUR_MODULE.module Anda

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

Tambahkan ke YOUR_MODULE.info Anda

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

Buat File "views/handler/filter/YOUR_MODULE_handler_filter_language.inc" dalam direktori modul Anda dan tempatkan konten berikutnya:

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

Bersihkan Semua cache dan kriteria baru akan muncul.

Atau gunakan modul saya Akuma Taxonomy

0
Nikita Makarov

Pemfilteran bahasa untuk terjemahan entitas. Filter bahasa di bagian "Filter Kriteria" tampilan hanya diperlukan jika Anda menggunakan sistem terjemahan simpul. Jika sebaliknya Anda menggunakan Terjemahan Entitas yang lebih modern sistem yang tersedia untuk Drupal 7, cukup sesuaikan pengaturan "Bahasa Lapangan" di tampilan "Lainnya" bagian.

Cara melakukannya untuk istilah taksonomi. Saya mencoba ini untuk istilah taksonomi dan berhasil. Pastikan Anda menambahkan salah satu dari dua contoh bidang yang benar untuk setiap bidang yang dapat diterjemahkan, yaitu yang dengan deskripsi "Muncul di: istilah taksonomi: nama-kosakata Anda". Untuk detailnya, lihat pada edisi # 1841434 .

0
tanius