21S*_*21S 8 html python django django-cms
我用:
我想检查我的占位符是否为空.
<div>
{% placeholder "my_placeholder" or %}
{% endplaceholder %}
</div>
Run Code Online (Sandbox Code Playgroud)
如果占位符为空,我不希望创建占位符之间的html.
{% if placeholder "my_placeholder" %}
<div>
{% placeholder "my_placeholder" or %}
{% endplaceholder %}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
Tim*_*ony 17
目前在django-cms中没有内置的方法来执行此操作,因此您必须编写自定义模板标记.django-cms
谷歌集团对此有一些陈旧的讨论:
根据第一次讨论中的代码,我将以下要点放在一起:
我这样使用它:
{% load extra_cms_tags %}
{% get_placeholder "My Placeholder" as my_placeholder %}
{% if my_placeholder %}
<div>
{{ my_placeholder }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
如果您希望在占位符为空的情况下显示附加内容,请使用or
参数和附加{% endplaceholder %}
结束标记。如果占位符没有插件或插件不生成任何输出{% placeholder "..." or %}
,{% endplaceholder %}
则呈现和之间的所有内容。
例子:
{% placeholder "content" or %}
There is no content.
{% endplaceholder %}
Run Code Online (Sandbox Code Playgroud)
这是一个非常紧凑的解决方案。
模板过滤器:
@register.filter('placeholder_is_empty')
def placeholder_is_empty(request, slot):
page = request.current_page
placeholder = page.placeholders.get(slot=slot)
return placeholder.cmsplugin_set.exists()
Run Code Online (Sandbox Code Playgroud)
模板中的用法:
{% if request|placeholder_is_empty:'myplaceholder' %}
<h1>Here comes some content... </h1>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3149 次 |
最近记录: |