2011-12-24 5 views
8

मैं DjangoCMS प्लगइन पर काम कर रहा हूं, जिसमें स्वयं के लिए जावास्क्रिप्ट फ़ाइल शामिल है। प्लगइन का जावास्क्रिप्ट उसी पुस्तकालयों पर निर्भर करता है जो शेष साइट करता है। तो, अभी यहाँ मैं क्या है के वैचारिक हिस्सा है:DjangoCMS प्लगइन में Sekizai addtoblock का उपयोग करने का सही तरीका

Basetemplate.html

{% load cms_tags sekizai_tags and_a_bunch_of_other_stuff %} 
<html> 
... 
<head> 
{% render_block "css" %} 
</head> 
<body> 
... 
{% addtoblock "js" %}[jquery]{% endaddtoblock %} 
{% addtoblock "js" %}[google api, data, more cool stuff like jqplot.]{%endaddtoblock%} 
{% addtoblock "js" %}[my site's library js.] {% endaddtoblock %} 

{% render_block "js" %} 
</body> 
</html> 
अब

मेरी DjangoCMS के लिए कस्टम प्लगइन लोड टेम्पलेट में,

great_calendar_plugin_template.html

{% load sekizai_tags and_a_couple_other_things %} 
{% addtoblock "js" %}[plugin javascript file dependency]{%endaddtoblock %} 
{% addtoblock "js" %}[plugin javascript file]{% endaddtoblock %} 
.... 

कोई फर्क नहीं पड़ता कि मैं प्लगइन जावस्क करता हूं रिप्ट फाइलें JQuery के ऊपर अंतिम HTML में रखी जाती हैं और अन्य सभी निर्भरताओं के बजाय, जहां वे संबंधित हैं। मुझे यहां क्या समझ नहीं आ रहा है?

धन्यवाद।

उत्तर

5

आप जितना संभव हो सके अपने आधार टेम्पलेट के शीर्ष पर "आधार" addtoblock कॉल (jquery, आदि) डालकर इस समस्या को ठीक कर सकते हैं। महत्वपूर्ण बात यह है कि से पहले आप कॉल करते हैं और {% placeholder %} टैग, जो अधिकांश साइटों पर आपके उद्घाटन <body> टैग से पहले है।

एक उदाहरण डमी टेम्पलेट:

{% load cms_tags sekizai_tags and_a_bunch_of_other_stuff %} 

{% addtoblock "js" %}[jquery]{% endaddtoblock %} 
{% addtoblock "js" %}[google api, data, more cool stuff like jqplot.]{%endaddtoblock%} 
{% addtoblock "js" %}[my site's library js.] {% endaddtoblock %} 

<html> 
    <head> 
     {% render_block "css" %} 
    </head> 
    <body> 
     {% placeholder "mycontent" %} 

     {% render_block "js" %} 
    </body> 
</html> 
+1

महान। और DjangoCMS के लिए ओजीआई धन्यवाद! –

+0

मुझे यकीन नहीं है कि यह एक और प्रश्न पोस्ट वारंट करता है, लेकिन जब व्यवस्थापक उपयोगकर्ता लॉग इन होता है, तो adminmedia जेएस फाइलें 'जेएस' ब्लॉक में जोड़ दी जाती हैं, इसलिए jquery को फिर से परिभाषित किया जाता है (जो jquery-ui और मेरी jquery plugins को दूर करता है मेरे libs से)। क्या यह सुनिश्चित करने का कोई तरीका है कि व्यवस्थापक के बजाय ब्लॉक के शीर्ष पर प्रस्तुत किया जाता है? –

+0

मैंने आखिरकार यह निर्धारित किया कि मेरे लिए सबसे अच्छी बात यह है कि [toolbar.html] में थोड़ा tweak के साथ django-cms को पुनर्स्थापित करना है (https://github.com/divio/django-cms/blob/develop/cms/templates/ सीएमएस/टूलबार/टूलबार.html) फ़ाइल, जिसे परिभाषित किया गया था, इस पर निर्भर करता है कि jQuery जावास्क्रिप्ट स्क्रिप्ट टैग में सशर्त रूप से लिखने के लिए। मैंने पढ़ा कि सीएमएस टूलबार पुनर्विकास में था, मुझे आशा है कि इस बात को लॉन्च करने से पहले मुझे अपग्रेड हो! –

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