Как мне найти папку, в которой был определен портлет? - PullRequest
4 голосов
/ 06 августа 2011

Я создаю пользовательские версии портлетов Новости и События, которые будут показывать только элементы контента, расположенные ниже по течению, где они определены (а не по всему сайту).

Идея заключается в том, чтобы определенные группы на нашем сайте могли создавать портлеты новостей и событий, которые отображают элементы только из иерархии нижестоящих папок.

По сути, я поменялся местами

portal_state.navigation_root_path()

для

path='/'.join(context.getPhysicalPath())

в запросе каталога представления

Проблема, с которой я сталкиваюсь, заключается в том, что context.getPhysicalPath () оценивается на основе того, где просматривается портлет, а не того места, где был определен портлет. Когда кто-то перемещается вниз по течению от папки группы верхнего уровня, он часто заканчивает с пустым или исчезающим портлетом.

Как найти папку, в которой определен портлет, чтобы я мог передать ее в качестве контекста?

1 Ответ

4 голосов
/ 06 августа 2011

Я думаю, что вы хотите __portlet_metadata__['key']:

(Pdb) self.context.restrictedTraverse(self.__portlet_metadata__['key'])
<ATFolder at /plone/Members/test_user_1_>
...