2010-04-13 10 views
6

Tôi bắt đầu sử dụng dự án django CMS. Thật tuyệt vời, được xây dựng với thiết kế kiểu mô-đun được lưu ý ... nhưng những gì thực sự khách hàng của chúng tôi muốn đơn giản hơn:Plugin nội dung mặc định trong django-cms

Ở đây, trong django CMS mỗi trang có thể chứa nhiều nội dung 'plugin' - văn bản, hình ảnh hoặc khác . Nhưng khách hàng muốn có một plugin văn bản hoạt động, được chọn và tạo tự động cho mọi trang mới - và làm việc trên trường văn bản đó. Đó là điều đơn giản hơn để họ sử dụng.

Bất kỳ ai đã làm điều gì đó tương tự như vậy trước đây với hệ thống CMS này? Hoặc, bất kỳ giải pháp CMS đơn giản nào khác cho django bạn có thể đề xuất?

+0

này không phải là một câu trả lời tuy nhiên có thể hlpful: http://www.django-cms.org/en/documentation/2.0/configuration/#cms-placeholder- conf – dzida

Trả lời

0

nhanh nhất, nhưng có lẽ không phải là cách thanh lịch nhất là:

  • viết một kịch bản mà mimicks hành vi người dùng khi lựa chọn và thêm plugin của văn bản từ một danh sách thả xuống;
  • ghi đè TrangAdmin để bao gồm tập lệnh của chúng tôi.

Nó đi như thế này:

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

Bạn thậm chí không cần module CMS?

Các cơ bản nhất của CMS là gần tầm thường sử dụng out-of-the-box 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) 
    ) 

Chỉ cần sử dụng quản trị django để bắt đầu. Nhưng nếu bạn muốn nhiều hơn, và không cung cấp cho họ các admin nó khá dễ dàng để gõ lên một hình thức/hành động để chỉnh sửa các lĩnh vực này.

Nếu bạn cần chỉnh sửa wysiwyg thêm tinymce vào mẫu biểu mẫu. Một cái gì đó như:

<script type="text/javascript" src="{{MEDIA_URL}}tiny_mce/tiny_mce.js"></script> 
<script type="text/javascript"> 
tinyMCE.init({... 

hoặc (như đã đề cập bởi 'sayplastic') nếu bạn vẫn đang chỉnh sửa trang qua thông qua việc quản trị, bạn có thể đính kèm Tiny với quá

class Media: 
    js = (
     settings.MEDIA_URL + "jquery/jquery.js", 
     settings.MEDIA_URL + "tiny_mce/tiny_mce.js", 
     settings.MEDIA_URL + "js/admin.js" 
    ) 
1

của họ cũng là FeinCMS cung cấp tương tự Trình chỉnh sửa cây trang và khối đơn giản theo mặc định. Nó có thể tùy chỉnh nhiều hơn.

Nếu bạn không cần trình chỉnh sửa cây, Django đã tích hợp sẵn flatpages rất đơn giản.

2

Có một cách đơn giản để đạt được các chức năng tương tự:

Cung cấp một số "trang nguyên mẫu", một cho mỗi sự kết hợp của mẫu trang và plugins instantiated bạn muốn được cung cấp cho khách hàng.

Để khách hàng tạo trang mới bằng cách sao chép các trang mẫu (có thể được thực hiện thông qua biểu tượng sao chép trong quản trị viên trang) thay vì tạo trang mới từ đầu. Bằng cách này, các plugin cần thiết đã có sẵn, ngay cả với nội dung mặc định nếu bạn muốn.