it-swarm.dev

분류 용어를 언어별로 필터링하려면 어떻게해야합니까?

노드에 대해 수행 된 것처럼 언어로 분류 용어를 필터링하는 방법을 찾았지만이를 수행 할 방법을 찾지 못했습니다.

Views 모듈은 분류법 또는 노드에서만 해당 필터를 지원합니까?
분류법 용어를 언어별로 필터링하려면 어떻게해야합니까?

9
mohamad salama

Internationalization Views 모듈을 활성화하면 언어별로 분류 용어를 필터링하는 옵션을 사용할 수 있습니다. 버전은 현재 개발 중이지만 매력처럼 작동합니다.

screenshot showing effect of installing i18nviews

11
Nerrve

Internationalization Views 모듈을 Taxonomy Translation 모듈 ( Internationalization 의 일부)과 함께 사용하여 분류 용어에 대한 언어 필터를 얻을 수 있습니다.

국제화를 사용하여보기를 번역하십시오. 현재 진행중인 작업으로 일부 뷰 속성을 아직 번역 할 수있는 것은 아닙니다. 국제화 6.x-1.5 이상이 필요합니다 .

3
Kristen

또 다른 해결책은 다음과 같습니다.

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

출처 여기 .

2
Ek Kosmos

Drupal 언어를 노드와 만 연관시키기 때문에)보기 모듈에서는 연관된 언어로 분류 용어를 필터링 할 수 없습니다.

그러나 사전 정의 된 언어의 노드 만 표시하도록보기를 설정할 수 있습니다.

  • "필터 기준"에서 "추가"를 선택하십시오.
  • 다음 양식에서 "콘텐츠 번역 : 언어"를 선택하십시오.
  • 다음 양식을 사용하면 "모두 선택", "현재 사용자 언어", "기본 사이트 언어", "언어 없음"및 사이트에서 활성화 된 언어 중 하나 사이에서보기 내용을 필터링하는 데 사용할 언어를 선택할 수 있습니다.

이 필터를 Views 모듈과 함께 제공되는 분류 체계 용어보기에 추가하여 내용을 필터링 할 언어로 영어를 선택하고 영어와 라틴어로 각각 두 개의 노드를 만들었습니다. 나는 두 노드 모두에 동일한 분류 용어, 즉 ID가 22 인 것을 할당했다.
http://example.com/taxonomy/term/22 을 방문하면보기에는 내용 만 영어로 효과적으로 표시됩니다.

1
kiamlaluno

Internationalization Views 모듈에 다른 문제가 있습니다. 즉, 이미 번역 된 UI를 뷰 (페이지 방향, 머리글/바닥 글 텍스트 등)에서 변경하는 것처럼 보이므로 언어 ​​필터를 만드는 관련 코드를 별도의 코드로 작성합니다 구성 단위. 아래의 MYMODULE을 모듈 이름으로 바꾸십시오. 나를위한 매력으로 작동합니다!

/**
 * 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.module에 추가

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에 추가

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

모듈 디렉토리 내에 "views/handlers/filter/YOUR_MODULE_handler_filter_language.inc"파일을 작성하고 다음 컨텐츠를 배치하십시오.

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

모든 캐시를 지우면 새 기준이 나타납니다.

아니면 내 모듈을 사용하십시오 Akuma Taxonomy

0
Nikita Makarov

엔티티 변환을위한 언어 필터링. 보기의 "필터 기준"섹션에있는 언어 필터는 노드 변환 시스템을 사용하는 경우에만 필요합니다. 대신 Drupal 7에서 사용 가능한보다 현대적인 Entity Translation 시스템을 사용하는 경우보기의 "기타"섹션에서 "필드 언어"설정을 조정하십시오.

분류법 용어를 사용하는 방법. 분류법 용어로 시도했지만 작동합니다. 번역 가능한 모든 필드에 대해 두 개의 필드 인스턴스 중 올바른 하나, 즉 "appears in : taxonomy-term : your-vocab-name"에 대한 설명이있는 필드 인스턴스를 추가하십시오. 자세한 내용은 문제 # 1841434 를 참조하십시오.

0
tanius