Плагин контента по умолчанию в django-cms - PullRequest
6 голосов
/ 13 апреля 2010

Я начал использовать проект django CMS . Это здорово, построено с учетом модульной конструкции ... но на самом деле наш клиент хочет больше простоты:

Здесь, в django CMS, каждая страница может содержать множество «плагинов» контента - будь то текст, изображение или другое. Но клиент хочет, чтобы текстовый плагин был активным, выбирался и создавался автоматически для каждой новой страницы - и работал над этим текстовым полем. Это то, что им проще использовать.

Кто-нибудь делал что-то подобное раньше с этой системой CMS? Или какие-нибудь другие простые CMS-решения для django, которые вы могли бы порекомендовать?

Ответы [ 5 ]

2 голосов
/ 21 февраля 2014

django CMS 3.0 поддерживает плагины по умолчанию для заполнителей:

http://docs.django -cms.org / о / стабильный / ссылка / configuration.html # заполнитель-умолчанию-плагин

2 голосов
/ 08 июня 2012

Существует простой способ добиться той же функциональности:

Укажите количество «страниц-прототипов», по одной для каждой комбинации шаблона страницы и созданных экземпляров плагинов, которые вы хотите сделать доступными для клиента.

Пусть клиент создаст новые страницы, скопировав страницы шаблона (это можно сделать с помощью значка копирования в администраторе страниц), а не создавая новую страницу с нуля. Таким образом, необходимые плагины уже будут там, даже с содержимым по умолчанию, если хотите.

1 голос
/ 21 сентября 2010

Вам даже нужен модуль 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"
    )
1 голос
/ 22 сентября 2010

Это также FeinCMS , которая по умолчанию предоставляет аналогичный редактор дерева страниц и более простой блок. Это более настраиваемый.

Если вам не нужен редактор дерева, в Django есть встроенные плоские страницы , которые очень просты.

0 голосов
/ 15 сентября 2010

Самый быстрый, но, вероятно, не самый элегантный способ:

  • написать скрипт, который имитирует поведение пользователя при выборе и добавлении текстового плагина из выпадающего списка;
  • переопределите PageAdmin, чтобы включить наш скрипт.

Это выглядит так:

# 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)
})
...