2017-01-19 3 views
3

У меня есть тип содержимого папки с ловушкой, и у меня есть подписчик событий. Когда тип содержимого создается, я создаю коллекцию, в которой дети отображаются в контейнере в соответствии с несколькими параметрами. После создания коллекции я пытаюсь установить страницу по умолчанию контейнера в коллекцию.Plone - Как я могу установитьDefaultPage в подписчик событий?

def myContainerAdded(my_container, event): 
    #get container 
    #set advanced query for collection 
    #create collection with api.create 
    my_container.setDefaultPage(new_collection.id) 

Абонент в configure.zcml

<subscriber 
    for="my.product.my_container.IMyContainer 
     zope.lifecycleevent.interfaces.IObjectAddedEvent" 
    handler=".events.myContainerAdded" /> 

К сожалению, страница по умолчанию не полностью установлен. Он просто показывает страницу контейнера, но коллекция выбрана в раскрывающемся списке «Дисплей». Если я нажму «Изменить элемент контента как представление по умолчанию» и выберите коллекцию, он изменит страницу по умолчанию на коллекцию.

Раньше я использовал «setuphandler» для настройки структуры папок (в отличие от события добавления) и работал setDefaultPage. Я забываю шаг, потому что я пытаюсь это через событие?

Я использую plone.4.3.

Edit: Я также попытался:

my_container.default_page = new_collection.id 

Edit: я нашел что-то интересное. Я временно прокомментировал код, связанный с коллекцией в подписчике событий. Я вручную добавил коллекцию в объект-контейнер, а затем установил страницу по умолчанию контейнера в коллекцию. Страница по умолчанию для контейнера была сборкой.

Возможно, что-то не индексируется правильно?

ответ

3

На самом деле все прошло хорошо, просто после создания типа контента на основе Ловкости вы попадете на URL-адрес по умолчанию, то есть «/ view» добавляется к URL-адресу элемента, который является псевдонимом для метод просмотра по умолчанию и здесь разрешается шаблон «folder_listing».

Чтобы преодолеть это быстро, вы можете добавить перенаправление URL объекта в методе абонента, без какого-либо вида имя-приложенном к URL-адресу:

event.REQUEST.RESPONSE.redirect(my_container.absolute_url()) 
+0

Я должен заметил/представление части, когда объект был сначала создан. На самом деле, навигация также указывала на правильную страницу. Благодарим за решение, которое вы разместили. Я ценю это. –

+0

Мне понадобилось минутку или два, чтобы узнать это. Это тоже ошибка, имао. Спасибо, что спросили об этом, я работал над чем-то связанным, и ваш квест привел правильные идеи в нужное время :-) Если вам хочется искать, если отчет об ошибке уже существует или сообщается, пожалуйста, оставьте ссылку на билет (выпуск на GitHub), здесь. Надеюсь, у вас есть деньги в понедельник! –

Смежные вопросы