django-cms:在模板中定义占位符而不自动显示它

时间:2014-02-24 21:35:16

标签: python django templates django-cms

我想创建一个包含一些内容的模板

{% 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" %} &#187;</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" %} &#187;</a>{% endif %}
    </div>
{% endif %}

这样预告片不会显示在使用该模板的页面中,但我可以使用

在其他页面中调用它
{% show_placeholder "teaser" other_page %} 
这似乎太复杂了。我没有办法在模板中定义占位符而不自动显示它吗?

0 个答案:

没有答案