gpt4 book ai didi

django-cms - 使用 django-cms,如何允许用户指定背景图像

转载 作者:行者123 更新时间:2023-12-04 19:08:49 39 4
gpt4 key购买 nike

我正在为客户创建一个 django-cms 站点。我想做类似的事情:

<body style="background-image:url({% placeholder background-image %});">

想要的效果是有一个地方,CMS 的用户可以为页面选择背景图像。理想情况下,他们会选择使用类似 Filer 的现有图片。 .

有没有办法做到这一点?

最佳答案

Paulo 是对的,第一步是配置一个占位符,使其最多只能带一个图像插件,在这种情况下,FileImagePlugin .通过修改 CMS_PLACEHOLDER_CONF 来做到这一点:

CMS_PLACEHOLDER_CONF = {
'cover_image': {
'plugins': ['FilerImagePlugin'],
'name': _('Cover Image'),
'limits': {'global': 1},
},
}

确保在您的模板中,您在某处显示此占位符:
{% load cms_tags %}
{% placeholder "cover_image" %}

这将在 <img> 中渲染图像标签。但是,如果您只想要图像的 URL 怎么办?这就是第二步。

创建一个上下文处理器,它将直接为您提供图像。详细信息将根据您使用的图像插件进行修改,但这是我使用的一个:
# in context_processors.py
from cms.models.pluginmodel import CMSPlugin

def page_extra(request):
page = request.current_page
if page:
cover_image_plugin = CMSPlugin.objects.filter(
placeholder__page=page,
placeholder__slot='cover_image',
plugin_type='FilerImagePlugin',
).first()
if cover_image_plugin:
return {'cover': cover_image_plugin.filerimage.image}
return {}

请记住在您的 settings.py 中安装上下文处理器。文件:
TEMPLATES[0]['OPTIONS']['context_processors'].append('example.context_processors.page_extra')

现在在您的模板中,您可以使用 cover.url 访问 URL , 像这样:
<body
{% if cover %}
style="background-image: url('{{ cover.url|urlencode }}')"
{% endif %}
>

关于django-cms - 使用 django-cms,如何允许用户指定背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754302/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com