2013-05-17 2 views
4

Я пытаюсь включить страницу, редактируемую через администратор мезанинов, на всех страницах моего сайта. Я прочитал документ Меццанинов и источник и не могу понять, как это сделать.Как включить страницу мезонина с заданным слизнем в базовый шаблон?

Из документов, я думал, что я мог бы передать мою страницу в качестве дополнительного контекста, что-то вроде:

mezzanine.pages.views.page(request, slug, template=u'pages/page.html', extra_context={'mypage':<get_page_by_its_slug>}) 

Но доктор говорит, что дополнительный контекст является mezzanine.pages.middleware.PageMiddleware объект, который устанавливает пробой из запроса.

Должен ли я написать процессор контекста для этого? Как загрузить определенную страницу своим пулемётом?

ответ

7

Только в случае, если это поможет кому-то там, я создал контекст процессор, чтобы решить эту проблему:

# context_processors.py 
from mezzanine.pages.models import Page 

def featured(request): 
    # editable page, get by ID or slug or title... 
    featured_page = Page.objects.get(id=49) 
    return {'featured_page': featured_page} 

добавил контекстный процессор в мой settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth", 
    ## ...etc..., 
    "myapp.context_processors.featured", 
) 

и включены признаки содержание в шаблоне base.html:

{% block right_panel %} 
<div> 
    {% editable featured_page.richtextpage.content %} 
     {{ featured_page.richtextpage.content|richtext_filter|safe }} 
     {% endeditable %} 
</div> 
{% endblock %} 

Если вы знаете более простой способ d o это, я хотел бы услышать ваше решение!

+0

Это помогло кому-то здесь, спасибо, что разместили его! – Jake

+1

В этом случае, хотя это работает, это означает, что объект featured_page присутствует на * любой странице, которая в зависимости от того, насколько большой может быть этот объект, может создать некоторые накладные расходы. – Rexford