我正在尝试根据当前用户将标记界面应用于请求。这个想法是根据用户的喜好提供不同的皮肤。
所以我尝试使用类似中间件的 hooks。在 configure.zcml 中:
<subscriber
for="Products.CMFCore.interfaces.ISiteRoot
zope.traversing.interfaces.IBeforeTraverseEvent"
handler=".layer.mark_layer"
/>
在 layer.py
def mark_layer(portal, event):
'''Conditional marking of the request according to the user
preferences.'''
request = event.request
portal_state = getMultiAdapter((portal, request), name="plone_portal_state")
anon = portal_state.anonymous()
print anon, portal.portal_membership.isAnonymousUser()
# more code here...
问题是 plone 总是报告用户是匿名的。
那么,在这种情况下,我该如何应用标记界面呢?
提前致谢。