У меня есть тип содержимого папки с ловушкой, и у меня есть подписчик событий. Когда тип содержимого создается, я создаю коллекцию, в которой дети отображаются в контейнере в соответствии с несколькими параметрами. После создания коллекции я пытаюсь установить страницу по умолчанию контейнера в коллекцию.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: я нашел что-то интересное. Я временно прокомментировал код, связанный с коллекцией в подписчике событий. Я вручную добавил коллекцию в объект-контейнер, а затем установил страницу по умолчанию контейнера в коллекцию. Страница по умолчанию для контейнера была сборкой.
Возможно, что-то не индексируется правильно?
Я должен заметил/представление части, когда объект был сначала создан. На самом деле, навигация также указывала на правильную страницу. Благодарим за решение, которое вы разместили. Я ценю это. –
Мне понадобилось минутку или два, чтобы узнать это. Это тоже ошибка, имао. Спасибо, что спросили об этом, я работал над чем-то связанным, и ваш квест привел правильные идеи в нужное время :-) Если вам хочется искать, если отчет об ошибке уже существует или сообщается, пожалуйста, оставьте ссылку на билет (выпуск на GitHub), здесь. Надеюсь, у вас есть деньги в понедельник! –