ฉันจะลบล้างธีมผู้ดูแลระบบในธีมของฉันเองได้อย่างไร?


9

ฉันสร้างธีม Drupal 8 ของตัวเอง:

mytheme.info.yml:

name: My Theme
description: 'Drupal 8 Theme'
type: theme
base theme: bartik
core: '8.x'

mytheme.libraries.yml

global-styling:
  version: 1.x
  css:
    theme:
      css/layout.css: {}
      css/style.css: {}
      css/colors.css: {}
      css/print.css: { media: print }

ฉันใช้ "Seven" เป็นธีมผู้ดูแลระบบ

เมื่อฉันแก้ไขหน้า (/ โหนด / x / แก้ไข) ใช้เจ็ดธีม

ตอนนี้ฉันต้องเพิ่ม CSS บางอย่างในรูปแบบการแก้ไข ฉันจะทำสิ่งนี้ได้อย่างไร style.css ถูกโหลดเฉพาะหน้าส่วนหน้า แก้ไขหน้าใช้เจ็ดธีมและ CSS ธีมของฉันถูกละเว้น

ฉันจะเพิ่ม CSS ลงในหน้าผู้ดูแลระบบหรือแก้ไขแบบฟอร์มใน Drupal 8 ได้อย่างไร

คำตอบ:


17

คุณสามารถเพิ่มผู้ดูแลระบบ CSS จากโมดูลเบ็ด แทนที่ XXX ด้วยชื่อโมดูล

1 ใส่ CSS ของคุณใน css / extra.admin.css

2 ประกาศไลบรารีโดยสร้าง XXX.l ไลบรารี.yml

extra.admin:
  css:
    theme:
      css/extra.admin.css: {}

3 สร้างเบ็ดเพื่อโหลดไลบรารี

/**
 * Implements hook_page_attachments().
 */
function XXX_page_attachments(array &$attachments) {
  $theme = \Drupal::theme()->getActiveTheme()->getName();
  if ($theme == 'seven') {
    $attachments['#attached']['library'][] = 'XXX/extra.admin';
  }
}

15

คุณไม่สามารถควบคุมหนึ่งชุดรูปแบบจากภายในชุดรูปแบบอื่น และแม้ว่านักพัฒนาที่ฉลาดบางคนสามารถหาวิธีแฮ็คได้: โปรดอย่า เชื่อฉันสิคุณไม่ต้องการมัน แนวคิดของการแยกความกังวลเป็นสิ่งสำคัญในการเขียนโปรแกรม โดยทั่วไปหมายความว่าชิ้นส่วนที่เคลื่อนไหวต่าง ๆ (เช่นธีมของคุณ) ของระบบของคุณควรดูแลงานของตนเองโดยไม่รบกวนงานของส่วนอื่น ๆ (เช่นธีมผู้ดูแลระบบของคุณ)

เพื่อให้บรรลุเป้าหมายของคุณวิธีที่สะอาดที่สุดคือการสร้างชุดรูปแบบใหม่ทำให้เป็นส่วนย่อยของ Seven (ดังนั้นจึงสืบทอดทุกสิ่งที่คุณต้องการเกี่ยวกับ Seven) และเพิ่ม CSS ที่กำหนดเองของคุณลงในมิกซ์ ตอนนี้คุณสามารถเลือกชุดรูปแบบนั้นเป็นชุดรูปแบบผู้ดูแลระบบของคุณแทน Seven


ขออภัยฉันไม่สามารถเชื่อได้ว่าไม่มีวิธีแก้ปัญหานี้ ฉันต้องเพิ่ม CSS เช่น img {ความกว้างสูงสุด: 100%; ความสูง: อัตโนมัติ} จะต้องมีวิธี
drupalfan

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

3
@drupalfan ฉันไม่เข้าใจว่าทำไมคุณสรุปไม่มีวิธีแก้ปัญหานี้ มีมีวิธี (วิธี Seven-subtheme ฉันอธิบายและวิธีการ Berdir) และพวกเขาจะไม่ยากที่จะทำ วิธีแก้ปัญหาที่คุณแนะนำคือขอให้ช่างทำผมเปลี่ยนสีรองเท้าของคุณ อย่าทำมัน
marcvangend

2
I do not want to mix themes, I only want to add one simple CSS!ที่ถือว่าเป็นการผสมใน Drupal ตัวเลือกเดียวที่คุณต้องทำคือทำ subtheme ของ Seven หรือ "hack" เจ็ดธีมที่อยู่ในนั้น/core/themes/แต่คุณจะสูญเสียการเปลี่ยนแปลงทุกครั้งที่คุณอัพเกรด drupal 8 ดังนั้นคุณจะต้องจำไว้ว่าต้องอัปโหลดไฟล์. css ที่ถูกแทนที่ทุกครั้ง คุณอัพเกรด D8 ดังนั้นคุณก็ยังดีที่ทำให้รูปแบบย่อยของเซเว่นและการใช้งานที่เป็นคุณธีมผู้ดูแลระบบเพราะ subtheme จะอยู่ในโฟลเดอร์และไม่ได้อยู่ใน/themes /core/themes
ไม่มี Sssweat

1
@Joum สิ่งที่คุณอธิบายแตกต่างอย่างสิ้นเชิง OP ขอให้ปล่อยธีมหนึ่งมีผลกับธีมอื่น นั่นคือการผสมผสานความรับผิดชอบโดยเฉพาะอย่างยิ่งเนื่องจากสองธีมไม่สามารถใช้งานได้ในหน้าเดียวกัน การจัดส่ง CSS บางส่วนกับโมดูลนั้นเป็น IMO ปกติอย่างสมบูรณ์ - เพียงแค่ให้น้ำหนักเบา overridable และเน้นไปที่สิ่งที่เป็นโมดูลของคุณ
marcvangend

5

โมดูลที่คุณกำลังมองหาอยู่ในขณะนี้เรียกว่าสินทรัพย์หัวฉีด ด้วยคุณจะสามารถเพิ่ม CSS ผ่าน UI ตามที่ @Whatwatt พูดถึง


4

หากคุณสร้างหัวข้อย่อยสำหรับ Seven และใช้เป็นธีมผู้ดูแลระบบของคุณคุณสามารถเพิ่มการแทนที่ css ของคุณเองในไฟล์ seven_subtheme.info.yml โดยไม่ยุ่งกับธีมหลักหรือสร้างความสับสนให้กับธีม หัวข้อย่อยต้องการเพียงไฟล์ info.yml และ css เท่านั้นและจะสืบทอดสิ่งอื่นทั้งหมด

จากเสียงของมันคุณส่วนใหญ่เกี่ยวข้องกับการแก้ไข css ที่ใช้โดยตัวแก้ไข wysiwyg (ckeditor) ดังนั้นคุณอาจต้องการดูการเพิ่มckeditor_stylesheetsไฟล์ info.yml ของคุณแทน โปรดทราบว่าตามที่ได้อธิบายในเรื่องนี้ที่CKEditor CSS สามารถแน่นอนจะเพิ่มจากคุณธีมเป็นตัวแก้ไขแบบ WYSIWYG ควรใช้ CSS ธีมไม่ใช่ผู้ดูแลระบบโดยค่าเริ่มต้น (อย่าลืมแคชชัดเจนหลังจากที่เพิ่มนี้)


คำตอบที่เหมาะสม นี่คือวิธีที่จะทำ
เควิน

3

ติดตั้งโมดูลCSS Injector (ปัจจุบันมีเพียงรุ่นพัฒนาที่ใช้งานได้สำหรับ Drupal 8)

จากนั้นไปที่หน้าการดูแลระบบของ CSS Injector ( / admin / config / development / css-injector ) สร้างกฎ CSS ใหม่ ตัวอย่างเช่นหากต้องการเปลี่ยนสีพื้นหลังของฟิลด์:

.node-form .field--name-title input {
    background-color: red;
}

เลือกที่จะใช้กฎนี้กับธีมเจ็ด (หรือธีมของผู้ดูแลระบบที่ใช้อยู่)

บันทึกและสนุก!


>> ฉันจะเพิ่ม CSS ลงในหน้าผู้ดูแลระบบหรือแก้ไขแบบฟอร์มใน Drupal 8 ได้อย่างไร
drupalfan

ฉันอัปเดตคำตอบของฉันขอโทษสำหรับข้อผิดพลาดของฉัน (ฉันตอบหัวข้ออื่น!)
Whatwatt

1

ในการทำงานกับชุดรูปแบบผู้ดูแลระบบใด ๆ ฉันใช้ AdamS answer และเปลี่ยน hook เป็น

$config = \Drupal::config('system.theme');

$theme = \Drupal::theme()->getActiveTheme()->getName();

if ($theme == $config->get('admin')) {

  $attachments['#attached']['library'][] = 'XXXX/extra.admin';

}

1

ทำไมไม่สร้างบล็อกที่เรียก css และแทรกมันลงในส่วนหัวของหน้าผู้ดูแลระบบของคุณ?

@import url ("/ themes / XYZ / css / admin_overrides.css")


1

คุณสามารถเพิ่มผู้ดูแลระบบ CSS จากโมดูลเบ็ด แทนที่ XXX ด้วยชื่อโมดูล

1 ใส่ CSS ของคุณใน css / extra.admin.css

2 ประกาศไลบรารีโดยสร้าง XXX.l ไลบรารี.yml

extra.admin:
  css:
  theme:
  css/extra.admin.css: {}

3 สร้างเบ็ดเพื่อโหลดไลบรารี

/ **
* ใช้งาน hook_page_attachments ()
* /

function XXX_page_attachments(array &$attachments) {
  $config = \Drupal::config('system.theme');
  $theme = \Drupal::theme()->getActiveTheme()->getName();
    if ($theme == $config->get('admin')) {
       $attachments['#attached']['library'][] = 'XXXX/extra.admin';
    }
 }

0

ฉันจะสร้างธีมลูกแยกสำหรับทั้งด้านหน้าและด้านหลัง


แต่มันค่อนข้างยุ่งเหยิง: skyriter.com/2018/04/07/…
น่าแปลกใจ

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