質問

使用届けできGedminasの 優れたブログ, 私が作成したカスタムトラバーサのためのフォルダで私のサイトです。

このできたら人に教わりたいなと思い: http://foo.com/folder/random_id

代わりに: http://foo.com/folder/object.html?id=random_id

設定の側面に、できるrandom_ids検索を通してメッセージの正しいもので、表示されます。

私の問題としているところに迷ったらどのようにその表示のデータをいつものページにテンプレートのTODO点に独自のコード)

if name == 'mycalendar':
            mycalendar = ... # TODO: do something to get the appropriate object
            return mycalendar

通常はん用のようなもの:

class Test(BrowserPage):

    template = ViewPageTemplateFile('atest.pt')

    def __call__(self):
        return self.template()

もんどこで正常にコンテキストのカスタムトラバーサルをサポートします。


更新:を明らかにしたい 回避 加えば、url(No: http://foo.com/folder/random_id/read).

I 必要にアクセス可能その他のアドレスNo: http://foo.com/folder/read)

のZCMLのリスナーをアンインストールをお使いのは:

<browser:page
  for="foo.interfaces.IFooFolderContainer"
  name="read"
  template="read.pt"
  permission="zope.ManageContent"
/>

私の推測(さらなる助言うには:

return getMultiAdapter((mycalendar, self.request), IPageTemplate, name=u'read')

でもデフォルトのビューのためのオブジェクトタイプ(dictこの場合)ことになって返される:

<browser:page
  for="dict"
  name="read"
  template="read.pt"
  permission="zope.ManageContent"
/>
役に立ちましたか?

解決

できやすくお答えましたかカスタムトラバーサしています。

というようになります:

def publishTraverse(self, request, name):
    if name in self.context:
        return MyMessageView(self.context[name], request)

    # fall back to views such as index.html
    view = queryMultiAdapter((self.context, request), name=name)
    if view is not None:
        return view

    # give up and return a 404 Not Found error page
    raise NotFound(self.context, name, request)

がMyMessageViewできるなど簡単なもの

class MyMessageView(BrowserPage):
    __call__ = ViewPageTemplateFile('read.pt')

免責事項:んしてお使いいただく場合には、ビューのインスタンスを生成直接保護システムでは,セキュリティパ;かつ機能試験を匿名で利用できないビューのメッセージの場合ことになると考えている。

他のヒント

場合、適切なオブジェクトをカスタムトラバーサできるため、タックのテンプレート名とユーザコンテキストこのテンプレートを作成します。なので http://foo.com/folder/random_id/my_template のテンプレートの通常の <h1 tal:content="context/title" /> ます。

IIUCしたいものは描画のための読み"表示があり、ご要望のフォルダ//random_id.本場はございますのでご注意下さい必要なのは、作成したフォーカストラバーサルを返しオブジェクト(IFolderContentか)を表すrandom_idを指定して"表示"のページのdefaultViewのためのIFolderContent.

のdefaultViewは必要ありがとうございます。眺望指定なしのrandom_idオブジェクトだ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top