2013-12-21 40 views
0

我爲我的自定義應用程序創建了一個頁面和應用程序鉤子,現在我需要知道如何將此應用程序與默認麪包屑集成。我發現的所有內容都是官方文檔中的導航修飾符。但是這些例子對我來說並不足夠描述,我不知道如何在我的情況下使用它們。 比方說,我有車型像這樣:如何整合自定義應用程序以使用麪包屑?

class Category(models.Model): 
    title = models.CharField(max_length=100) 
    slug = models.SlugField(max_length=30) 

class Post(models.Model): 
    title = models.CharField(max_length=100) 
    content = models.TextField(max_length=1000) 
    category = models.ForeignKey(Category) 

我使用像/category.slug/的URL顯示在類別的所有訊息/category.slug/post.id顯示文章的內容。

回答

1

使用導航像這樣的修飾符。

在MYAPP/menu.py:

from menus.base import NavigationNode 
from menus.menu_pool import menu_pool 
from cms.menu_bases import CMSAttachMenu 
from models import Category, Post 

class CategoryMenu(CMSAttachMenu): 

    name = ("Category Menu") 

    def get_nodes(self, request): 
     nodes = [] 

     for category in Category.objects.all(): 
      node = NavigationNode(
       category.title, 
       category.get_absolute_url(), 
       category.pk, 
      ) 
      nodes.append(node) 
      for post in Post.objects.filter(category=category): 
       node2 = NavigationNode(
        post.title, 
        post.get_absolute_url(), 
        post.pk, 
        category.pk 
       ) 
       nodes.append(node2) 
     return nodes 

menu_pool.register_menu(CategoryMenu) 

現在,您可以選擇頁面你大呼過癮的應用程序菜單,並顯示在模板中的麪包屑。

哦,你必須get_absolute_url添加到模型: https://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url

0

由於django-cms documentation說:

如果當前URL不被CMS或處理您在導航擴展工作,你可能需要通過模板來提供自己的痕跡。這主要用於登錄,註銷和第三方應用等頁面。

相關問題