首页 > 解决方案 > 在 djangocms 模板中,如何使链接可从前端编辑?

问题描述

我正在阅读Divio Django CMS 教程。有一次,模板中提供了一个静态链接:

            <a href="#">
              <span class="fa-stack fa-lg">
                <i class="fas fa-circle fa-stack-2x"></i>
                <i class="fab fa-github fa-stack-1x fa-inverse"></i>
              </span>
            </a>

(base.html),我想从 CMS 前端编辑此链接。所以我正在尝试类似的东西:

            {% placeholder "githublink" %}
            <a href="#">
              <span class="fa-stack fa-lg">
                <i class="fas fa-circle fa-stack-2x"></i>
                <i class="fab fa-github fa-stack-1x fa-inverse"></i>
              </span>
            </a>
            {% endplaceholder %}

并在前端添加一个链接插件,但我不断收到模板语法错误。

标签: jinja2django-cms

解决方案


如果您使用的是静态占位符,您的第二种方法将起作用。它们最适合网站页眉/页脚,并允许您在所有模板中包含相同的标记,当在一个地方编辑时,将在包含占位符的任何地方显示内容。您可以在开始和结束标记之间指定默认内容,类似于您在此处所做的。

但是,根据您的要求,我认为自定义模板和djangocms_link插件效果最好。所以你可能只是包含{% placeholder "links" %}在一个模板中。这会呈现一个占位符,您可以向其中添加链接插件。

然后,您可以包含一个自定义模板,以使用您自己的标记呈现您的链接,并在创建插件时指定该模板。创建模板;

templates/djangocms_link/fa-markup/link.html

        <a href="{{ link }}"{% if instance.target %} target="{{ instance.target }}"{% endif %}>
          <span class="fa-stack fa-lg">
            <i class="fas fa-circle fa-stack-2x"></i>
            <i class="fab fa-github fa-stack-1x fa-inverse"></i>
          </span>
        </a>

然后将模板添加到您的设置中;

DJANGOCMS_LINK_TEMPLATES = [
    ('fa-markup', _('Font Awesome Version')),
]

推荐阅读