कुछ एडमिन थीम CSS रूल्स को ओवरराइड कैसे करें? [बन्द है]


20

क्या एडमिन थीम द्वारा उपयोग किए जाने वाले कुछ सीएसएस नियमों को ओवरराइड करने का एक तरीका है, एडमिन थीम को छूने के बिना (कुछ थीम फ़ंक्शन या मॉड्यूल हुक के माध्यम से)? उदाहरण के लिए, मैं text-align: rightव्यवस्थापक रूपों (और संपादन नोड्स में भी) में प्रत्येक पूर्णांक फ़ील्ड को जोड़ना चाहूंगा ।


5
पूरी तरह से वैध प्रश्न जो बंद नहीं होना चाहिए। अक्सर एक नया उप विषय बनाने पर व्यवस्थापक विषय (आमतौर पर सात) को मोड़ने की आवश्यकता होती है, जो ओवरकिल होगा।
कारी वैष्णीन

जवाबों:


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
मेरे लिए भी पूरी तरह से काम किया। साफ समाधान।
साशा ग्रीपस

वहाँ इस काम कोड के एक Drupal 8 संस्करण है?
पेटर्गस

11

ऐसा करने के कई तरीके हैं लेकिन आपकी वेबसाइट के प्रदर्शन को प्रभावित करने के मामले में सभी दृष्टिकोण समान नहीं हैं। उदाहरण के लिए:

  1. यदि आप व्यवस्थापक विषय की प्रतिलिपि बनाते हैं या व्यवस्थापक विषय के आधार पर उप-विषय बनाते हैं (ध्यान दें, यह ड्रुपल कॉमर्स के साथ काम नहीं करेगा, क्योंकि इसमें पहले से ही शाइनी के आधार पर एक उपमेय है) - और फिर .in के माध्यम से एक css फ़ाइल जोड़ें। कॉल , आप सीएसएस को हर पेज पर लोड करेंगे।
  2. यदि आप व्यवस्थापक विषय की प्रतिलिपि बनाते हैं, या व्यवस्थापक विषय के आधार पर उप-प्रकार बनाते हैं, तो आप अपने टेम्पलेट . php फ़ाइल में हुक drupal_add_css () का उपयोग कर सकते हैं । यह आपको स्टाइलशीट को सशर्त रूप से कॉल करने की अनुमति देगा, केवल कुछ पृष्ठों पर उदाहरण के लिए, या कुछ ब्राउज़रों के लिए। यह ठीक काम करता है, लेकिन आप पहले से ही आवश्यकता से अधिक फाइलें कॉल कर रहे हैं।
  3. अपना स्वयं का मॉड्यूल बनाएं, और उसमें से drupal_add_css () कॉल करें । जहां तक ​​मुझे पता है, यह मूल विषय को छूने के बिना व्यवस्थापक विषय को बदलने का 'सबसे हल्का' तरीका है और काम करेगा यदि आपका व्यवस्थापक विषय पहले से ही एक सबमिशि है (उदाहरण के लिए। Drupal Commerce Kickstart Admin विषय शाइनी का एक उपशीर्षक है)। मैं इस पद्धति का उपयोग करता हूं क्योंकि यह सभी परिस्थितियों में काम करेगा। एक उदाहरण के लिए नीचे देखें:

'Mymodule' नामक एक निर्देशिका बनाएं (जो भी नाम आप चाहें उसका उपयोग करें), इसके भीतर इन फ़ाइलों को बनाएं और फिर इसे अपनी साइटों / सभी / मॉड्यूल / कस्टम निर्देशिका के भीतर रखें। मैंने नीचे दिए गए कोड में टिप्पणियाँ जोड़ दी हैं ताकि आप देख सकें कि क्या हो रहा है।

  • mymodule.info
  • mymodule.module
  • सीएसएस / 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एक विशिष्ट सीएसएस फ़ाइल (आमतौर पर नामित overrides.css), और template.phpआवश्यक फ़ाइल के साथ उपयोग कर रहा हूं ।


2

CSS इंजेक्टर के बारे में क्या ?

मुझे नहीं पता कि क्या यह एक विषय-निर्भर कॉन्फ़िगरेशन नियम की अनुमति देता है, लेकिन मुझे लगता है कि यह पथ के आधार पर एक की अनुमति देता है (इसलिए व्यवस्थापक / , नोड / जोड़ें / , नोड / * / संपादित चाल करना चाहिए)।


अच्छा विचार। कोशिश की, लेकिन यह काम नहीं करता है (सीएसएस नियम वास्तव में बचा नहीं है!)। मुझे यह भी संदेह है कि यह ओवरले सिस्टम के साथ काम करेगा (लगता है कि file_unmanaged_save_data () कुछ भी नहीं होने में समस्या है। लेकिन मेरा सेटअप थोड़े अजीब है - OSX vbox के अंदर एक ubuntu बॉक्स)।
क्लाउडियो

हम्म। हो सकता है कि वर्तमान संस्करण में बग या ऐसा कुछ हो। मुझे लगता है कि ओवरले के अंदर सिद्धांत रूप में काम करना चाहिए। यह एक अलग विषय के साथ ओवरले को दिखाने में भी सक्षम है .. आप यह भी एक साधारण कस्टम मॉड्यूल में कर सकते हैं मुझे लगता है, एक फ़ाइल में अपने सीएसएस को बचाने के लिए, हुक_इनिट लागू करें () और drupal_add_css () का उपयोग करें यदि कुछ शर्तें लागू होती हैं।
बरदिर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.