У меня есть представление терминов таксономии с открытым фильтром.
Основная страница просмотра: site.com/view
У меня есть текстовое поле с 16 различными значениями и URL-адресами:
- site.com/view/1
- site.com/view/2
- site.com/view/...
- site.com/view/16
В зависимости от переданного аргумента я меняю заголовок View следующим образом:
используйте \Drupal\views\ViewExecutable;
функция theme_views_pre_render (ViewExecutable $ view)
{
if( $view->id() == 'MY_VIEW_ID' && $view->current_display === 'VIEW_DISPLAY' && $view->args[0] != 'Все')
{
$view->setTitle(gamesGenreTitle($view->args[0]));
}
}
функция gamesGenreTitle($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_genre']);
вернуть $options[$val];
}
gamesGenreTitle() получает метки моего поля, чтобы поместить их в заголовок.
Работает, но голова не меняется <title>
тег!
я пытался theme_preprocess_html(&$переменные)
с этим кодом:
$view_id = \Drupal::routeMatch()->getParameter('view_id');
$view = \Drupal\views\Views::getView($view_id);
Но получает только идентификатор просмотра
и я не могу получить доступ к аргументам, чтобы изменить заголовок только на нужных страницах.
Моя вторая догадка, которую я еще не пробовал, состоит в том, чтобы проверить и взорвать текущий путь массива, используя \Drupal::service('path.current')->getPath();
, получить последнюю цифру и передать ее gamesGenreTitle()
.
Или, может быть, есть лучший способ?