С помощью представления терминов таксономии коммерческих продуктов можно ли установить заголовок страницы в соответствии с переведенным названием термина?


Единственный способ указать название термина таксономии в заголовке страницы просмотра коммерческих продуктов термина таксономии, которую я нашел до сих пор, - это представление примера в теме estore (Я все еще не понимаю, как tid, который должен обозначать идентификатор термина, становится значением поля заголовка):

screenshot of the View > Advanced settings

screenshot of contextual filter: Taxonomy term: Term ID

Проблема в том, что показанное название не переведено на многоязычных сайтах, когда термин определенно имеет правильный перевод. Есть ли как показать, что название переведено?

По какой-то причине нет Product: Has taxonomy term ID, так как есть Content: Has taxonomy term ID в представлении терминов таксономии по умолчанию, в котором отображается переведенный заголовок.

AFAIU {{ arguments.tid|t }} не подходит, потому что он будет проходить через другую подсистему.

Author: int_ua, 2020-11-03

1 answers

Мне пришлось обойти это в коде, изменив пример, опубликованный djg_tram:

/**
 * @file
 * Workaround for taxonomy term title not being i18zed.
 */
use Drupal\views\ViewExecutable;
use Drupal\taxonomy\Entity\Term;

/**
 * Implements hook_views_pre_render().
 */
function exposed_filter_workaround_views_pre_render(ViewExecutable $view) {
  $view_id = 'products';
  $view_display = 'page_category';

  if ($view->id() == $view_id && $view->current_display == $view_display) {
    $lang_id = \Drupal::languageManager()->getCurrentLanguage()->getId();

    $term_id = $view->args[0];
    $term = Term::load($term_id);

    $term_translated = $term->getTranslation($lang_id);
    $view->setTitle($term_translated->label());
  }
}
 0
Author: int_ua, 2020-11-16 10:07:16