2010-02-26 14 views
9

मैं निम्नलिखित को पूरा करने की कोशिश कर रहा हूं। मुझे परियोजना की आवश्यकता के रूप में ड्रूपल 6 का उपयोग करने की आवश्यकता है, लेकिन मैं इसे अपने स्वयं के एचटीएमएल और सीएसएस स्टाइलशीट्स के साथ प्रत्येक नोड/व्यू/पैनल इत्यादि के लिए उपयोग करना चाहता हूंड्रूपल सीएसएस स्टाइलशीट से कैसे छुटकारा पाएं?

समस्या यह है कि, जो कुछ भी विषय है, मुझे हमेशा लगता है कि ड्रूपल मेरे एचटीएमएल सामग्री पर लागू मेरे सीएसएस स्टाइलशीट और सीएसएस दोनों थीम से संबंधित सीएसएस पर लागू होता है। मैंने स्टाइलस्ट्रिपर मॉड्यूल (साइट्स/ऑल/मॉड्यूल में स्थापित) का उपयोग करके सफलता के बिना भी कोशिश की है। कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, अतिरिक्त सीएसएस स्टाइलशीट्स मेरे पृष्ठों पर लागू होती हैं, पूरी तरह से मेरे लेआउट को नष्ट कर देती हैं।

इसे प्राप्त करने का सही तरीका क्या है? क्यों स्टाइलस्ट्रिपर बिल्कुल काम नहीं करता है? क्या एक पूरी तरह से खाली विषय उपलब्ध है? मैंने बुनियादी, मातृत्व, जेन इत्यादि की कोशिश की है, लेकिन मैं हमेशा अपने पृष्ठों पर लागू अतिरिक्त सीएसएस स्टाइलशीट देखता हूं।

यह मुझे पागल कर रहा है, ड्रूपल किसी और ने इसकी लचीलापन के लिए चुना था। अग्रिम धन्यवाद।

उत्तर

6
<?php 
/** 
* Helper function to allow easy CSS excludes + includes 
*/ 
function _phptemplate_get_css($exclude = array(), $include = array()){ 
$css = drupal_add_css(); 
foreach ($css['all']['module'] as $k => $path) { 
    $file = substr($k, strrpos($k, '/') + 1); 
    if (in_array($file, $exclude)){ 
    unset($css['all']['module'][$k]); 
    } 
} 
foreach ($include as $file){ 
    $css['all']['theme'][path_to_theme() .'/'. $file] = true; 
} 
return drupal_get_css($css); 
?> 

drupal.org पर और पढ़ें।

अद्यतन:
इस समारोह डाल करने के लिए उचित जगह, अपने विषय की template.php फ़ाइल में है। असल में आपके मामले में आपको सीएसएस फ़ाइल नामों की एक सरणी पारित करने की आवश्यकता है जिसे आप बाहर करना चाहते हैं।
drupal_add_css() पर कॉल किए गए कोई तर्क के साथ, $css प्रदान करेगा जो सीएसएस फाइलों की एक श्रृंखला है जो आपके विषय से जुड़ा जा रहा है। तो यह पाने का सही समय है!

जैसा कि आप देख, पहले foreach पाश में हम बस फ़ाइल नाम जो पारित कर दिया $exclude सरणी में ही अस्तित्व में कर रहे हैं, शैली हटाने के लिए के लिए $css सरणी चाहते हैं। और हम स्टाइल सम्मिलन के लिए दूसरे लूप में एक ही काम करते हैं। और इसके अंत में, हम drupal_get_css() फ़ंक्शन के थीम बनाने के उपयोग से जुड़ी सभी शैलियों का एक थीम्ड प्रतिनिधित्व वापस कर देते हैं। (शायद आपके मामले में कुछ भी नहीं)

ठीक है, इस समारोह को कहां कॉल करें? आप D5 के लिए D5 या YOUR_THEME_preprocess() के लिए _phptemplate_variables() में इस सहायक फ़ंक्शन को कॉल कर सकते हैं। हम D6 (untested) के लिए कार्रवाई में यह देखने के रूप में:

function YOUR_THEME_preprocess(&$vars, $hook){ 
    // Stylesheet filenames to be excluded. 
    $css_exclude_list = array(
     'lightbox.css', 
     'lightbox_lite.css', 
    ); 

    // Making use of previously defined helper function. 
    $vars['styles'] = _phptemplate_get_css($css_exclude_list); 
} 

मुझे यकीन है कि आप जानते हैं कि कैसे उन्हें सब बाहर करने के लिए कर रहा हूँ;)

+0

धन्यवाद, यह सही प्रतीत होता है। क्या आप वास्तव में फ़ंक्शन का उपयोग करने के लिए आवश्यक लापता विवरण जोड़ सकते हैं? मुझे किस फाइल में फ़ंक्शन डालना चाहिए? सभी सीएसएस स्टाइलशीट को बाहर करने के लिए इसे कैसे कॉल करें? –

+0

आपका स्वागत है, मैं जवाब अपडेट करने जा रहा हूं;) – sepehr

+0

उत्कृष्ट! यह वही था जो मैं खोज रहा था! इसे साझा करने के लिए आपको धन्यवाद! –

0

मैं यह नहीं काम करेगा, लेकिन मैं सिर्फ सोचते हैं अपने विषय के page.tpl.php

<?php echo $styles ?> 

में निम्न पंक्ति को हटा दें और फिर Drupal अपनी ही शैली के किसी भी ..
यह आपके लिए काम हो सकता है जाएगा।


Nitz

1

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

See the .info file for the Tao theme for an example

+0

दिलचस्प जवाब! – sepehr

संबंधित मुद्दे