Правильный способ использования надстройки Sekizai в плагине DjangoCMS - PullRequest
8 голосов
/ 24 декабря 2011

Я работаю над плагином DjangoCMS, который включает в себя файл javascript для себя. Javascript плагина опирается на те же библиотеки, что и остальная часть сайта. Итак, вот концептуальная часть того, что у меня есть сейчас:

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

Так что независимо от того, что я делаю, файлы плагина javascript помещаются в окончательный HTML-код над JQuery и всеми другими зависимостями, а не под тем местом, где они принадлежат. Что мне здесь не хватает?

Спасибо.

1 Ответ

5 голосов
/ 25 декабря 2011

Вы можете решить эту проблему, поместив базовые вызовы 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>
...