ビューレットの問題をオーバーライドすることに直面することがよくありますが、それが機能するかどうかがわからないことがよくあります。
私は現在、browserlayer を使用しているが plone.app.layout.viewlets.common.BaseViewlet から継承していない Collective.googleanalytics トラッカー ビューレットをオーバーライドしようとしています。
これを達成するために、c.googleanalytics から継承する browserlayer を作成し、登録して、すべてがうまくいくことを確認しました。
私の代わりに c.googleanalytics ビューレットが使用される理由はまだわかりません。
コードはこちら: https://github.com/toutpt/collective.linguaanalytics
これをデバッグするために PDB を追加できる場所を知りたいです。またはどのツールが役立つか。
編集:
(Pdb) self.request.__provides__.__iro__
InterfaceClass plonetheme.sunburst.browser.interfaces.IThemeSpecific>,
InterfaceClass plone.app.z3cform.interfaces.IPloneFormLayer>,
InterfaceClass z3c.form.interfaces.IFormLayer>,
InterfaceClass plone.app.discussion.interfaces.IDiscussionLayer>,
InterfaceClass collective.linguaanalytics.interfaces.ILayer>,
InterfaceClass collective.googleanalytics.interfaces.browserlayer.IAnalyticsLayer>, InterfaceClass plone.theme.interfaces.IDefaultPloneLayer>,
InterfaceClass Products.CMFDefault.interfaces.ICMFDefaultSkin>,
InterfaceClass zope.publisher.interfaces.browser.IDefaultBrowserLayer>,
InterfaceClass zope.publisher.interfaces.browser.IBrowserRequest>,
InterfaceClass zope.publisher.interfaces.http.IHTTPRequest>,
InterfaceClass zope.publisher.interfaces.IRequest>,
InterfaceClass zope.publisher.interfaces.IPublisherRequest>,
InterfaceClass zope.publisher.interfaces.IPublicationRequest>,
InterfaceClass zope.security.interfaces.IParticipation>,
InterfaceClass zope.publisher.interfaces.IApplicationRequest>,
InterfaceClass zope.interface.common.mapping.IEnumerableMapping>,
InterfaceClass zope.interface.common.mapping.IReadMapping>,
InterfaceClass zope.interface.common.mapping.IItemMapping>,
InterfaceClass zope.publisher.interfaces.ISkinnable>,
InterfaceClass zope.annotation.interfaces.IAttributeAnnotatable>,
InterfaceClass zope.annotation.interfaces.IAnnotatable>,
InterfaceClass zope.interface.Interface>)
編集:plone.browserlayerの他のレイヤーによるレイヤーのオーバーライドに関するテストではないようです。バグかもしれませんか?