2011-12-24 13 views
8

Kendisi için bir javascript dosyası içeren bir DjangoCMS eklentisi üzerinde çalışıyorum. Eklentinin Javascript'i, sitenin geri kalanıyla aynı kütüphanelere dayanır. Yani, burada şu anda ne var kavramsal parçası:Bir DjangoCMS eklentisi Sekizai addtoblock kullanmak için doğru yolu

Basetemplate.html özel eklenti benim DjangoCMS için yüklenen şablonda Şimdi

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

,

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

Eklenti javasc ne yaparsam yapayım ript dosyaları, ait oldukları yerin altında değil, JQuery ve diğer tüm bağımlılıkların üstündeki son HTML'ye yerleştirilir. Burada neyi özlüyorum?

Teşekkürler.

cevap

5

"Temeli" addtoblock çağrılarını (jquery, vb.) Temel şablonunuzun en üste olabildiğince uzağa yerleştirerek bu sorunu giderebilirsiniz. Önemli bit önce ve {% placeholder %} etiketler, <body> etiketi açılış önce çoğu site demektir demektir.

bir örnek kukla şablonu:

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

harika. Ve DjangoCMS için teşekkürler! –

+0

Bunun başka bir soru gönderilip gönderilmediğinden emin değilim, ancak yönetici kullanıcı giriş yaptığında, adminmedia js dosyaları 'js' bloğuna eklenir, bu yüzden jquery yeniden tanımlanır (jquery-ui ve jQuery eklentilerim darbeler) lib'larımdan). Bunun yerine adminmedia bloğun tepesinde işlenmesini sağlamak için herhangi bir yolu var mı? –

+0

Nihayetinde benim için en iyi şeyin django-cms'yi [toolbar.html] 'de küçük bir ayarlamayla yeniden kurmak olduğunu belirledim (https://github.com/divio/django-cms/blob/develop/cms/templates/ cms/toolbar/toolbar.html) dosyası, koşullu olarak $ tanımlı olup olmadığına bağlı olarak jQuery javascript komut dosyasında yazılır. CMS araç çubuğunun yeniden geliştirildiğini okudum, umarım bu şeyi başlatmadan önce bir yükseltme var demektir! –

İlgili konular