我想创建一个包含一些内容的模板
{% placeholder content %}
加上我希望在其他页面上显示的某些“预告片”内容,但不会在使用此特定模板的页面上显示。显然,显示内容的页面不需要预告片。
我正在使用cmsplugin_filer,我发现的解决方案似乎太复杂了:
在我的模板中,我按照以下方式定义了预告片占位符:
{% with skipteaser=True %}
{% placeholder teaser %}
{% endwith %}
然后覆盖cmsplugin_filer模板,如下所示:
而不是
<div{% if instance.style %} class="{{ instance.style }}"{% endif %}>
<h2>{{ instance.title }}</h2>
{% if instance.image or instance.image_url %}
{% if link %}<a href="{{ link }}"{% if obj.target_blank %} target="_blank"{% endif %}>{% endif %}
{% if instance.image_url %}
<img alt="{% if instance.alt %}{{ instance.alt }}{% endif %}" src="{{ instance.image_url }}"{% if instance.width or instance.height %} style="{% if instance.width %}width:{{ instance.width }}px;{% endif %}{% if instance.height %}height:{{ instance.height }}px;{% endif %}"{% endif %} />
{% else %}
{% thumbnail instance.image size crop upscale subject_location=opts.subject_location as thumbnail %}
<img alt="{% if instance.alt %}{{ instance.alt }}{% endif %}" src="{{ thumbnail.url }}" />
{% endif %}
{% if link %}</a>{% endif %}
{% endif %}
{% if instance.description %}
<p>{{ instance.description }}</p>
{% endif %}
{% if link %}<a href="{{ link }}"{% if obj.target_blank %} target="_blank"{% endif %}>{% trans "more" %} »</a>{% endif %}
</div>
我用:
{% if skipteaser %}
{% else %}
<div{% if instance.style %} class="{{ instance.style }}"{% endif %}>
<h2>{{ instance.title }}</h2>
{% if instance.image or instance.image_url %}
{% if link %}<a href="{{ link }}"{% if obj.target_blank %} target="_blank"{% endif %}>{% endif %}
{% if instance.image_url %}
<img alt="{% if instance.alt %}{{ instance.alt }}{% endif %}" src="{{ instance.image_url }}"{% if instance.width or instance.height %} style="{% if instance.width %}width:{{ instance.width }}px;{% endif %}{% if instance.height %}height:{{ instance.height }}px;{% endif %}"{% endif %} />
{% else %}
{% thumbnail instance.image size crop upscale subject_location=opts.subject_location as thumbnail %}
<img alt="{% if instance.alt %}{{ instance.alt }}{% endif %}" src="{{ thumbnail.url }}" />
{% endif %}
{% if link %}</a>{% endif %}
{% endif %}
{% if instance.description %}
<p>{{ instance.description }}</p>
{% endif %}
{% if link %}<a href="{{ link }}"{% if obj.target_blank %} target="_blank"{% endif %}>{% trans "more" %} »</a>{% endif %}
</div>
{% endif %}
这样预告片不会显示在使用该模板的页面中,但我可以使用
在其他页面中调用它{% show_placeholder "teaser" other_page %}
这似乎太复杂了。我没有办法在模板中定义占位符而不自动显示它吗?