2017-10-02 17 views
1

単純なArchetypesベースのコンテンツタイプ(これはTTWを追加できなかったのと同じですが、my previous questionを参照)を含むPlone拡張機能があります。プロジェクトの設定はon GitHubです。My Archetypesベースのコンテンツタイプを表示できません

オブジェクトを追加した後、私はplone.abovecontenttitleコンテンツプロバイダの実行中にKeyError: 'view'を得る:

{'container': <MyType at /plone/test-for-new-types/a-mytype-object>, 
'context': <MyType at /plone/test-for-new-types/a-mytype-object>, 
'default': <object object at 0x7fc4f8ebe520>, 
'here': <MyType at /plone/test-for-new-types/a-mytype-object>, 
'loop': {}, 
'nothing': None, 
'options': {'args':()}, 
'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x7fc4c9484db8>, 
'request': <HTTPRequest, URL=https://my.testing.site/test-for-new-types/a-mytype-object/mytype_view>, 
'root': <Application at >, 
'template': <FSPageTemplate at /plone/test-for-new-types/a-mytype-object/mytype_view>, 
'traverse_subpath': [], 
'user': <PloneUser 'me'>} 

それはdevelopモードでインストール私の小さな拡張機能で簡単に再現可能でなければなりません。

編集:私は "インストール済み製品" ビュー(/portal_quickinstaller/MyCompany.MyProduct/manage_installationInfo)で、私の製品はStatus: installedTypes MyTypeを持っていますが、Content Type Registry entriesは(None)空である、ということに気づい

+1

ない再現可能、 "はAttributeError:@@変換" を取得したビュー・テンプレートの導出、。 –

+0

申し訳ありません、お試しいただきありがとうございます。私は '変形 '部分を削除しました。 – Tobias

+0

@Ida: 'default_'と' immediate_view'プロパティを 'base_view'に変更しました。今私のタイプはそのように見ることができます。理由を理解していない(まだ存在する) 'mytype_view'を使用しているときに、私はまだ' 'view'' KeyErrorを取得します。おそらくそれはコンテンツプロバイダに関連しているでしょうか? (私はこれが再現可能であることを願っています) – Tobias

答えて

2

コンテンツプロバイダは、view - 引数が存在することを前提としており、スキンベースのテンプレートはブラウザベースのテンプレートと矛盾しています。 それを修正するには、我々はグローバル@@plone -var [2]それは@@ploneBrowserViewのインスタンスであるので、それはビューの引数を提供、main_templateで行われているように使用することができます。

tal:define="view context/@@plone;" 

私は、考えさせますコンテンツプロバイダーが使用しているアダプターは、ビューが利用できない場合を考慮する必要があります。

あなたはいつものサイト構造を持っているだけのコンテンツ部分をカスタマイズしたい場合は、あなたはまた、ビュー-VARまた、main_templateからすべてが継承され、その後、コンテンツスロットにあなたのテンプレートを埋めることができます:

<metal:main metal:use-macro="context/main_template/macros/master"> 
    <metal:content fill-slot="content"> 
    Hey, a working content-provider: 
    <div tal:replace="structure provider:plone.abovecontenttitle" /> 
    Oh, so much more much, here... 
    </metal:content> 
</metal:main> 

私はお勧めします。ヘッダー部分ですべてを正しく行うことについて心配する必要はないからです。例えば。アイテムのワークフロー状態がそれを処理しており、現在の言語が評価されるなどの理由で、「raiseAnon」を使用する必要はありません。

コンテンツのボディ部分のみをカスタマイズする場合は-item、contentからcontent-coreに変更すると、通常のコンテンツプロバイダがレンダリングされます。通常の順序で使用する場合は、挿入する必要はありません。

[1] https://docs.plone.org/4/en/old-reference-manuals/portlets/rendered.html

を[2] https://github.com/plone/Products.CMFPlone/blob/master/Products/CMFPlone/browser/ploneview.py

+0

ありがとう!私は可能な限り最小限の解決策をGibHubレポに押し込んだ。 – Tobias

関連する問題