Bagaimana saya bisa memfilter istilah taksonomi berdasarkan bahasa?


9

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?


1. gunakan 2 grup dalam kosakata 2. gunakan hook_form_alter untuk mendeklarasikan grup untuk pengguna gunakan
dobeerman

saya tidak mengerti apa yang harus dilakukan pengguna dengan kelompok taksonomi pikap. situs ini dalam berbagai bahasa misalnya A lang, B lang, C lang dan ketika pengguna pergi ke B lang saya hanya ingin taksonomi ditampilkan berdasarkan bahasa ini dan seterusnya dalam bahasa lain. bukan karena saya menerjemahkan istilah taksonomi untuk setiap bahasa yang diaktifkan.
mohamad salama

# Bisakah saya mengedit string kueri dalam tampilan!? atau hanya untuk memberi tahu saya. jika di mana tempat untuk mengeditnya?
mohamad salama

Jawaban:


11

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

tangkapan layar yang menunjukkan efek menginstal i18nviews


2
Perhatikan bahwa filter ini hanya akan tersedia jika Anda juga mengaktifkan modul i18n_taxonomy. Yaitu, jika Anda menggunakan terjemahan simpul untuk istilah taksonomi.
tanius

3

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 .


2

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 .


1

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 menunjukkan konten dalam bahasa Inggris.


sangat aneh di drupal 5 saya bisa memfilter taksonomi berdasarkan bahasa dengan mudah. tapi bagaimanapun juga terima kasih telah berbagi jawaban.
mohamad salama

0

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

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


0

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 Taksonomi


0

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');
  }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.