ฉันจะรับชื่อชุดรูปแบบโดยทางโปรแกรมได้อย่างไร


8

ใน Drupal 8 มีวิธีใดบ้างที่จะคิดว่าคุณใช้ชุดรูปแบบใดในโมดูล ฉันต้องได้รับชื่อทางการเขียนโปรแกรมภายในรหัสของโมดูล

คำตอบ:


23

การใช้ตัวจัดการชุดรูปแบบเป็นวิธีที่เหมาะสมในการรับข้อมูลเกี่ยวกับชุดรูปแบบของคุณ Drupal 8

\Drupal::service('theme.manager')->getActiveTheme()

กฎทั่วไปใน drupal 8 คือการค้นหาบริการ manager (/ handler)

** หมายเหตุ: เป็นNeograph734ชี้ออก\Drupal::service('theme.manager')->getActiveTheme()จะกลับวัตถุรูปแบบการใช้งาน หากคุณต้องการได้รับชื่อเครื่องธีมให้ใช้\Drupal::service('theme.manager')->getActiveTheme()->getName()


5
โปรดทราบว่าชื่อธีมที่เกิดขึ้นจริงจะได้รับจาก ActiveTheme getName()กับ ดังนั้นเพื่อให้ได้ชื่อธีมที่จะใช้\Drupal::service('theme.manager')->getActiveTheme()->getName();
Neograph734

5

สิ่งนี้จะทำ:

$config = \Drupal::config('system.theme');    
print $config->get('default');

คุณสามารถใช้ drush เพื่อสำรวจการตั้งค่าที่คุณมีอยู่เสมอ:

drush config-list

และ

drush config-list system

ให้รายการฉัน:

...
system.rss
system.site
system.theme.global
system.theme
...

และจากนั้นฉันสามารถตรวจสอบกับสิ่งต่อไปนี้:

drush cget system.theme.global

และ

drush cget system.theme

ในที่สุดก็พบว่ามันมีdefaultทรัพย์สินซึ่งเป็นสิ่งที่คุณขอ


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

1
จริงถ้ามีการเจรจาต่อรองธีมที่กำหนดเองในการเล่นผลลัพธ์จะแตกต่างกัน ถ้าไม่เช่นนั้นgetActiveTheme()ฟังก์ชั่นจะกลับมาเหมือนเดิม: $this->configFactory->get('system.theme')->get('default')
Stefanos Petrakis

1
  1. หากคุณต้องการได้รับชื่อธีมที่ใช้งานจริงadministration themeรวม:

 $activeThemeName = \Drupal::service('theme.manager')->getActiveTheme(); 

  1. หากคุณต้องการธีมเริ่มต้นที่คุณเลือกtheme used in frontไม่ admistartion themeใช้:

 $defaultThemeName = \Drupal::config('system.theme')->get('default');    

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.