Tôi có một cái nhìn về các thuật ngữ phân loại với bộ lọc tiếp xúc.
Trang xem chính: site.com/view
Tôi có một trường văn bản với 16 giá trị và url khác nhau:
- trang web.com/view/1
- trang web.com/view/2
- site.com/view/...
- trang web.com/view/16
Tùy thuộc vào đối số đã thông qua, tôi thay đổi Xem tiêu đề như thế này:
sử dụng \Drupal\views\ViewExecutable;
chức năng theme_views_pre_render(ViewExecutable $view)
{
if( $view->id() == 'MY_VIEW_ID' && $view->current_display === 'VIEW_DISPLAY' && $view->args[0] != 'All')
{
$view->setTitle(gamesGenreTitle($view->args[0]));
}
}
trò chơi chức năngGenreTitle($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_genre']);
trả về tùy chọn $[$val];
}
gamesGenreTitle() đang lấy nhãn cho trường của tôi để đặt chúng vào tiêu đề.
Nó hoạt động, nhưng nó không thay đổi đầu <title>
nhãn!
tôi đã thử theme_pre process_html(&$biến)
với mã này:
$view_id = \Drupal::routeMatch()->getParameter('view_id');
$view = \Drupal\views\Views::getView($view_id);
Nhưng nó chỉ nhận được xem id
và tôi không thể truy cập các đối số ở đó để thay đổi tiêu đề trên các trang chỉ cần thiết.
Dự đoán thứ hai của tôi, mà tôi chưa thử, là xác thực và phát nổ thành đường dẫn hiện tại của mảng, sử dụng \Drupal::service('path.current')->getPath();
, lấy chữ số cuối cùng và chuyển nó tới gamesGenreTitle()
.
Hoặc có thể có một cách tốt hơn?