จะลบล้างกฎ CSS ของธีมผู้ดูแลระบบได้อย่างไร? [ปิด]


20

มีวิธีการแทนที่กฎ CSS เพียงบางส่วนที่ใช้โดยธีมผู้ดูแลระบบโดยไม่ต้องแตะที่ธีมของผู้ดูแลระบบเอง (ผ่านฟังก์ชั่นธีมหรือโมดูลตะขอ)? ตัวอย่างเช่นฉันต้องการเพิ่มtext-align: rightเขตข้อมูลจำนวนเต็มในฟอร์มผู้ดูแลระบบ (และในโหนดแก้ไขด้วย)


5
คำถามที่ถูกต้องสมบูรณ์แบบที่ไม่ควรปิด บ่อยครั้งที่ต้องปรับแต่งธีมผู้ดูแลระบบ (โดยทั่วไปคือเซเว่น) ซึ่งการสร้างธีมย่อยใหม่จะเป็นการ overkill
Kari Kääriäinen

คำตอบ:


15

ฉันทำมันโดยใช้:

function mymodule_preprocess_html(&$variables) {

  global $theme;

  if ($theme === variable_get('admin_theme', 'seven')) {

    // Reference your custom stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

นั่นเป็นสิ่งที่อ่านได้มากขึ้นสำหรับฉัน


1
ทำงานอย่างสมบูรณ์แบบสำหรับฉันเช่นกัน น้ำยาทำความสะอาด
Sasha Grievus

มีโค้ด drupal 8 เวอร์ชันนี้มีประโยชน์หรือไม่?
เตอร์

11

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

  1. หากคุณคัดลอกชุดรูปแบบผู้ดูแลระบบหรือสร้างชุดรูปแบบย่อยตามชุดรูปแบบผู้ดูแลระบบ (หมายเหตุสิ่งนี้จะใช้ไม่ได้กับ Drupal Commerce เนื่องจากชุดรูปแบบย่อยนี้มีส่วนแบ่งตามแบบเงาอยู่แล้ว) แล้วเพิ่มไฟล์ css ผ่านทาง. info โทรคุณจะโหลด CSS ในทุกหน้า
  2. หากคุณคัดลอกรูปแบบของผู้ดูแลระบบหรือสร้าง subtheme ตามออกของชุดรูปแบบผู้ดูแลระบบคุณสามารถใช้ drupal_add_css เบ็ด () ในไฟล์ สิ่งนี้จะช่วยให้คุณสามารถเรียกสไตล์ชีทแบบมีเงื่อนไขบนหน้าเว็บบางหน้าเท่านั้นหรือสำหรับเบราว์เซอร์บางประเภท ใช้งานได้ดี แต่คุณกำลังเรียกไฟล์มากกว่าที่จำเป็นแล้ว
  3. สร้างโมดูลของคุณเองและโทร drupal_add_css ()จากนั้น เท่าที่ฉันรู้นี่เป็นวิธีที่ 'เบาที่สุด' ในการปรับเปลี่ยนธีมผู้ดูแลระบบโดยไม่ต้องสัมผัสกับต้นฉบับและจะทำงานหากธีมผู้ดูแลระบบของคุณเป็นหัวข้อย่อยอยู่แล้ว (ตัวอย่างเช่นธีม Drupal Commerce Kickstart Admin เป็นหัวข้อย่อยของ Shiny) ฉันใช้วิธีนี้เพราะมันจะใช้ได้ในทุกสถานการณ์ ดูตัวอย่างด้านล่าง:

สร้างไดเรกทอรีที่เรียกว่า 'mymodule' (ใช้ชื่ออะไรก็ได้ที่คุณต้องการ) สร้างไฟล์เหล่านี้จากนั้นวางไว้ในไดเรกทอรีไซต์ / ทั้งหมด / modules / ที่กำหนดเองของคุณ ฉันได้เพิ่มความคิดเห็นในรหัสด้านล่างเพื่อให้คุณสามารถเห็นสิ่งที่เกิดขึ้น

  • mymodule.info
  • mymodule.module
  • CSS / mymodule.css

mymodule.info ประกอบด้วย:

name = mymodule
description = Custom alterations for admin pages on my website
core = 7.x

mymodule.module ประกอบด้วย:

function mymodule_preprocess_html(&$variables) {
  // Add conditional stylesheets for admin pages on admin theme.
  if (arg(0) === "admin") {
    // Reference your current admin theme.
    $theme_path = drupal_get_path('theme', 'commerce_kickstart_admin');
    // Reference your own stylesheet.
    drupal_add_css(drupal_get_path('module', 'mymodule') . '/css/mymodule.css', array('weight' => CSS_THEME));
  }
}

css / mymodule.css จะมีสไตล์ของคุณซึ่งถูกเพิ่มเข้ากับธีมผู้ดูแลระบบ ล้างแคชของคุณเปิดใช้งานโมดูลนี้และคุณจะออกไปแข่ง! เรียนรู้เพิ่มเติมเกี่ยว drupal_add_css ที่นี่


2
ไม่จำเป็นต้องใช้$theme_pathตัวแปรหากคุณใช้เส้นทางโมดูลปัจจุบัน ... และCSS_THEMEไม่ได้เป็นน้ำหนัก แต่เป็นกลุ่ม:array('group' => CSS_THEME)
MrUpsidown

มีโค้ด drupal 8 เวอร์ชันนี้มีประโยชน์หรือไม่?
เตอร์

9

สิ่งที่ฉันทำคือสร้างธีมย่อยสำหรับธีมผู้ดูแลระบบใดก็ตามที่ฉันใช้ด้วย.infoไฟล์ CSS ที่ไม่ซ้ำกัน (โดยปกติจะมีชื่อoverrides.css) และtemplate.phpไฟล์หากจำเป็น


2

แล้วCSS Injectorล่ะ?

ผมไม่ทราบว่ามันจะช่วยให้กฎการตั้งค่ารูปแบบขึ้นอยู่กับ แต่ผมถือว่ามันไม่ให้หนึ่งขึ้นอยู่กับเส้นทาง (เพื่อให้ผู้ดูแลระบบ / โหนด / เพิ่ม /โหนด / * / แก้ไขควรทำเคล็ดลับ)


ความคิดที่ดี. พยายาม แต่ดูเหมือนจะไม่ทำงาน (กฎ CSS ไม่ได้รับการบันทึกจริง!) ฉันยังมีข้อสงสัยว่ามันจะทำงานร่วมกับระบบการซ้อนทับ (ดูเหมือนว่าปัญหาอยู่ใน file_unmanaged_save_data () ไม่ได้บันทึกอะไรเลย แต่การตั้งค่าของฉันค่อนข้างแปลก - กล่องอูบุนตูภายใน OSX vbox)
Claudio

ฮึ่ม อาจมีข้อบกพร่องหรืออะไรทำนองนั้นในรุ่นปัจจุบัน ฉันคิดว่ามันควรจะทำงานในทางทฤษฎีในการซ้อนทับ นอกจากนี้ยังสามารถแสดงโอเวอร์เลย์ด้วยชุดรูปแบบที่แตกต่างกัน .. คุณสามารถทำได้ในโมดูลที่กำหนดเองง่ายๆฉันเดาบันทึก css ของคุณลงในไฟล์ใช้ hook_init () และใช้ drupal_add_css () หากมีเงื่อนไขบางประการ
Berdir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.