ฉันมีมุมมองของเงื่อนไขอนุกรมวิธานพร้อมตัวกรองที่เปิดเผย
หน้ามุมมองหลัก: site.com/view
ฉันมีช่องข้อความที่มีค่าและ URL ต่างกัน 16 รายการ:
- site.com/view/1
- site.com/view/2
- site.com/view/...
- site.com/view/16
ขึ้นอยู่กับอาร์กิวเมนต์ที่ผ่านไป ฉันเปลี่ยน View title ดังนี้:
ใช้ \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]));
}
}
ฟังก์ชั่นเกมประเภทชื่อเรื่อง($val)
{
$options = options_allowed_values(\Drupal::service('entity_field.manager')->getFieldStorageDefinitions('taxonomy_term')['field_genre']);
ส่งคืน $option[$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();
รับหลักสุดท้ายและส่งต่อไปยัง ประเภทเกมชื่อเรื่อง()
.
หรืออาจจะมีวิธีที่ดีกว่า?