简体   繁体   中英

Using placeholder tags in non-django CMS pages

In the Django CMS there's the {% placeholder 'content' %} . I tried to use it on a non-django-cms page, ie, a detail-view page that comes from an apphook. However, when I switch to the structure view in the detail-view page and the placeholder does not seem to reflect. Is that's how it's supposed to work or is there a problem with my code? If it's how it's supposed to work is there a way to make placeholder appear in the page?

You can't use {% placeholder outside of CMS pages.

If you're on one of these pages, you can use a static placeholder. These will show the same content on any page where a static placeholder with the same name exists. So a good example of these is a footer, or header where you'd want it to be the same on all pages;

{% static_placeholder "footer" %}

Another thing you can use, good for your example of a detail page in an apphook, is a PlaceholderField on your models.

Take this example;

from django.db import models
from cms.models.fields import PlaceholderField


class Category(models.Model):
    name = models.CharField(max_length=20)
    description = PlaceholderField('category_description')

In your template you can then render this placeholder and it'll behave like a standard placeholder on a cms page;

{% load cms_tags %}

{% render_placeholder category_instance.description language 'en' %}

You can find docs for PlaceholderField here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM