2011-05-30 11 views
4

私はcollective.examples.userdataの後にいくつかのカスタムフィールドを登録フォームに追加します。@@個人情報ビューのカスタムフィールドを非表示にする

1つのフィールドは、ceuserdataにも書類があり、package description(または少なくとも私はその方法を理解していました)のように、「Accept Terms」フィールドは@@個人情報ビューには表示されません。

新しく作成したPloneサイトで私のbuildoutにc.e.userdataを追加しようとしましたが、@@ personal-informationにも表示されていますので、誤解されているのか、それともバグがあるのか​​疑問です。

誰でも@@登録フォームにフィールドを表示する方法は知っていますが、@@個人情報には表示されません。

答えて

7

@@personal-informationフォームのフィールドを非表示にして、@@registerフォームに表示するだけですぐに使用できます。逆も同様です。

これを達成するには、どちらか一方のフォームをカスタマイズする必要があります。 plone.app.users.browser.personalpreferences.UserDataPanelをカスタマイズしてフィールドを削除するか、plone.app.users.browser.register.RegistrationFormの新しいバージョンを用意してフィールドを追加してください。ここで

は、私はそれを行うだろう方法は次のとおりです。.omit('acceptTerms')

plone.app.users.browser.personalpreferences import UserDataPanel 

class CustomizedUserDataPanel(UserDataPanel): 
    def __init__(self, context, request): 
     super(CustomizedUserDataPanel, self).__init__(context, request) 
     self.form_fields = self.form_fields.omit('acceptTerms') 

注意が、私はあなたの余分なフィールドの名前を推測しなければなりませんでした。このカスタムパネルをZCMLでテーマブラウザレイヤーに登録するか、Ploneサイトまたはカスタムインターフェイスに直接登録することができます。ここで私は簡単な方法を取ると、Ploneサイトのオブジェクトのためにそれを登録します。

<browser:page 
    for="Products.CMFPlone.Portal.PloneSite" 
    name="personal-information" 
    class=".mymodule.CustomizedUserDataPanel" 
    permission="cmf.SetOwnProperties" 
    /> 

、この特定のクラスが変更されていないので、これは、Ploneの4.0と4.1の両方のために働く必要があります。

+0

ありがとう、それは完全に働いた!おそらく、collective.examples.userdataを更新して、同じことをするのは理にかなっているでしょう。 – gforcada

関連する問題