2013-10-10 2 views
0

Я создал простой тег шаблона для отображения дочерних страниц на сайте django-cms. Он отлично работает, за исключением того факта, что я не смог отобразить тег-листы дочерних страниц в самом теге шаблона.Как сделать placeholders из django-cms custom templatetag?

Следующий мой код для тега шаблона.

subpages.py

from cms.models import Page 
from cms.utils.page_resolver import get_page_from_path 

from django import template 


register = template.Library() 


@register.inclusion_tag('subpages.html', takes_context = True) 
def get_news_items(context): 
    request = context['request'] 
    subpages = request.current_page.children.filter(published=True) 
    return {'subpages':subpages} 

subpages.html

{% load cms_tags menu_tags placeholder_tags %} 
<ul> 
{% for item in subpages %} 
    <li><a href="/{{ item.get_path }}">{{ item.get_title }}</a> 
     {% render_placeholder subtitle %} 
    </li> 
{% endfor %} 
</ul> 

Я попробовал несколько альтернатив * render_placeholder *, но без удачи.

Каким будет правильный способ получения закладок?

+0

{% render_placeholder [заполнитель]%} рассчитывает получить экземпляр шаблонного. Я предполагаю, что 'subtitle' не правильный тип. – Brandon

+0

Подзаголовок: как мой заполнитель указан на дочерней странице, что вы подразумеваете под правильным типом? В моем шаблоне для страницы у меня есть: {% placeholder subtitle%}, и он работает. –

+0

Насколько я знаю, вы не можете отобразить местозаполнитель по имени, вы должны передать '{% render_placeholder%}' экземпляр-заполнитель, как поле заполнителя на модели. См.: Http://docs.django-cms.org/en/2.4.2/extending_cms/placeholders.html#templates – Brandon

ответ

0

Это только (непроверенное) предложение, но попробуйте передать контекст по шаблону:

@register.inclusion_tag('subpages.html', takes_context = True) 
def get_news_items(context): 
    request = context['request'] 
    subpages = request.current_page.children.filter(published=True) 
    context.update({'subpages':subpages}) 
    return context 
+0

Спасибо за предложение, но я его протестировал и, похоже, не работает. –

+0

Есть ли способ разместить тег templatetag, подобный этому: {% placeholder "субтитр"%} в шаблоне пользовательского шаблона шаблона и рендеринг и безопасные плагины правильно? – cwirz

Смежные вопросы