Cuối cùng đã tìm ra nó! Đăng câu trả lời của tôi cho các thế hệ tương lai.
Tất cả những gì chúng ta cần là YOUR_TEMPLATE.theme
tập tin cho việc này.
Dưới đây là mã của tôi với ý kiến. Nó có thể không hoàn hảo, vì vậy nếu có ai sửa một số điều, tôi sẽ đánh giá cao điều đó.
sử dụng \Drupal\views\ViewExecutable;
chức năng YOUR_THEME_NAME_views_pre_render(ViewExecutable $view)
{
if(checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg())
{
$view->setTitle(gamesGenreTitle($view->args[0]));
}
}
chức năng YOUR_THEME_NAME_pre process_html(&$variables)
{
if (checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg() && isset($variables['head_title']))
{
$token = Drupal::token();
$variables['head_title'] = $variables['page']['#title'] . " | Trang " . $token->replace('[trang-hiện:số-trang]');
}
}
chức năng YOUR_THEME_NAME_pre process_breadcrumb(&$variables)
{
if(checkRoute('view.VIEW_ID.VIEW_DISPLAY_ID') && checkArg() && isset($variables['breadcrumb']['2']['text']))
{
$variables['breadcrumb']['2']['text'] = gamesGenreTitle(getArg_0());
}
}
trò chơi chức năngGenreTitle($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_NAME']);
if(is_numeric($val) && $val <= count($options))
{
trả về tùy chọn $[$val];
}
}
hàm checkArg()
{
$arg = Drupal::routeMatch()->getParameter('arg_0');
trả về isset($arg) && is_numeric($arg);
}
chức năng checkRoute($check)
{
$route = \Drupal::routeMatch()->getRouteName();
trả về $route == $check;
}
hàm getArg_0()
{
trả về Drupal::routeMatch()->getParameter('arg_0');
}
Và một phương pháp khác, nếu bạn không có nhiều nhãn trường, bạn có thể sử dụng phương pháp này trong trường ghi đè tiêu đề chế độ xem (twig được hỗ trợ ở đó):
{% if argument.field_NAME_value == 1 %} TIÊU ĐỀ CỦA BẠN 1 {% otherif argument.field_NAME_value == 2 %} TIÊU ĐỀ CỦA BẠN 2 {% endif %}
Hy vọng điều này sẽ giúp được ai đó!