9

Django CMS 2.1.0.beta3 を使用していますが、問題が発生しています。変数内のすべてのページにアクセスして、それらをループし、for ループを使用してナビゲーション メニューを作成できるようにする必要があります。django cms で提供される show_menu 機能は、私が行っていることでは機能しません。

次のようなことができるように、すべてのページを含むクエリセットが必要です。

{% for page in cms_pages %}
    {{ page.title }}
{% endfor %}    

すべてのページでそのような公開されたすべてのページ オブジェクトにアクセスする方法を知っている人はいますか?

4

4 に答える 4

12

私は、すべてのcmsページを提供するテンプレートタグをdjangoで作成することで、この問題を解決することになりました。

app / template_tags / Navigation_tags.py:

from django import template
from cms.models.pagemodel import Page

register = template.Library()

def cms_navigation():
    cms_pages = Page.objects.filter(in_navigation=True, published=True)
    return {'cms_pages': cms_pages}

register.inclusion_tag('main-navigation.html')(cms_navigation)

次に、テンプレートで次のようにテンプレートタグを呼び出します。

{% load navigation_tags %} {% cms_navigation %}

これには、main-navigation.htmlファイルを作成しておく必要があります。ここで、そのテンプレートのHTMLは、タグがある場所ならどこでもテンプレートに挿入され、main-navigation.htmlは、カスタムタグ関数で渡されたものすべてにアクセスできます。

テンプレート/main-navigation.html:

<ul id="navigation">
    {% for page in cms_pages %}
         {{ page.get_title }}
    {% endfor %}    
</ul>

これが誰かがテンプレートタグをよりよく理解するのに役立つことを願っています。私は、この主題に関してドキュメントが少し混乱していることに気づきました。

于 2010-12-10T17:44:45.303 に答える
1

ページが必要な場所にこれを追加する必要があります。

{{ request.current_page }}

これは私にとってはうまくいきました。{% load staticfiles %}コードのどこかに含める必要があるかもしれません

于 2016-06-16T07:05:21.767 に答える
1

ページモデルを使用して、公開されたすべてのページを取得できます。

Page.objects.published()

これをビューまたはプラグインで使用できます

よろしく ミロ migaat.blogspot.com

于 2010-12-07T07:18:55.697 に答える