DjangoCMS, используйте фрагменты вне шаблонов CMS - PullRequest
3 голосов
/ 27 июня 2011

Я пытаюсь использовать django-contact-form в django-cms.У django-contact-form есть одна или две страницы (показаны форма и благодарственное письмо), которые представлены шаблонами django

. В левой колонке этих шаблонов я хотел бы показать некоторую общую информацию освязавшись с нами, что должно быть редактируемым из CMS.

Теперь я полагаю, я мог бы где-нибудь использовать {% placeholder "contact_info" %}.Но на самом деле не существует понятия «контактная страница», поскольку об этом уже позаботится приложение contact_form, которое просто предоставляет шаблоны (без содержимого CMS)

Насколько я понимаю, мне нужносоздайте какую-то фальшивую контактную страницу и связанный шаблон, чтобы даже заставить это работать.

Я хочу сказать следующее: я хочу использовать редактируемый фрагмент текста (или любой другой, но в этом случаетекст), из шаблона.Как мне это сделать в Django-CMS?

Кстати, приведенная ниже ссылка указывает на то, что это возможно, но не так, как это возможно.

https://github.com/divio/django-cms/issues/491

Ответы [ 3 ]

3 голосов
/ 01 августа 2013

Я нашел хорошее решение в этой проблеме django-cms . Создайте тег шаблона, ala something/templatetags/show_snippet_tag.py:

# From https://github.com/divio/django-cms/issues/491

from cms.plugins.snippet.models import Snippet
from cms.plugins.snippet.cms_plugins import SnippetPlugin
from django import template

register = template.Library()

@register.simple_tag
def show_snippet(name):
    try:
        return SnippetPlugin().render(
            {},
            type('obj', (object,), {'snippet' : Snippet.objects.get(name = name)}),
            None
        )['content']
    except Snippet.DoesNotExist:
        return "[No snippet named '%s']" % name

А потом в вашем шаблоне

{% load show_snippet_tag %}
{% show_snippet "My Snippet Name" %}

Kaboom.

2 голосов
/ 27 июня 2011

Есть два способа сделать это в Django-CMS ...

Один из них - создать страницу Django-CMS и привязать к ней URL-адреса вашей django-контактной формы .

Другой способ - создать общую страницу cms, в которой отсутствует навигация с заполнителем, на который вы можете ссылаться по идентификатору в шаблонах приложения django-contact-form.

Надеюсь, это поможет вам.

0 голосов
/ 02 мая 2014

Другая мысль будет заключаться в том, что вместо фрагмента вы сможете более легко использовать «static_placeholder» - если вы используете новую DjangoCMS 3.x. Это дает дополнительное преимущество, заключающееся в том, что редакторы контента могут с легкостью получать доступ и редактировать контент на каждой странице, а не переходить к интерфейсу администратора и отдельно искать подходящее имя фрагмента. Это также позволит редактору использовать более дружественный интерфейс WYSIWYG (а не ручной код фрагмента) или даже добавить плагин форм, добавленный в пространство проекта.

Вы можете просмотреть краткие документы по ним здесь: http://django -cms.readthedocs.org / en / latest / advanced / templatetags.html # static-placeholder

...