どのように私は、拡張ページのの前にコンテンツを追加できますか? (KIDテンプレート)

StackOverflow https://stackoverflow.com/questions/1999300

  •  22-09-2019
  •  | 
  •  

質問

私が持っている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、mypage.kidに固有で</body>タグの前に、より多くのコンテンツを追加することが可能になりたい。

基本的に結果は何か、このする必要があります

<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変更する必要があれば</body>タグの前に追加のコンテンツをサポートして大丈夫ですが、どのようなコンテンツががmypage.kidで指定するを持っています。

働くだろう</body>とmaster.kidでpy:match="item.tag == 'bodyend'"タグの前に要素を追加することを考え出した最初のIで

。問題は、それがmypage.kid内の要素の位置、およびないpy:matchをやっ要素の位置を使用していることです。私はmypage.kidに<bodyend></body>タグを置くのであれば、それは<p id="footer">前にインポートされ、私は</body>の下にそれを置く場合には、そこに滞在されます。

どのように私はmaster.kidを設定し、</body>タグの直前にコンテンツの追加をサポートするためにmypage.kidのですか?

役に立ちましたか?

解決

私が見つけた最良の解決策は以下の通りである:

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>

body_endとして定義変数のmaster.kidページをチェックし、そのようなAの変数が存在する場合、それは(それ以外の場合は、出力何であろう)</body>前要素の内容を置き換え、それを呼び出します。

</body>前に出力内容する必要があるすべてのページがbody_endを使用してpy:def="body_end()"関数を定義します。 py:strip="True"はラッピング<div>を削除することがあります。

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