2017-01-19 6 views
3

私はfolderish器用のコンテンツタイプを持っており、私はイベント加入者を持っています。コンテンツタイプが作成されると、いくつかのパラメータに従ってコンテナ内の子を表示するCollectionを作成します。コレクションが作成された後、私はコンテナのデフォルトページをコレクションに設定しようとします。 configure.zcmlPlone - イベントサブスクライバのデフォルトページを設定するにはどうしたらいいですか?

残念ながら
<subscriber 
    for="my.product.my_container.IMyContainer 
     zope.lifecycleevent.interfaces.IObjectAddedEvent" 
    handler=".events.myContainerAdded" /> 

def myContainerAdded(my_container, event): 
    #get container 
    #set advanced query for collection 
    #create collection with api.create 
    my_container.setDefaultPage(new_collection.id) 

加入者は、デフォルトのページが完全に設定されていません。コンテナページが表示されますが、コレクションは[表示]ドロップダウンで選択されています。 「既定のビューとしてコンテンツアイテムを変更する」をクリックしてコレクションを選択すると、既定のページがコレクションに変更されます。

以前、私は "setuphandler"を使ってフォルダ構造を設定しました(addイベントではなく)、setDefaultPageは動作していました。私はイベントを通してこれを試みているので、私はステップを忘れていますか?

私はplone.4.3を使用しています。

編集:私も試してみました:

my_container.default_page = new_collection.id 

編集: 私は何か面白いものを見つけました。私はイベント加入者のコレクションに関連するコードを一時的にコメントアウトしました。私は手動でコンテナオブジェクトにコレクションを追加し、コンテナのデフォルトページをコレクションに設定しました。コンテナのデフォルトページはコレクションでした。

何かがインデックスに登録されていない可能性がありますか?

答えて

3

実際にすべてがうまくいったのは、敏捷性ベースのコンテンツタイプを作成した後で、デフォルトビューのURLに上書きされます。つまり、アイテムのURLに「/ view」というエイリアスが追加されますdefault-view-methodはここでは「folder_listing」テンプレートに解決されます。すぐにこれを克服するために

、あなたはURLに付加任意のビュー名を指定せずに、加入者の方法では、オブジェクトのURLにリダイレクトを追加することができます。

event.REQUEST.RESPONSE.redirect(my_container.absolute_url()) 
+0

とき、私は/ビュー部分を気づいたはずですオブジェクトが最初に作成されました。実際には、ナビゲーションも正しいページを指していました。 あなたが投稿したソリューションをありがとう。それは有り難いです。 –

+0

それを認識するのにも私は1〜2時間かかりました。バグでもあります。質問していただきありがとうございます。私は関連することに取り組んでおり、適切なタイミングで適切なアイデアが得られました:-)あなたが探していると感じたら、バグレポートが既に存在するか報告したら、チケットへのリンクを残してください(GitHubの問題)、ここに。あなたは月曜日の資金を欲しいと思っています! –

関連する問題