كيف يمكنني إضافة محتوى قبل في الصفحة الموسعة؟ (قوالب الأطفال)

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>

الآن أريد أن يكون من الممكن إضافة المزيد من المحتوى قبل </body> علامة في HTML الناتجة ، خاصة بـ 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 إلى اختياريا دعم محتوى إضافي قبل </body> علامة ، ولكن ما هو المحتوى لديها ليتم تحديدها في mypage.kid.

في البداية كنت أحسب إضافة عنصر قبل </body> علامة في Master.kid مع py:match="item.tag == 'bodyend'" ستعمل. المشكلة هي أنه يستخدم موضع العنصر في mypage.kid ، وليس موضع العنصر py:match. لذلك إذا وضعت <bodyend> علامة من قبل </body> في mypage.kid ، يتم استيراده من قبل <p id="footer">, ، وإذا وضعته أدناه </body> سوف تبقى هناك.

كيف يمكنني إعداد Master.kid و mypage.kid لدعم إضافة المحتوى مباشرة قبل </body> بطاقة شعار؟

هل كانت مفيدة؟

المحلول

أفضل الحلول التي وجدتها هي ما يلي:

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, ، وإذا كان هناك مثل هذا المتغير ، فسوف يسميه ، واستبدال محتويات العنصر من قبل </body> (وإلا فلن يخرج أي شيء).

أي صفحة تحتاج إلى إخراج المحتوى من قبل </body> سوف تحدد body_end وظيفة باستخدام py:def="body_end()". ال py:strip="True" هل هناك لإزالة الغلاف <div>.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top