2016-03-29 14 views
3

フォルダがある場合は、表示をコンテンツアイテムに変更し、ページをデフォルトビューとして選択し、フォルダオブジェクトのメソッドcontext.absolute_url_path()を使用します。これは間違っています。デフォルトのビューセットでフォルダのabsolute_url_pathを取得するにはどうすればよいですか?

context.absolute_url_path() 

それは

/私のフォルダ/私のデフォルト・ページ・オブジェクトを返しますのabsolute_url_path:フォルダとするとき、このメソッドが呼び出されるの文脈に

フォルダのコンテキストは、/my-folderを返すだけです。

デフォルトページが設定されているときのオブジェクトの実際のパスを取得する方法はありますか?

追加メモ: 私はパスからcontext.getDefaultPageを()引くしようとした、問題は(ルート別名)PloneサイトのオブジェクトにgetDefaultPageあるデフォルトので、意味をなさないNoneを返しません保ちますページが設定されます。私は、すぐに使えるページの器用さのオブジェクトとカスタムの器用さのオブジェクトを使って確認しました。ではない、それはフォルダを含むだ - 私はあなたが記述している場合、Ploneの5

答えて

7

を実行している

、コンテキストはデフォルトのページオブジェクトです。あなたは、そのオブジェクトがデフォルトビューでない限り、現在のオブジェクトである "正規の"オブジェクトのurlパスが必要です。デフォルトのビューの場合は、それを含むフォルダです。

context_state = getMultiAdapter((context, request), name=u'plone_context_state') 
canonical_object = context_state.canonical_object() 
canonical_url_path = canonical_object.absolute_url_path() 

ページ・テンプレートで作業している場合、それは次のようになります:

context/@@plone_context_state/canonical_object/absolute_url_path 

そして、もし、正規のオブジェクトのURLパスを取得plone_context_stateビューを使用するには

パスコンポーネントだけでなく、URLの後ろにあるので、absolute_url_pathではなくabsolute_urlを使用してください。

関連する問題