個人設定ページに別のオプションを追加するアドオンを作ろうとしています。大まかに関連するトピックに関するさまざまなガイドから、これを適切に行う方法をまとめようとしましたが、うまくいきませんでした。私は Plone の開発に取り掛かったばかりで、これの多くは私にはややなじみのないものなので、親切にしてください :)
私はこれをすべてPlone 4.3で行っています
サイトでアドオンを有効にすると、エラーは発生しませんが、設定ページに追加のフィールドが含まれません。
これまでのところ、私はこのようなものを持っています。奇妙な命名スキームは無視してください。繰り返しますが、これは他のガイドからまとめられたものであり、リファクタリングする前に機能させたかったのです。
userdataschema.py
from plone.app.users.browser.personalpreferences import IPersonalPreferences
from zope.interface import Interface
from zope import schema
class IEnhancedUserDataSchema(IPersonalPreferences):
""" Use all the fields from the default user data schema, and add various
extra fields.
"""
buttonsEnabled = schema.Bool(title=u'Transition button widget.',
default=True,
description=u'Uncheck to remove the transition button box from ALL pages.',
required=False
)
アダプター.py:
from plone.app.users.browser.personalpreferences import PersonalPreferencesPanelAdapter
from app.statebuttons.userdataschema import IEnhancedUserDataSchema
from zope.interface import implements
class EnhancedUserDataPanelAdapter(PersonalPreferencesPanelAdapter):
"""
"""
implements(IEnhancedUserDataSchema)
def get_buttonEnabled(self):
return self.context.getProperty('buttonsEnabled', '')
def set_buttonsEnabled(self, value):
return self.context.setMemberProperties({'buttonsEnabled': value})
buttonsEnabled = property(get_buttonEnabled, set_buttonsEnabled)
オーバーライド.zcml:
<configure
xmlns="http://namespaces.zope.org/zope"
i18n_domain="collective.examples.userdata">
<adapter
provides=".userdataschema.IEnhancedUserDataSchema"
for="Products.CMFCore.interfaces.ISiteRoot"
factory=".adapter.EnhancedUserDataPanelAdapter"
/>
</configure>
私が間違っていることについて誰かが私に意見を与えることができれば、それは素晴らしいことです. 私が的外れである場合は、次にどこに行くべきかについての意見をいただければ幸いです。