我开始使用django CMS项目。这很棒,在构建时考虑到了模块化设计......但我们的客户实际上想要的是更简单:
在这里,在 django CMS 中,每个页面都可以包含许多内容“插件”——无论是文本、图像还是其他。但是客户希望为每个新页面自动激活、选择和创建一个文本插件——并在该文本字段上工作。这对他们来说使用起来更简单。
以前有人用这个 CMS 系统做过类似的事情吗?或者,您可以推荐任何其他简单的 django CMS 解决方案吗?
我开始使用django CMS项目。这很棒,在构建时考虑到了模块化设计......但我们的客户实际上想要的是更简单:
在这里,在 django CMS 中,每个页面都可以包含许多内容“插件”——无论是文本、图像还是其他。但是客户希望为每个新页面自动激活、选择和创建一个文本插件——并在该文本字段上工作。这对他们来说使用起来更简单。
以前有人用这个 CMS 系统做过类似的事情吗?或者,您可以推荐任何其他简单的 django CMS 解决方案吗?
django CMS 3.0 支持占位符的默认插件:
http://docs.django-cms.org/en/stable/reference/configuration.html#placeholder-default-plugins
有一种简单的方法可以实现相同的功能:
提供许多“原型页面”,每个页面模板和实例化插件的组合都需要提供给客户。
让客户通过复制模板页面(可以通过页面管理中的复制图标完成)来创建新页面,而不是从头开始创建新页面。通过这种方式,所需的插件将已经存在,即使您愿意,也可以使用默认内容。
你甚至需要CMS模块吗?
使用开箱即用的 django,最基本的 CMS 几乎是微不足道的:
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 管理员即可开始。但是如果你想要更多,而不是给他们管理员,很容易敲出一个表单/动作来编辑这些字段。
如果您需要所见即所得的编辑,请将 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"
)
最快但可能不是最优雅的方式是:
它是这样的:
# 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)
})