6

django CMSプロジェクトの使用を開始しました。モジュラー設計を念頭に置いて構築された素晴らしい製品ですが、実際にお客様が求めているのは、よりシンプルなものです。

ここで、django CMS では、すべてのページに多くのコンテンツ「プラグイン」を含めることができます - テキスト、画像、またはその他です。しかし、顧客は、テキスト プラグインを有効にして、新しいページごとに自動的に選択および作成し、そのテキスト フィールドで作業したいと考えています。それは、彼らが使用するのがより簡単なものです。

このCMSシステムで以前にそのようなことをした人はいますか? または、推奨できるdjango用の他のシンプルなCMSソリューションはありますか?

4

5 に答える 5

2

同じ機能を実現する簡単な方法があります。

顧客が利用できるようにしたいページ テンプレートとインスタンス化されたプラグインの組み合わせごとに 1 つずつ、多数の「プロトタイプ ページ」を提供します。

新しいページを最初から作成するのではなく、テンプレート ページをコピーして (ページ管理のコピー アイコンから実行できます)、顧客に新しいページを作成してもらいます。このようにして、必要に応じてデフォルトのコンテンツを使用しても、必要なプラグインが既に存在します。

于 2012-06-08T09:48:33.223 に答える
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)
    )

djangoadminを使用して開始してください。しかし、もっと必要で、管理者を与えない場合は、フォーム/アクションをノックアップしてこれらのフィールドを編集するのは非常に簡単です。

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"
    )
于 2010-09-21T11:06:34.550 に答える
1

同様のページ ツリー エディタとよりシンプルなブロックをデフォルトで提供するFeinCMSもあります。よりカスタマイズ可能です。

ツリー エディタが必要ない場合、Django には組み込みの非常にシンプルなフラットページがあります。

于 2010-09-22T09:27:15.543 に答える
0

最速ですが、おそらく最もエレガントではない方法は次のとおりです。

  • ドロップダウンからテキスト プラグインを選択して追加するときのユーザーの動作を模倣するスクリプトを記述します。
  • 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)
})
于 2010-09-15T12:39:42.003 に答える