1

コンテキスト:特定のデータをレンダリングする外部ビューを提供するために、現在のポートレットにトラバースするURLを作成したいと思います。

実際の使用例:ビデオキャプションを取得するためのパラメーターとしてURLを待機するビデオプレーヤーを実行しています。キャプションはschema.Textフィールドに保存されます。したがって、目標は、これらのデータを表示するためのビューを作成することです。何かのようなもの:

  /++contextportlets++plone.rightcolumn/test-video/@@video_captions

だから私はPythonコードレンダラーにいて、そこからそのURLを構築したいと思います。(自己はレンダラーです)必要なもの:

  • コンテキスト、タイプ、グループ内のポートレットの種類
  • マネージャー名(self.manager。nameが仕事をします)
  • ポートレットID(self.data.idがジョブを実行します)

したがって、問題は、レンダラーからある種のポートレットを取得するにはどうすればよいかということです。

4

1 に答える 1

1

ポートレット カテゴリは、ポートレット リトリーバーからのみ使用できます。getPortletsレトリバーのメソッドをループすることで調べることができます。.dataメソッドが返す情報は割り当てを処理するため、正しいエントリを選択するには、(レンダラーで) ポートレットの割り当てが必要になります。

from zope.component import getMultiAdapter
from plone.portlets.interfaces import IPortletRetriever

# This assumes you have the portlet context and manager as attributes of self,
# like in the renderer:
retriever = getMultiAdapter((self.context, self.manager), IPortletRetriever)
for info in retriever.getPortlets():
     if info['assignment'] is self.data:
          return info['category']
于 2012-06-26T16:32:21.573 に答える