2009-09-18 11 views
13

मैं php में एक css फ़ाइल लपेटना चाहता हूं ... इसलिए मैं सीएसएस फ़ाइल के लिए हेडर लिखता हूं और इसे एक php एक्सटेंशन देता हूं, इस प्रकार ... css.php। प्रश्न यह काम करेगा यदि पृष्ठ का उपयोग पहले से ही शामिल किया जा रहा है ... या क्या यह नया हेडर फ्रेम के साथ संघर्ष करेगा पृष्ठ को ????शामिल करें: php फ़ाइल एक्सटेंशन के साथ सीएसएस?

+0

मैं पूछ सकता है कि आप इस का उपयोग करने के 'चाहते सेवा करने के लिए css.php' फ़ाइल? कुछ प्रकार की शैलियों जो डेटाबेस उत्पन्न या कुछ हैं? – gnarf

+0

क्या आप कुछ कोड दिखा सकते हैं? मैं थोड़ी देर से खो गया हूं कि स्थिति क्या है। – strager

उत्तर

18

gnarf ने इसे खींचा।

मुझे क्या करना:

<link rel="stylesheet" type="text/css" media="screen" href="<? echo TMPL ?>css/name-of-file.css.php"> 

और फिर अपने .css.php फ़ाइल के शीर्ष में:

<? 
header('Content-Type: text/css'); 
// print out your php-driven css... 
?> 
+2

आप 'हेडर ("सामग्री-प्रकार: टेक्स्ट/सीएसएस; वर्णसेट: यूटीएफ -8") का भी उपयोग कर सकते हैं; ' – Omar

+0

क्या यह पुराने ब्राउज़र जैसे आईई 7 और 8 के साथ काम करता है? –

+0

सुनिश्चित करें कि फ़ाइल के शीर्ष पर शीर्षलेख मुद्रित है। यदि आपके पास शीर्ष पर एक खाली रेखा है (जैसे मैंने किया) तो यह कहीं भी काम नहीं कर सकता है! – MilanG

0

यह शामिल होगा यदि समेकक स्क्रिप्ट कोई आउटपुट नहीं भेजती है, अन्यथा आपके पास "शीर्षलेख पहले से ही" त्रुटि भेजे जाएंगे।

includer में ob_start() का उपयोग करके इस से बचने के लिए एक चाल हो सकती है और सब कुछ काम कर सकता है।

एचटीएमएल फ्रेम के पास PHP के साथ कुछ भी नहीं है, इसलिए इस मामले में कोई संघर्ष नहीं है।

15

यदि आपके पास css.php नामक एक फ़ाइल है तो बस सुनिश्चित करें कि पहली पंक्तियां उचित सामग्री-प्रकार शीर्षलेख सेट करें। यदि आप पहले से नहीं हैं तो आप bootstrap.php में अपनी सत्र सेटअप सामग्री (यदि कोई है) को विभाजित करना भी चाह सकते हैं। एक databse से कुछ शैली जानकारी लोड करने का एक त्वरित उदाहरण: इस के लिए php include() समारोह का उपयोग नहीं करने

<?php 
    header("Content-Type: text/css"); 
    include('bootstrap.php'); 
    // fetch some information to print out our styles 
    $result = mysql_query("SELECT * FROM site_styles"); 
    while ($row = mysql_fetch_assoc($result)) { 
    echo $row["selector"]." {\n".$row["css"]."\n}\n"; 
    } 
?> 

अपने अन्य php फ़ाइल से, बस उत्पादन टैग css.php शामिल करने के लिए, आप चाहते काम!

<link rel="stylesheet" type="text/css" href="css.php"/> 

के बाद से अधिकांश ब्राउज़र बहुत आक्रामक तरीके से अपनी सीएसएस फ़ाइल कैश होगा, आपको लगता है कि लगता है गतिशील रूप से बदलती उस फ़ाइल की सामग्री बहुत अच्छा काम नहीं करता हो सकता है हालांकि। हालांकि इस पूरी तरह से अपने सीएसएस फ़ाइल हर बार है कि पैरामीटर परिवर्तन को फिर से लोड करने जा रहा है

<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/> 

: तुम कितने तरह लिंक के href करने के लिए एक बात पैरामीटर जोड़कर अद्यतन करने के लिए है कि मजबूर कर सकता है। इस कारण से स्थिर सीएसएस फाइलों को पूरा करने के लिए आमतौर पर बेहतर अभ्यास होता है। यदि आपके पास कुछ शैलियों हैं जिन्हें कॉन्फ़िगरेशन पैरामीटर, आदि से लोड करने की आवश्यकता है, जो अक्सर नहीं बदलते हैं, तो पहला उदाहरण आपके लिए बहुत अच्छा काम करना चाहिए।

+1

यह देखने के लिए बेकार है कि आपका जवाब शार्क हो गया है। – emc

6

HTML फ़ाइल:
<link rel="stylesheet" type="text/css" href="css.php"/>

css.php फ़ाइल :
<?php
header("Content-type: text/css; charset=utf-8");
//your php + css code goes here
?>

यदि आपका CSS.php फ़ाइल में कोड की पहली पंक्ति नहीं है
header("Content-type: text/css; charset=utf-8");यह काम नहीं करेगा

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