2013-08-13 4 views
8

में काम नहीं कर रहा है मैंने केकेपीएचपी में थीम संपत्तियों को जोड़ने के संबंध में कई सवाल देखे हैं और उनमें से कोई भी मेरी समस्या का समाधान नहीं कर रहा है और हाल ही में पोस्ट 2012 में भी था इसलिए मैंने सोचा कि मैं अपना प्रश्न फ्लोट करूंगा वहाँ से बाहर।थीम एसेट केकपीएचपी 2.2.4

मैंने अपने केकेपीएचपी 2.2.4 एप्लिकेशन में थीम लागू की हैं। मेरी थीम "डिफ़ॉल्ट" (जिसे पहले 1 मिनट पहले तक "डिफ़ॉल्ट" कहा जाता है) app/View/Themed/default पर स्थित है (पहले थीम नाम के फ़ोल्डर नाम के लिए संबंधित पूंजी डी था)।

मेरे सीएसएस फ़ाइल app/View/Themed/default/webroot/css/style.css जो मैं निम्नलिखित कोड

Default.ctp लेआउट के साथ app/View/Themed/default/Layouts/default.ctp में फोन पर स्थित है

echo $this->Html->css('style'); 

(मैं "सिर्फ मामले में webroot के लिए राजधानी डब्ल्यू का उपयोग कर की कोशिश की है "लेकिन कोई आश्चर्य नहीं कि काम नहीं किया)

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

AppController

class AppController extends Controller { 

