Điểm:0

Thay đổi Xem tiêu đề đầu theo chương trình

lá cờ gu

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?

Điểm:1
lá cờ cn

Không nhất thiết phải truy cập đối tượng xem ($view) để lấy đối số. Bạn có thể kiểm tra tất cả các đối số bằng cách làm như vậy

$params = Drupal::routeMatch()->getParameters();

Thông thường, bạn sẽ thấy rằng nếu bạn đang truy cập vào một chế độ xem với các bộ lọc/tham số theo ngữ cảnh sẽ có các khóa tham số "arg_0, arg_1"

var_dump($params);
// object(Symfony\Component\HttpFoundation\ParameterBag)#323 (1) { ["parameters":protected]=> array(4) { ["view_id"]=> string(18) "sample_view" ["display_id" ]=> chuỗi(6) "page_1" ["arg_0"]=> chuỗi(26) "251" } }

Sau đó, bạn có thể làm

$params = Drupal::routeMatch()->getParameter('arg_0');
bigboy avatar
lá cờ gu
Cảm ơn! Bạn đã cứu ngày của tôi! )))

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.