【问题标题】:How do I add content before </body> in extended page? (KID templates)如何在扩展页面的 </body> 之前添加内容? (儿童模板)
【发布时间】:2010-01-04 12:37:12
【问题描述】:

我有 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>

还有 mypage.kid:

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

现在我希望可以在生成的 HTML 中的 &lt;/body&gt; 标记之前添加更多内容,特定于 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>

&lt;script&gt; 标签应在 mypage.kid 中指定。如果我必须将master.kid 修改为可选 支持&lt;/body&gt; 标记之前的附加内容也没关系,但是内容是什么必须在mypage.kid 中指定

起初,我认为在 master.kid 中的 &lt;/body&gt; 标记之前添加一个元素 py:match="item.tag == 'bodyend'" 会起作用。问题是它使用了 mypage.kid 中元素的位置,而不是执行py:match 的元素的位置。所以如果我在 mypage.kid 中将&lt;bodyend&gt; 标签放在&lt;/body&gt; 之前,它会在&lt;p id="footer"&gt; 之前导入,如果我把它放在&lt;/body&gt; 之下,它会一直留在那里。

如何设置 master.kid 和 mypage.kid 以支持在 &lt;/body&gt; 标记之前添加内容?

【问题讨论】:

    标签: python turbogears


    【解决方案1】:

    我发现的最佳解决方案如下:

    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>
      <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的变量,如果有这样的变量,就会调用它,替换&lt;/body&gt;之前元素的内容(否则什么都不输出)。

    任何需要在&lt;/body&gt; 之前输出内容的页面都将使用py:def="body_end()" 定义body_end 函数。 py:strip="True" 用于移除包装 &lt;div&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      相关资源
      最近更新 更多