django-cms apphook + меню - PullRequest
       1

django-cms apphook + меню

0 голосов
/ 13 марта 2012

django-cms 2.2, django 1.3.1

Я создаю приложение под названием gallery.Галерея имеет фотографии внутри.(есть много галерей)

У меня есть следующая структура:

  • cms_app.py - apphook для галереи (необходим для просмотра деталей галереи (фотографии внутри галереи))
  • cms_plugins.py - плагин для списка галерей
  • menu.py - каждая галерея имеет свою собственную страницу (фотографии внутри галереи), здесь мы создаем меню
  • views.py - представление для галереиподробности (фотографии внутри)
  • urls.py - // URL для apphook для прикрепления фотографий внутри вида, name=gallery_details

Структура URL:

  • /gallery-list/ - Страница со списком галерей
  • /gallery-list/1/ - Фотографии pk = 1 галереи
  • /another-gallery-list/ - Другая страница со списком галерей
  • /another-gallery-list/1/ - Фотографии галереи pk = 1 (аналогично /gallery-list/1/, но с другим URL)

структура страницы django-cms:

  • Страница /gallery-list/ с apphook =крючок приложения галереи + плагин для списка галерей
  • Страница /another-gallery-list/ с apphook = крючок приложения галереи + плагин для списка галерей (одинаковых, но разныхэкземпляры)

Меню:

  • Галереи
    • Галерея 1
  • Другие галереи
    • Галерея 1

Проблема: Как создать меню для таких галерей?

В настоящее время я создаю CMSAttachMenu и генерирую узлы(из модели).Как мне сделать URL?Я пытаюсь использовать reverse('gallery_details', args=[self.pk]) (get_absolute_url метод), но он дает мне URL: /galleries/<id>/.Я хочу получить /gallery-list/1/ и /another-gallery-list/1/ в зависимости от страницы, к которой прикреплено apphook .

Вот документация, которую я использую: http://docs.django -cms.org / ru / 2.2 / extending_cms / app_integration.html # app-hooks

Помощь очень ценится.

1 Ответ

0 голосов
/ 13 марта 2012

Что-то вроде следующего должно работать. Я сделал нечто подобное для приложения Project, когда был список проектов, а также страница с описанием проекта.

class GalleryMenu(CMSAttachMenu):
    name = _("Gallery Menu")
    def get_nodes(self, request):
        c=itertools.count()
            nav = [
                NavigationNode(
                  _(g.title),
                  reverse("gallery_detail", kwargs={ 'slug' : g.slug }),
                  next(c), parent_id=0
                )
            for i,g in enumerate(Gallery.objects.all()) ]
    return nav
...