2

コンテナーおよび非コンテナーの Dexterity コンテンツ タイプを含む Dexterity 製品を作成しました。collective.documentviewer を発見したので (やった! ありがとう! ハザー!)、その dvpdf-group-view を使用したいのですが、それは ZCML にフォルダー用として登録されており、私の Dexterity コンテナーは資格がありません。コンテナー タイプで使用可能な Web インターフェイスを調べて、SiteRoot を追加し、ビューを適用できるようにしましたが、これも完全に間違っています。

これを行う正しい方法があると確信しており、それがアダプター/インターフェースメカニズム全体の中心にあると確信していますが、どの本にも見つかりません。

説明を試してみたい人はいますか?まず、Dexterity コンテナーがフォルダーでもあるふりをできるようにする 1 つまたは 2 つの行。次に、Dexterity タイプの単一インスタンスのデフォルト ビューを変更して、外部コンポーネントのビューを表示する方法を教えてください。

ありがとう。

4

1 に答える 1

4

1.器用さのコンテナのビューも登録する

ビューは Archetypes フォルダー インターフェイスに登録されていますが ( Products.CMFCore.interfaces._content.IFolderish)、器用さのコンテナーはこのインターフェイスを提供していません (ただしplone.dexterity.interfaces.IDexterityContainer)。その理由は、製品および/またはビューが器用さに対応していない可能性があります。

IDexterityContainerとにかく、パッケージに小さな ZCML を入れて、インターフェイスにもビューを登録することで、自分で試すことができます ( Dexterity Developer Manualの「パッケージの作成」セクションconfigure.zcmlも参照してください)。

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser">

    <configure package="collective.documentviewer">

        <browser:page
            name="dvpdf-group-view"
            for="plone.dexterity.interfaces.IDexterityContainer"
            class=".views.GroupView"
            template="templates/group-view.pt"
            permission="zope2.View"
            layer=".interfaces.ILayer" />

    </configure>

</configure>

これ<browser:page>Collective.documentviewer configure.zcmlからコピーされたものですが、インターフェイスを dexterity コンテナー インターフェイスに変更しfor=て、ビューが dexterity コンテナーでも機能するようにしました。

内部<configure package="collective.documentviewer">は、configure.zcml が直接含まれているかのように構成を適用する必要があることを ZCML パーサーに伝えますcollective.documentviewer。これにより、たとえば元のテンプレートを使用できます (そうしないと、テンプレートをコピーするか、厄介なことを行う必要があります)。

私はそれを自分でテストしませんでした: ビューにはアーキタイプ コンテナーが必要であり、器用さコンテナーでは機能しない可能性があります。また、器用さのコンテナ用に documentviewer からさらに多くのコンポーネントを登録する必要がある場合もあります (おそらくメニュー?元の configure.zcmlに登録されているものを見てください。

すべてがうまく機能する場合は、githubの collective.documentviewer で直接変更を行うことを検討し、作成者にプルリクエストを行う必要があります (器用さはまだ plone-core ではないことに注意してください)。しかし、最初に、それを行うべきかどうか、またどのように行うべきかを尋ねてください:-)

2. デフォルト ビューの変更

plone を使用すると、特定のタイプに対して複数のビューを定義できます。ビューは、このタイプのインスタンスごとに表示メニューで選択できます。タイプを開いてクリックすると、別の行にビュー名 ( ) を追加できるhttp://localhost:8080/Plone/portal_types/manage_mainフィールドがあります。Available view methodsdvpdf-group-view

あなたのタイプの新しいオブジェクトを作成するか、既存のオブジェクトにアクセスすると、ビューを一覧表示する「表示」メニューが表示されます。それを選択すると、このオブジェクトはデフォルトでこのビューを持ちます。

(このタイプの他のオブジェクトでビューを選択できないようにする場合は、タイプ構成からビューを削除して、選択できないようにすることができます。オブジェクトの既存の構成は残ります)。

于 2013-01-03T19:09:52.810 に答える