Score:0

เปลี่ยนหัวเรื่องดูโดยทางโปรแกรม

ธง gu

ฉันมีมุมมองของเงื่อนไขอนุกรมวิธานพร้อมตัวกรองที่เปิดเผย หน้ามุมมองหลัก: 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();รับหลักสุดท้ายและส่งต่อไปยัง ประเภทเกมชื่อเรื่อง().

หรืออาจจะมีวิธีที่ดีกว่า?

Score:1
ธง cn

ไม่จำเป็นต้องเข้าถึงวัตถุมุมมอง ($view) เพื่อรับอาร์กิวเมนต์ คุณสามารถตรวจสอบอาร์กิวเมนต์ทั้งหมดได้โดยทำเช่นนั้น

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

โดยปกติคุณจะพบว่าหากคุณกำลังเข้าถึงข้อมูลพร็อพเพอร์ตี้ ด้วยตัวกรองบริบท/พารามิเตอร์ จะมีคีย์พารามิเตอร์ "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" ]=> string(6) "page_1" ["arg_0"]=> string(26) "251" } }

จากนั้นคุณสามารถทำได้

$params = Drupal::routeMatch()->getParameter('arg_0');
bigboy avatar
gu flag
ขอบคุณ! คุณช่วยชีวิตฉันไว้! )))

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา