मैं अपनी थीम में व्यवस्थापक विषय को कैसे ओवरराइड करूं?


9

मैंने अपना ड्रुपल 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 }

मैं "सात" का प्रयोग व्यवस्थापक विषय के रूप में कर रहा हूं।

जब मैं किसी पृष्ठ (/ नोड / x / संपादन) को संपादित करता हूं तो सेवन विषय का उपयोग किया जाता है।

अब मुझे कुछ CSS को edit रूप में जोड़ना है। मैं यह कैसे कर सकता हूँ? style.css केवल फ्रंट एंड पेज पर लोड किए गए हैं। पृष्ठ संपादित करें में सात थीम का उपयोग किया गया है और मेरी थीम CSS को अनदेखा किया गया है।

मैं Drupal 8 में पृष्ठों को संपादित करने या फ़ॉर्म संपादित करने के लिए कुछ CSS कैसे जोड़ सकता हूं?

जवाबों:


17

आप एक मॉड्यूल हुक से व्यवस्थापक CSS जोड़ सकते हैं। XXX को मॉड्यूल नाम से बदलें।

1 अपने CSS को css / extra.admin.css में डालें

2 XXX.lbooks.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

आप एक विषय को दूसरे विषय के भीतर से नियंत्रित नहीं कर सकते। और यहां तक ​​कि अगर कुछ स्मार्ट डेवलपर इसे करने के लिए एक हैक तरीका खोज सकता है: कृपया नहीं। मेरा विश्वास करो, तुम यह नहीं चाहते। प्रोग्रामिंग में चिंताओं को अलग करने की अवधारणा महत्वपूर्ण है। मूल रूप से इसका मतलब है कि आपके सिस्टम के अलग-अलग मूविंग पार्ट्स (यानी आपकी थीम) को अन्य भागों (यानी आपके एडमिन थीम) के कार्यों में हस्तक्षेप किए बिना, अपने स्वयं के कार्य का ध्यान रखना चाहिए।

अपने लक्ष्य को प्राप्त करने के लिए, सबसे साफ तरीका यह है कि एक नया विषय बनाया जाए, इसे सात का उपमेय बनाएं (इसलिए यह सात के बारे में आपको सब कुछ विरासत में मिलता है) और अपने कस्टम सीएसएस को मिश्रण में जोड़ें। अब आप सेवेन के बजाय उस थीम को अपने एडमिन थीम के रूप में चुन सकते हैं।


क्षमा करें, मैं विश्वास नहीं कर सकता कि इसे हल करने का कोई तरीका नहीं है। मुझे केवल कुछ CSS जैसे img {max-width: 100% जोड़ना होगा; ऊंचाई: ऑटो}। वहां कोई रास्ता अवश्य होना चाहिए।
drupalfan

4
नहीं, वहाँ नहीं होना चाहिए। विषय-वस्तु मिश्रण करने के लिए नहीं हैं। केवल एक सक्रिय विषय हो सकता है। यदि आपको इसे करने की आवश्यकता है, तो एक मॉड्यूल बनाएं, जो एक फॉर्म परिवर्तन को लागू कर सकता है और एक अन्य पुस्तकालय जोड़ सकता है।
बेरदीर

3
@drupalfan, मुझे समझ में नहीं आता कि आप यह क्यों निष्कर्ष निकालते हैं कि इसे हल करने का कोई तरीका नहीं है। वहाँ रहे हैं तरीके (सात-subtheme विधि मैं वर्णित है, और Berdir की विधि) और वे ऐसा करने के लिए मुश्किल नहीं है। आपने जिस तरह का समाधान सुझाया है, वह नाई से आपके जूते का रंग बदलने के लिए कह रहा है। यह मत करो।
marvvangend

2
I do not want to mix themes, I only want to add one simple CSS!जिसे द्रुपाल में मिश्रित माना जाता है। एकमात्र विकल्प जो आपके पास है वह या तो सात का उपटैब बना सकता है या सात थीम को "हैक" कर सकता है /core/themes/लेकिन जब आप ड्रुपल अपग्रेड करते हैं तो आप हर बार बदलाव खो देंगे। इसलिए आपको हर बार ओवरराइड .css फ़ाइल को अपलोड करना याद रखना होगा। आप D8 को अपग्रेड करते हैं। इसलिए, आप सेवन की उप-विषय बनाने से बेहतर हैं और जैसा कि आप थीम का उपयोग करते हैं, क्योंकि उपमा /themesफ़ोल्डर में स्थित होगा और अंदर नहीं /core/themes
Sssweat'

1
@Joum आप जो वर्णन करते हैं, वह पूरी तरह से अलग है। ओपी एक विषय को दूसरे विषय को प्रभावित करने देने के बारे में पूछ रहा था। यह जिम्मेदारियों का मिश्रण है, खासकर जब से एक ही पृष्ठ पर दो विषय कभी भी सक्रिय नहीं हो सकते हैं। एक मॉड्यूल के साथ कुछ सीएसएस शिपिंग पूरी तरह से सामान्य IMO है - बस इसे हल्के वजन, overridable, और सख्ती से ध्यान केंद्रित रखें जो भी यह आपके मॉड्यूल करता है।
marcvangend

5

जिस मॉड्यूल की आप तलाश कर रहे हैं, उसे अब एसेट इंजेक्टर कहा जाता है । इसके साथ आप यूआई के माध्यम से सीएसएस को जोड़ने के लिए सक्षम कर सकते हैं जैसा कि @Whatwatt ने उल्लेख किया है।


4

यदि आप सेवन के लिए एक सबमिशन बनाते हैं, और उसे अपने व्यवस्थापक विषय के रूप में उपयोग करते हैं, तो आप अपने स्वयं के सीएसएस ओवरराइड को सात_subtheme.info.yml फ़ाइल में जोड़ सकते हैं, मूल विषय के साथ खिलवाड़ किए बिना, या थीम जिम्मेदारियों को भ्रमित कर सकते हैं। उपशीर्षक के लिए केवल info.yml फ़ाइल और सीएसएस की आवश्यकता होती है, और बाकी सब कुछ विरासत में मिलेगा।

हालांकि इसकी ध्वनियों से, आप मुख्य रूप से wysiwyg संपादक (ckeditor) द्वारा उपयोग किए जाने वाले css को बदलने से चिंतित हैं, इसलिए आप इसके बजाय ckeditor_stylesheetsअपनी info.yml फ़ाइल को जोड़ना चाह सकते हैं। ध्यान दें, जैसा कि इस मुद्दे में समझाया गया है , ckeditor css को वास्तव में आपके थीम से जोड़ा जा सकता है , क्योंकि wysiwyg संपादक को डिफ़ॉल्ट रूप से गैर-व्यवस्थापक थीम css का उपयोग करना चाहिए (इसे जोड़ने के बाद कैश साफ़ करना याद रखें)।


उचित उत्तर। इसे करने का यही तरीका है।
केविन

3

CSS इंजेक्टर मॉड्यूल स्थापित करें (वर्तमान में Drupal 8 के लिए केवल एक कार्यशील विकास संस्करण है)।

फिर CSS इंजेक्टर ( / admin / config / development / css-injection ) के एडमिनिस्ट्रेशन पेज पर जाएं । एक नया CSS नियम बनाएं। उदाहरण के लिए, फ़ील्ड की पृष्ठभूमि का रंग बदलने के लिए:

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

इस नियम को सेवन थीम (या उपयोग में किसी भी व्यवस्थापक थीम) पर लागू करना चुनें ।

सहेजें और आनंद लें!


>> मैं Drupal 8 में पृष्ठों को संपादित करने या फ़ॉर्म संपादित करने के लिए कुछ CSS कैसे जोड़ सकता हूं?
drupalfan

मैंने अपना जवाब अपडेट किया, अपनी गलती के लिए क्षमा करें (मैंने एक और विषय का उत्तर दिया!)
व्हाट्सट

1

किसी भी व्यवस्थापक विषय के साथ काम करने के लिए मैंने आदम उत्तर का उपयोग किया और हुक को बदल दिया।

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

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

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

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

}

1

सीएसएस को कॉल करने वाला ब्लॉक क्यों न बनाएं और इसे अपने एडमिन पेज के हेडर में डालें?

@import url ("/ थीम / XYZ / css / admin_overrides.css")


1

आप एक मॉड्यूल हुक से व्यवस्थापक CSS जोड़ सकते हैं। XXX को मॉड्यूल नाम से बदलें।

1 अपने CSS को css / extra.admin.css में डालें

2 XXX.lbooks.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

मैं फ्रंट और बैक ऑफिस दोनों के लिए एक अलग चाइल्ड थीम बनाऊंगा



यह टुटो 2 साल पुराना है। chid admin थीम स्मूथली काम करती है। अपने css या js के लिए इसमें एक लाइब्रेरी जोड़ें और यहाँ यह हो जाता है
Matoeil
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.