Django CMS - check if placeholder is empty

后端 未结 5 2006
遥遥无期
遥遥无期 2021-02-14 04:16

I use:

  • DjangoCMS 2.4
  • Django 1.5.1
  • Python 2.7.3

I would like to check if my placeholder is empty.

{
5条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-14 04:36

    Based on the great answer form @Philip Zedler, a solution that works for both placeholder on django-cms pages, but also on placeholders "outside of the cms".

    @register.filter()
    def placeholder_empty(page_placeholder, slot=None):
        """
        for page/slot, pass a page object, and a slot name:  
        {% if request.current_page|djangocms_misc_placeholder_empty:"content" %}
    
        for a outside page placeholder, just the placeholder object:
        {% if object.placeholderfield|djangocms_misc_placeholder_empty %}
    
        also, with:
        {% with ph_empty=object.placeholderfield|djangocms_misc_placeholder_empty %}
        """
        placeholder = None
        if isinstance(page_placeholder, Placeholder):
            placeholder = page_placeholder
        elif isinstance(page_placeholder, Page):
            page = page_placeholder
            try:
                placeholder = page.placeholders.get(slot=slot)
            except Placeholder.DoesNotExist:
                pass
        if placeholder:
            # // return not placeholder.cmsplugin_set.filter(language=get_language()).exists()
            return not placeholder.cmsplugin_set.exists()
        return False
    

    usage in template

    {% if request.current_page|placeholder_empty:'content' %}
        

    Fallback!

    {% endif %}

    It's in my djangocms-misc package

提交回复
热议问题