2016-08-15 12 views
1

"余分な" CSSをレンダリングするベーステンプレートの先頭にブロックがあります。このCSSは、Wagtail CMSインスタンスからのフィールドからカスタマイズされます。Wagtail/Djangoブロックは、カスタム/ネストされたStructBlockテンプレートからコンテンツを適切にレンダリングしません。

ので、base.htmlテンプレートに私が持っている:

<head> 
    {% block extra_css %}{% endblock %} 
</head> 
<body> 
    {% block content %}{% endblock %} 
</body> 

そして、基地のはみ出し私detail.htmlテンプレート、で、私が持っている:

{% block content %} 
    {% for block in page.body %} 
    {{ block }} 
    {% endfor %} 
{% endblock %} 

bodyはセキレイでStreamFieldです。言った分野の一つは、カスタムStructBlockでは、モデルがそのようにように設定されています

class CalloutBlock(blocks.StructBlock): 
    accent_color = blocks.CharBlock(required=False, label='Accent Color', help_text='HEX Value/Color') 
    class Meta: 
     template = 'inc/blocks/callout.inc.tpl' 

最後に、そのcallout.inc.tplテンプレートで、私はextra_cssに注入されるはずです<style>タグをレンダリングしようとしていますブロック:

{% block extra_css %} 
    <style> 
    .accent_color { 
     background-color: {{accent_color}} !important; 
    } 
    </style> 
{% endblock %} 

しかし、このブロックは私が期待したように<head>に注入されません。

<head> 
</head> 
<body> 
    <style> 
    .accent_color { 
     background-color: {{accent_color}} !important; 
    } 
    </style> 
</body> 

は、単にDjangoのテンプレートでの制限です:{% block extra_css %}タグが全くなかったかのように代わりに、それは、そうのように、体にレンダリング?問題をネストしていますか?それとも、私はモデルレベルでカスタムテンプレートを使用しているので、それは何とか親テンプレートの解析の範囲外ですか?

ジャンゴ:1.10
セキレイ:1.6

答えて

2

これはStreamFieldブロックのためのカスタムテンプレートの作業方法の制限です。 (ただし、{% block %}のメカニズムは{% extends %}ではなく、{% include %}であるが、Djangoテンプレートでも同様の制限がある)。ブロックのHTMLコンテンツは、外部ページテンプレートなので、2つの間で制御を渡す方法はありません。

(Wagtail 1.6は、外側のテンプレートのコンテキストからブロックテンプレートに変数を渡すことができるように状況を改善する{% include_block %} tagを導入していますが、しかし、)

関連する問題