2011-12-24 5 views
8

Sto lavorando a un plug-in DjangoCMS, che include un file javascript per sé. Il Javascript del plugin si basa sulle stesse librerie del resto del sito. Quindi, ecco la parte concettuale di ciò che ho in questo momento:Modo corretto per utilizzare Addoblock Sekizai in un plug-in DjangoCMS

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> 

Ora nel modello caricato per i miei DjangoCMS personalizzati plug-in,

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 %} 
.... 

Quindi non importa quello che faccio il plugin javasc i file ripeti vengono posizionati nell'HTML finale sopra JQuery e tutte le altre dipendenze, piuttosto che al di sotto di dove appartengono. Cosa mi manca qui?

Grazie.

risposta

5

È possibile risolvere questo problema inserendo le chiamate "base" addtoblock (jquery, ecc.) Nella parte superiore del modello di base il più possibile. Il bit importante è che è prima di chiami e tag {% placeholder %}, che sulla maggior parte dei siti significa prima del tag di apertura <body>.

Un esempio modello dummy:

{% 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

Grande. E grazie ojii per DjangoCMS! –

+0

Non sono sicuro se questo richiede un altro post di domanda, ma quando l'utente admin è loggato, i file adminmedia js vengono aggiunti al blocco 'js', quindi jquery viene ridefinito (che fa saltare via jquery-ui e i miei jquery plugin dalle mie libs). Esiste un modo per garantire che l'adminmedia venga invece sottoposto a rendering nella parte superiore del blocco? –

+0

Alla fine ho deciso che la cosa migliore per me era reinstallare django-cms con un piccolo ritocco nel [toolbar.html] (https://github.com/divio/django-cms/blob/develop/cms/templates/ cms/toolbar/toolbar.html), per scrivere in modo condizionale nel tag script javascript jQuery a seconda che $ sia stato definito. Ho letto che la toolbar Cms era in fase di riqualificazione, spero che ci sia un aggiornamento prima di lanciare questa cosa! –

Problemi correlati