2011-12-24 19 views
8

DjangoCMSプラグインに取り組んでいます。これにはJavascriptファイルが含まれています。プラグインのJavascriptは、サイトの残りの部分と同じライブラリに依存しています。だから、ここで私が今持っているものの概念の部分があります:私の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> 

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

私はプラグインjavasc riptファイルは、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

これが別の質問の投稿を保証するかどうかは分かりませんが、adminユーザーがログインすると、adminmedia jsファイルが 'js'ブロックに追加されるため、jqueryが再定義されます(jquery-uiとjqueryプラグイン私のライブラリから)。代わりにadminmediaがブロックの上部に表示されるようにする方法はありますか? –

+0

私は最後に、[toolbar.html](https://github.com/divio/django-cms/blob/develop/cms/templates/)にちょっとした微調整を加えてdjango-cmsを再インストールすることが最善の策だと判断しました。 cms/toolbar/toolbar.html)ファイルを使用して、$が定義されているかどうかに応じてjQueryのjavascriptスクリプトタグを条件付きで書き込みます。私はcmsツールバーが再開発にあったと読んでいます。 –

関連する問題