我开始使用django CMS项目。它非常棒,采用模块化设计而牢记......但实际上我们的客户想要的是更简单:
在这里,在django CMS中,每个页面都可以包含许多内容“插件” - 无论是文本,图像还是其他。但是客户想要为每个新页面自动激活,选择和创建文本插件 - 并在该文本字段上工作。这对他们来说更简单。
之前有人用这个CMS系统做过类似的事吗?或者,您可以推荐任何其他简单的django CMS解决方案?
答案 0 :(得分:2)
有一种简单的方法可以实现相同的功能:
提供许多“原型页面”,每个页面模板和您想要提供给客户的实例化插件的组合。
让客户通过复制模板页面创建新页面(可以通过页面管理员中的复制图标完成),而不是从头开始创建新页面。通过这种方式,所需的插件已经存在,即使您有希望也可以使用默认内容。
答案 1 :(得分:2)
django CMS 3.0支持占位符的默认插件:
http://docs.django-cms.org/en/stable/reference/configuration.html#placeholder-default-plugins
答案 2 :(得分:1)
你甚至需要CMS模块吗?
最基本的CMS使用开箱即用的django几乎是微不足道的:
class ContentPage(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
slug = models.SlugField()
def view_page(request, slug='home'):
return render_to_response('content.html',
{ 'page': ContentPage.objects.get(slug=slug) },
context_instance=RequestContext(request)
)
只需使用django管理员即可开始使用。但是如果你想要更多,而不是给他们管理员,那么可以很容易地敲一下表格/动作来编辑这些字段。
如果您需要wysiwyg编辑,请在表单模板中添加tinymce。类似的东西:
<script type="text/javascript" src="{{MEDIA_URL}}tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({...
或(正如'sayplastic'所述)如果您仍在通过管理员编辑页面,您也可以附加Tiny
class Media:
js = (
settings.MEDIA_URL + "jquery/jquery.js",
settings.MEDIA_URL + "tiny_mce/tiny_mce.js",
settings.MEDIA_URL + "js/admin.js"
)
答案 3 :(得分:1)
答案 4 :(得分:0)
最快,但可能不是最优雅的方式是:
它是这样的:
# anywhere in your project, for example, site/admin.py
from cms.models import Page
from cms.admin.pageadmin import PageAdmin
class ModPageAdmin(PageAdmin):
class Media:
js = ('js/cms.page.js',)
admin.site.unregister(Page)
admin.site.register(Page, ModPageAdmin)
# in MEDIA_URL/js/cms.page.js
$(document).ready(function(){
ph = $("div.form-row.main") // replace "main" with your placeholder name, lower-case
$("select", ph).val('TextPlugin')
window.setTimeout(function(){ $("span.add-plugin", ph).click() }, 500)
})