Personal tools
You are here: Home PapaBlog ZPTからDTMLドキュメントを呼び出すには
Document Actions

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>
    

下手な鉄砲も数打てば、ときには当たりますです。

http://papasan.org/papablog/587/tbping

スパム防止にご協力を!!