2008/08/13
ZPTからDTMLドキュメントを呼び出すには
by
Papasan
—
posted at
2008-08-13 18:08
last modified
2008-08-13 18:49
ZPT(Zopeのページテンプレート)はタグ内< 〜 > に記述します。
一方、DTML(Zopeの昔のテンプレート)は、どこでも記述できます。このどこでも というのがいいですねえ。
例えばJavaScriptの中だってOKです、<dtml-...> 〜 </dtml-...> というのがDTMLの記述です。:
<script type="text/javascript">
// ページ表示時の初期処理
// InputDraw(Viewer(サムネイル))オブジェクトの生成
var view<dtml-var number> = new InputDraw("inputdraw.swf", "viewer<dtml-var number>", {
src: '<dtml-var url>/pe_get_entry_svg',
width: '<dtml-var viewer_width>',
height: '<dtml-var viewer_height>',
animation: "120",
background_image: '<dtml-if background_image_url><dtml-var "REQUEST.URL3">/<dtml-var background_image_url></dtml-if>'
});
</script>
勿論、HTMLの中だって。:
<a href="<dtml-var url>" target="_blank" title="<dtml-var title>を表示" alt="<dtml-var title>を表示">
<div id="entry_container" style="margin: 5px; float:left; text-align: center; width:150px; height:180px; border: 1px solid #efefef; cursol: pointer;">
<div id="title" style="width: 148px; height: 1.2em; overflow: hidden;"><dtml-var title></div>
<div id="viewer<dtml-var number>"></div>
</div>
</a>
私は、昔の人間なので昔のページテンプレートをよくつかいます(単に新しいものが覚えられないだけですが)。
前置きが長くなりましたが、今回ZPTからDTMLドキュメントを呼出し、パラメータを渡してみました。以外と簡単にできちゃいます。
- ZPT(
pe_entries_view):<!-- DTML pe_entry call --> <tal:recent_entries repeat="entry_obj here/pe_get_recent_entries"> <div tal:define="entry_number repeat/entry_obj/number; ZPTのtal:defineでDTMLドキュメントに渡すパラメータを定義しています。 entry_url python:entry_obj.absolute_url(); entry_title python:entry_obj.title; canvas_width python:entry_obj.canvas_width; canvas_height python:entry_obj.canvas_height; canvas_width_height python:context.pe_get_width_height(148, canvas_width, canvas_height); entry_viewer_width python:canvas_width_height[0]; entry_viewer_height python:canvas_width_height[1]; entry_background_image_url python:entry_obj.background_image_url" ↓ tal:contentでpython:を呼び出すふりをしてDTMLドキュメントのpe_entryを呼び出します、()内はパラメータです。 tal:content="structure python:context.pe_entry(number=entry_number, url=entry_url, title=entry_title, viewer_width=entry_viewer_width, viewer_height=entry_viewer_height, background_image_url=entry_background_image_url)"> </div> </tal:recent_entries> - DTMLドキュメント(
pe_entry)DTMLドキュメントの中身はJavaScriptとHTMLが記述してあります。:
<script type="text/javascript"> // ページ表示時の初期処理 // InputDraw(Viewer(サムネイル))オブジェクトの生成 var view<dtml-var number> = new InputDraw("inputdraw.swf", "viewer<dtml-var number>", { src: '<dtml-var url>/pe_get_entry_svg', width: '<dtml-var viewer_width>', height: '<dtml-var viewer_height>', animation: "120", background_image: '<dtml-if background_image_url><dtml-var "REQUEST.URL3">/<dtml-var background_image_url></dtml-if>' }); </script> <a href="<dtml-var url>" target="_blank" title="<dtml-var title>を表示" alt="<dtml-var title>を表示"> <div id="entry_container" style="margin: 5px; float:left; text-align: center; width:150px; height:180px; border: 1px solid #efefef; cursol: pointer;"> <div id="title" style="width: 148px; height: 1.2em; overflow: hidden;"><dtml-var title></div> <div id="viewer<dtml-var number>"></div> </div> </a>
下手な鉄砲も数打てば、ときには当たりますです。
- Category(s)
-
Plone
-
お絵書きプロダクト(ATPapaDraw)
- The URL to Trackback this entry is:
- http://papasan.org/papablog/587/tbping
(トラックバック元のページには"Papasan"や"papasan"または言及リンクの記述が必要です。)