    public $theme = 'default'; // previously 'Default' 
    // also, have used both 'public $theme' and 'var $theme', no difference 

मैं निम्न सवालों पढ़ लिया है और "समाधान" में से कोई भी काम किया है। अधिकांश समाधान वर्तनी/पूंजीकरण की जांच करना चाहते थे, फ़ोल्डर्स पर अनुमतियां जांचें, मेरी .htaccess फ़ाइल आदि देखें। अभी भी कुछ नहीं। और नए विचार?

.htaccess

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

विषय webroot और सीएसएस फ़ोल्डर के लिए फ़ोल्डर अनुमति 755

यहाँ कर रहे हैं कुछ संसाधनों मैं कोई भाग्य के साथ किया जाता है।

http://book.cakephp.org/2.0/en/views/themes.html

CakePHP theme resources return error

Unable to get css and image files in Themes webroot folder of cakephp

https://groups.google.com/forum/#!topic/cake-php/xaRAugMoNSc

CakePHP 2.x theme not working

https://groups.google.com/forum/#!topic/cake-php/siYVWchUb1g

अद्यतन:$this->Html->image('image.jpg') का उपयोग View/Themed/Default/webroot/img/image.jpg पर स्थित परिभाषित छवि को सही ढंग से प्रदर्शित करता है। हालांकि, $this->Html->css('style') का उपयोग करके स्टाइलशीट को app/webroot/css/style.css से खींचने की कोशिश की जाती है और app/View/Themed/Default/webroot/css/style.css से नहीं। छवि को सही तरीके से लिंक करने के लिए मुझे अपरकेस डी के साथ "थीम" पर वापस थीम के नाम और फ़ोल्डर का नाम भी बदलना पड़ा। स्टाइलशीट अभी भी सही ढंग से लिंक नहीं है। यदि मैं अपने ब्राउज़र में सीधे अपनी थीम स्टाइलशीट पर नेविगेट करता हूं, तो एक खाली पृष्ठ दिखाई देता है। यदि मैं एक स्टाइल शीट पर नेविगेट करता हूं जो मेरे थीम फ़ोल्डर में मौजूद नहीं है तो मुझे उचित त्रुटि संदेश मिलता है। हालांकि, मेरे थीम स्टाइलशीट (जो मौजूद है) का स्रोत देख रहा है, एक खाली पृष्ठ दिखाता है।

उत्तर

1

ठीक है तो शायद यह स्पष्ट है ... लेकिन मेरी स्टाइलशीट उन कार्यों का उपयोग करती है जिन्हें मैंने कस्टम हेल्पर में बनाया है। जब स्टाइलशीट app/webroot/css में स्थित है, तो कोई समस्या नहीं है, लेकिन जब स्टाइलशीट app/View/Themed/Default/webroot/css में स्थित है, तो यह ठीक से प्रदर्शित नहीं हो सकता है और इसलिए app/webroot/css में स्थित गैर-मौजूद स्टाइलशीट के केक लिंक हैं। मैंने अपने थीम स्टाइलशीट से हेल्पर्स को हटा दिया है और यह सब अब काम करता है।

मैंने $this->Html->image (और संभावित रूप से स्टाइलशीट और जेएस फाइलों का उपयोग करके) ठीक से प्रदर्शित करने के लिए छवियों को "डिफ़ॉल्ट" से "डिफ़ॉल्ट" में भी वापस कर दिया है, भले ही दृश्य फ़ाइलों को सही ढंग से लिंक किया गया हो पूंजीकरण

विषय के
3

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

मेरी थीम megaecia के रूप में नामकरण कर रही थी, और कोई त्रुटि संदेश नहीं, कोई लॉग नहीं है (क्योंकि मैं विंडोज़ था, यूनिक्स में ऐसा नहीं होता) तो मैं Megaecia में बदल गया और सब कुछ सफलतापूर्वक काम करता है।

आशा है कि मैंने मदद की।

+0

वहाँ कोई अंतर नहीं है कि क्या मैं "डिफ़ॉल्ट" का उपयोग करें या थीम नाम के रूप में "डिफ़ॉल्ट"। ** अद्यतन: ** '$ this-> एचटीएमएल-> छवि ('image.jpg') का उपयोग करके' सही/थीम्ड/डिफ़ॉल्ट/वेबूट/img/image.jpg' पर स्थित परिभाषित छवि को सही ढंग से प्रदर्शित करता है। हालांकि, '$ this-> एचटीएमएल-> सीएसएस ('स्टाइल') का उपयोग करके 'ऐप/वेबूट/सीएसएस/style.css' से स्टाइलशीट खींचने की कोशिश की जाती है, न कि' ऐप/व्यू/थीम्ड/डिफॉल्ट/वेबूट/सीएसएस 'से/style.css' – bowlerae

+3

यही वह है! केकेपीएचपी को कैमेलकेस के साथ फ़ोल्डर का नाम दिया जाना चाहिए, भले ही नियंत्रक में निचले रंग के साथ निर्दिष्ट थीम नाम। –

+0

सटीक रूप से सर्ज कहता है, यदि आपके पास लोअरकेस में आपकी थीम निर्देशिका है, तो बस इसे कैपिटल करें और यह – xorinzor

0

एसेट फ़ाइलों app/webroot/theme फ़ोल्डर में इस तरह से रखा जा करने के लिए है:

app/webroot/theme/default/css 
app/webroot/theme/default/js 
app/webroot/theme/default/img 
. . . 

default कहाँ विषय नाम छोटा अक्षर से शुरू होने वाले है। फ़ोल्डर का नाम theme हार्डकोड किया गया है। नोट, -ed प्रत्यय नहीं है।

थीम लेआउट app/View/Themed/Default/Layouts फ़ोल्डर में रखा जाना चाहिए। थीम नाम को कैमलकेस नियम का सम्मान करना चाहिए क्योंकि गैब्रियल ओक ने उत्तर दिया था। दरअसल मुझे समस्या थी जब लिनक्स मशीन पर केकपीएचपी मेरा लेआउट नहीं ढूंढ पा रहा था क्योंकि मैंने अपने थीम फ़ोल्डर को लोअरकेस के साथ app/View/Themed/default/Layouts नाम दिया था।

और एक और बात: नियंत्रक विषय में लोअरकेस के साथ भी निर्दिष्ट किया जाना चाहिए: $this->theme = 'default';। यह संपत्ति लुकअप को प्रभावित करता है, क्योंकि हमने अपनी संपत्ति को लोअरकेस फ़ोल्डर app/webroot/theme/default में रखा है।

0

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

अर्थात

$this->Html->css('/plugins/bespoke.css'); 

इस विषय निर्देशिका से सीएसएस कॉल करेंगे।

अगर आप शुरुआत में / में नहीं जोड़ा था, केक विषय फ़ोल्डर के लिए देखो नहीं होगा, बजाय इसे अपने ऐप की डिफ़ॉल्ट webroot निर्देशिका से सीएसएस लोड करने के लिए कोशिश करता है

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