web-gelistirme-sc.com

Sınıflandırma terimlerini dile göre nasıl filtreleyebilirim?

Taksonomi terimlerini dile (düğümler için yapıldığı gibi) göre filtrelemenin bir yolunu aradım, ancak bunu yapmanın bir yolunu bulamadım.

Views modülü bu filtreyi sınıflandırmalarda mı yoksa yalnızca düğümlerde mi destekliyor?
Taksonomi terimlerini dile göre nasıl filtreleyebilirim?

9
mohamad salama

Internationalization Views modülünü etkinleştirerek, sınıflandırma terimini dile göre filtreleme seçeneği kullanılabilir. Sürüm şu anda dev ama unutmayın bir cazibe gibi çalışır.

screenshot showing effect of installing i18nviews

11
Nerrve

Taksonomi terimleri için bir dil filtresi almak üzere luslararasılaşma Görünümleri modülünü Taksonomi Çeviri modülüyle ( luslararasılaşma bir parçasıdır) birlikte kullanabilirsiniz.

Uluslararasılaştırma kullanarak görünümleri çevirin. Bu devam eden bir çalışmadır ve Görünümlerin tüm özellikleri henüz çevrilemez. Uluslararasılaştırma 6.x-1.5 veya daha yenisini gerektirir .

3
Kristen

İşte başka bir çözüm:

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

Kaynak burada .

2
Ek Kosmos

Views modülü, sınıflandırma terimlerini kendisiyle ilişkilendirilmiş dile göre filtrelemeye izin vermez, çünkü Drupal bir dili yalnızca düğümlerle ilişkilendirir.

Ancak görünümü yalnızca önceden tanımlanmış bir dile sahip düğümleri gösterecek şekilde ayarlayabilirsiniz.

  • "Filtre ölçütleri" altında, "Ekle" yi seçin
  • sonraki formda "İçerik çevirisi: Dil" i seçin
  • bir sonraki form, "Tümünü seç", "Geçerli kullanıcının dili", "Varsayılan site dili," "Dil yok" ile sitede etkinleştirilmiş dillerden biri arasında görünüm içeriğini filtrelemek için hangi dili kullanacağınızı seçmenize olanak tanır.

Bu filtreyi, Views modülüyle birlikte gelen, içeriği filtrelemek için dil olarak İngilizce'yi seçen sınıflandırma terim görünümüne ekledim ve biri İngilizce diğeri Latince olmak üzere iki düğüm oluşturdum. Her iki düğüme de aynı taksonomi terimini, kimliğine sahip olanı 22'ye eşitledim.
Ziyaret ettiğimde http://example.com/taxonomy/term/22 , görünüm yalnızca İngilizce içeriği etkili bir şekilde gösterdi.

1
kiamlaluno

Uluslararasılaştırma Görünümleri modülüyle ilgili başka sorunlar yaşıyorum, yani zaten çevrilmiş UI'yi görünümlerden (çağrı cihazı yönleri, üstbilgi/altbilgi metni vb.) Değiştiriyor gibi göründüğünden, dil filtrelerini ayrı bir şekilde oluşturmak için ilgili kodu kaldırıyorum modülü. Aşağıdaki MYMODULE'u modülünüzün adıyla değiştirin. Benim için bir cazibe olarak çalışıyor!

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

YOUR_MODULE.modülünüze ekleyin

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

YOUR_MODULE.info'nuza ekleyin

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

Modül dizininizde "views/handlers/filter/YOUR_MODULE_handler_filter_language.inc" Dosyası oluşturun ve sonraki içeriği yerleştirin:

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

Tüm önbellekleri temizle ve Yeni ölçüt belirir.

Veya modülümü kullan Akuma Taksonomisi

0
Nikita Makarov

Varlık çevirisi için dil filtreleme. Görünümün "Filtre Ölçütleri" bölümündeki dil filtresi yalnızca düğüm çeviri sistemini kullanıyorsanız gereklidir. Bunun yerine Drupal 7) için daha modern Varlık Çevirisi sistemini kullanırsanız, görünümün "Diğer" bölümündeki "Alan Dili" ayarını uyarlamanız yeterlidir.

Sınıflandırma terimleri için nasıl yapılır. Sınıflandırma terimleri için bunu denedim ve işe yarıyor. Her çevrilebilir alan için iki alan örneğinden doğru olanı, yani "Şurada görünür: sınıflandırma terimi: sizin kelime-adınız" açıklamasını eklediğinizden emin olun. Ayrıntılar için bkz. sayı # 1841434'te .

0
tanius