代码之家  ›  专栏  ›  技术社区  ›  Blixt

如何在扩展页面的</body>之前添加内容((儿童模板)

  •  1
  • Blixt  · 技术社区  · 15 年前

    我有master.kid(简体):

    <html>
    <head py:match="item.tag == 'head'">
      <title>My Site</title>
    </head>
    <body py:match="item.tag == 'body'">
      <h1>My Site</h1>
      <div py:replace="item[:]"></div>
      <p id="footer">Copyright Blixt 2010</p>
    </body>
    </html>
    

    <html>
    <head></head>
    <body>
      <p>Hello World!</p>
    </body>
    </html>
    

    现在,我希望它能够添加更多的内容之前的 </body> 标记,特定于mypage.kid。

    <html>
    <head>
      <title>My Site</title>
    </head>
    <body>
      <h1>My Site</h1>
      <p>Hello World!</p>
      <p id="footer">Copyright Blixt 2010</p>
      <script type="text/javascript">alert('Hello World!');</script>
    </body>
    </html>
    

    这个 <script> 标签应该在mypage.kid中指定。如果我必须修改master.kid为 在发布之前支持其他内容 </车身> 要在mypage.kid中指定。

    </车身> py:match="item.tag == 'bodyend'" py:match . 所以如果我把 <bodyend> </车身> 在mypage.kid中,它是在 <p id="footer"> </车身> 它将留在那里。

    如何设置master.kid和mypage.kid以支持在事件发生前立即添加内容 </车身> 标签?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Blixt    15 年前

    我找到的最佳解决方案如下:

    <html>
    <head py:match="item.tag == 'head'">
      <title>My Site</title>
    </head>
    <body py:match="item.tag == 'body'">
      <h1>My Site</h1>
      <div py:replace="item[:]"></div>
      <p id="footer">Copyright Blixt 2010</p>
      <div py:if="defined('body_end')" py:replace="body_end()"></div>
    </body>
    </html>
    

    mypage.kid:

    <html>
    <head></head>
    <body>
      <p>Hello World!</p>
      <div py:def="body_end()" py:strip="True">
        <script type="text/javascript">alert('Hello World!');</script>
      </div>
    </body>
    </html>
    

    master.kid页面检查定义为的变量 body_end ,如果存在这样一个变量,它将调用它,替换之前元素的内容 </body>

    之前需要输出内容的任何页面 </车身> 将定义 体尾 函数使用 py:def="body_end()" . 这个 py:strip="True" <div> .

    推荐文章