Score:0

How do I add HTML markup to the title?

ธง zw

I am trying to alter my title to include html. I have tried the following

function MODULENAME_views_pre_render(\Drupal\views\ViewExecutable $view) {
  if ($view->id() == 'products_test') {
    foreach($view->result as $value) {
      $value->_object->set('title', 'test - <b>My new Title</b>');
    }
  }
}

This outputs the title as test - <b>My new Title</b>, rather than rendering the text as HTML markup.

I tried passing the title to decode_entities(), but nothing changed.

I am using the Full content mode, rather than the Fields mode, if this makes any difference.

Score:2
ธง cn

หากคุณต้องการแก้ไข html โดยทั่วไปคุณจะต้องทำงานร่วมกับ hook_preprocess_hook หรือ ก การแทนที่เทมเพลตกิ่งไม้. นี่เป็นกรณีสำหรับมุมมองเช่นกัน ในกรณีของมุมมอง เทมเพลตที่แสดงชื่อเรื่องคือ views-view.html.twig.

แก้ไข: วิธีที่เร็วที่สุดคือการใช้ #markup

ฟังก์ชัน my_module_preprocess_views_view(&$ตัวแปร) {
  $ตัวแปร['ชื่อเรื่อง'] = [
    '#markup' => 'ทดสอบ - <b>หัวข้อใหม่ของฉัน</b>'
  ];
}

ดังนั้นหากคุณต้องการแสดงชื่อเรื่องด้วย a แท็ก คุณสามารถทำได้:

ฟังก์ชัน my_module_preprocess_views_view(&$ตัวแปร) {
  $existing_title = $ตัวแปร['ชื่อเรื่อง'];
  $ตัวแปร['ชื่อเรื่อง'] = [
    '#type' => 'inline_template',
    '# template' => '<b>{{ ชื่อ }}</b>',
    '#บริบท' => [
      'title' => $existing_title,
    ]
  ];
}

อย่างไรก็ตาม อาจไม่เหมาะที่จะใช้แท็กสำหรับการนำเสนอ แต่ควรใช้คลาสและสไตล์ CSS หากคุณต้องการเพิ่มคลาส CSS เพื่อกำหนดเป้าหมาย คุณสามารถทำสิ่งที่คล้ายกันได้:

ฟังก์ชัน my_module_preprocess_views_view(&$ตัวแปร) {
  $existing_title = $ตัวแปร['ชื่อเรื่อง'];
  $ตัวแปร['ชื่อเรื่อง'] = [
    '#type' => 'คอนเทนเนอร์',
    '#attributes' => [
      'คลาส' => [
        'views-title', // หรืออะไรก็ตาม 
      ]
    ]
    '#value' => $existing_title
  ];
}

ทั้งคู่ #คอนเทนเนอร์ และ #อินไลน์_เทมเพลต เป็น ทำให้องค์ประกอบและมีมากมายสำหรับคุณ

แน่นอนขึ้นอยู่กับว่าธีมและโมดูลอื่น ๆ ของคุณกำลังทำอะไรอยู่ $ตัวแปร['ชื่อเรื่อง'] อาจไม่ใช่แค่สตริง ดังนั้นคุณอาจต้องปรับเปลี่ยนตามนั้น

May  avatar
zw flag
สวัสดี ขอบคุณสำหรับรายละเอียดตอบกลับ แต่ฉันกำลังมองหา แต่องค์ประกอบ HTML ในชื่อเรื่องไม่เพียงแค่รวมชื่อเรื่องในชั้นเรียน
cn flag
ขอโทษครับ อ่านผิด อัปเดตคำตอบของฉันเพื่อรวมวิธีใช้ #markup
leymannx avatar
ne flag
โปรดอย่าลังเลที่จะยกเลิกการแก้ไขของฉันหากคุณไม่ชอบ แต่แนะนำให้ใช้ `inline_template` แทน `html_tag` ซึ่งควรใช้สำหรับแท็ก `script` เป็นต้น
cn flag
จริงๆ แล้วฉันไม่รู้เกี่ยวกับ `inline_template` เลย -- เยี่ยมมาก! ขอบคุณสำหรับการแบ่งปัน.
Score:1
ธง us

หากต้องการเปลี่ยนชื่อมุมมอง คุณสามารถดำเนินการได้ hook_preprocess_views_view()ซึ่งเป็นสิ่งที่ ดู UI โมดูลทำด้วย views_ui_preprocess_views_view().

// เรนเดอร์ชื่อสำหรับการแสดงตัวอย่างผู้ดูแลระบบ
ถ้า (!empty($view->live_preview)) {
  $ตัวแปร['ชื่อเรื่อง'] = [
    '#markup' => $view->getTitle(),
  ];
}

การใช้โค้ดดังกล่าวจะหลีกเลี่ยงไม่ให้มาร์กอัป HTML ที่ใช้ในชื่อเรื่องหนี/ถูกฆ่าเชื้อ

เมื่อ ดู UI ติดตั้งโมดูลแล้ว และคุณต้องการตั้งชื่อมุมมองเดียวกันในการแสดงตัวอย่างผู้ดูแลระบบ คุณต้องเรียกใช้ hook ที่โมดูลของคุณนำมาใช้หลังจากที่โมดูลถูกนำไปใช้โดย ดู UI โมดูล. โปรดจำไว้ว่า views_ui_preprocess_views_view() ใช้รหัสต่อไปนี้ด้วย

ถ้า (!empty($view->live_preview) && \Drupal::moduleHandler()->moduleExists('contextual')) {
  $view->setShowAdminLinks(เท็จ);
  foreach (['title', 'header', 'exposed', 'rows', 'pager', 'more', 'footer', 'empty', 'attachment_after', 'attachment_before'] เป็น $section) {
    ถ้า (!empty($variables[$section])) {
      $ตัวแปร[$ส่วน] = [
        '#theme' => 'views_ui_view_preview_section',
        '#view' => $วิว,
        '#section' => $section,
        '#content' => $ตัวแปร[$section],
        '#theme_wrappers' => [
          'views_ui_container',
        ]
        '#attributes' => [
          'คลาส' => [
            'ภูมิภาคตามบริบท'
          ]
        ]
      ];
    }
  }
}

ตามหมายเหตุด้านข้าง ค่าเริ่มต้น views-view.html.twig เทมเพลตที่ใช้โดยโมดูล Views ใช้ตัวแปรเทมเพลตสองตัว เพิ่มเติม: ชื่อเรื่อง_คำนำหน้า และ title_suffix.

  {{ ชื่อเรื่อง_คำนำหน้า }}
  {{ ชื่อ }}
  {{ ชื่อเรื่อง_ต่อท้าย }}

โพสต์คำตอบ

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