ในpage.html.twig
คุณจะมี{{ base_path }}
ตัวแปรทำงาน ทำไมเทมเพลตจึงไม่สามารถใช้ได้ในทุก ๆ อย่างที่ฉันคิดว่ามันควรจะเป็นและทุกสิ่งทุกอย่างดูยุ่งเหยิงโซลูชันที่ฉันต้องการคือทำแบบเดียวกับที่ Drupal ทำในหน้าที่ประมวลผลหน้าสำหรับสถานที่ใด ๆ ที่ฉันต้องการ
ในการทำให้{{ base_path }}
บล็อกเท็มเพลตพร้อมใช้งานในตัวอย่างชื่อธีมให้เพิ่มโค้ดนี้ในexample.theme
ไฟล์:
/**
* Implements hook_preprocess_block().
*/
function example_preprocess_block(&$variables) {
$variables['base_path'] = base_path();
}
ดังที่ระบุไว้ในคำตอบที่ได้รับการยอมรับจาก MPD หากได้รับ URL ของโหนดหรือเอนทิตีอื่น ๆ มีวิธีที่จะทำเพื่อคุณทั้งหมด
อย่างไรก็ตามมีเหตุผลในการรับ base_path เช่นเมื่อแสดงภาพที่อยู่ในโฟลเดอร์ชุดรูปแบบของคุณ {{ directory }}
จัดเตรียมพา ธ ไปยังโฟลเดอร์ธีม แต่มันจะปิดพา ธ พื้นฐาน (โดยปกติจะเป็นเพียง / แต่เพื่อรักษาการทำงานที่เหมาะสมของ Drupal จากไดเรกทอรีย่อยของโดเมนที่ไม่ควรฮาร์ดโค้ด) ในpage.html.twig
หรือในแม่แบบใด ๆ ที่มี preprocesser ข้างต้นนี้จะทำงานเพื่อวัตถุประสงค์:
<img src="{{ base_path ~ directory }}/images/nsf1.svg"
alt="National Science Foundation logo" height="80" width="80" />
และแน่นอนว่าคำตอบของ Shawn Conn นั้นใช้ได้ผลดีถ้าคุณสามารถระงับความต้องการเทมเพลตสวย ๆ ได้ แต่ฉันทำไม่ได้