Score:3

ฉันจะแทนที่สตริงในข้อความได้อย่างไร

ธง zw

กับ {{ content.field_myfield.0 }}ฉันได้รับข้อความ เมื่อฉันใช้ {{ content.field_myfield.0|replace({"foo" : "bar"}) }}ไม่มีอะไรแสดงผลและไม่มีการรายงานข้อผิดพลาด

ฉันยังพยายามแทนที่ content.field_myfield.0 กับ content.field_myfield.value หรือ `content.field_myfield.0.value แต่ฉันยังคงได้รับสตริงว่าง

ฉันจะแทนที่สตริงได้อย่างไร

ขอบคุณ

Score:7
ธง in

content.field_some_field เป็นอาร์เรย์เรนเดอร์ แต่ แทนที่ ตัวกรองทำงานบนสตริง คุณต้องแสดงฟิลด์ของคุณก่อนที่จะโทรแทนที่

ตัวอย่างเช่น:

{{ content.field_some_field|render|replace({"hello": "ลาก่อน"}) }}
Score:6
ธง cn

หากนี่คือช่องข้อความที่จัดรูปแบบ คุณสามารถแทนที่ข้อความต้นฉบับก่อนที่จะแสดงผล สิ่งนี้มีข้อได้เปรียบที่แท็ก HTML จะถูกรักษาไว้:

{% ตั้งค่า field_item = content.field_myfield.0 %}
{% set text_replaced = field_item['#text']|replace({'foo': 'bar'}) %}
{{ field_item|merge({'#text': text_replaced}) }}

หากคุณไม่แน่ใจเกี่ยวกับประเภทฟิลด์ ให้ตรวจสอบอาร์เรย์การเรนเดอร์ {{ การถ่ายโอนข้อมูล (field_item) }}.

คุณสามารถทำให้อาร์เรย์เรนเดอร์แบนลงก่อนที่จะแทนที่ ตามที่ @sonfd แนะนำ หากข้อความที่แทนที่ไม่มีแท็ก HTML

โดยทั่วไปมีวิธีที่ดีกว่าในการแทนที่ข้อความ ใช้ตัวกรองข้อความหรือการเรียกกลับล่วงหน้า/pre_render/post_render ดูตัวอย่าง https://www.drupal.org/forum/support/module-development-and-code-questions/2020-01-28/creating-a-custom-text-filter หรือ จะแก้ไขเนื้อหาของหน้าได้อย่างไร?

โพสต์คำตอบ

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