1

Django を使用して、さまざまなプロデューサーコンシューマーに個別の Web UI を提供するサイトを作成しています。両方の UI (または「サブサイト」) には、異なるレイアウト、メニュー、およびグラフィックがあります。ただし、それらは同じデータベースとモデルに異なる側面 (プロデューサーとコンシューマーなど) からアクセスします。すべて単一のドメインでホストされ、UI の差別化は URL で行われます。

問題は、このシステムに CMS を統合して、メニュー構造とテキスト コンテンツを処理するときに発生します。異なる UI の 2 つの異なるメニューをどのように処理すればよいですか? django-cms と django-page-cms を調べたところ、単一のメニュー階層しか維持していないようです。

何か案は?

汚い解決策の 1 つは、たとえば、CMS の各 UI のメニュー項目に異なるプレフィックスを追加し、CMS コードをハックして、正しい UI のメニュー項目のみを挿入することです (パラメーターとして show_menu テンプレート タグに指定されます)。

CMS アプリのインスタンスを複数持つことができれば、それぞれに独自のデータベース テーブルを持たせることができれば、より良い方法になります。しかし、これはdjangoやdjango-cmsやdjango-page-cmsなどで可能ですか?

その他の制限:

  • CMS はローカリゼーションをサポートする必要があります
  • 構成とテストをシンプルに保つために、単一の Django インスタンスを実行することをお勧めします
4

2 に答える 2

0

私はdjango-cmsを使用したことがないので、これは私の頭のてっぺんから外れています。

Extending the menu有望に見えたというドキュメントのセクションがあります。settings.pyCMS_TEMPLATES を操作して、さまざまなユーザーにさまざまな基本テンプレート (など) を使用できるように見えるため、構成の多くが含まれているのは残念なことです。これを回避する 1 つの方法 (より直接的なルートがないことを前提として) は、ユーザーをコンシューマー/プロデューサーとして識別する何かを UserProfile に追加することです。次に、あなたは次のbase.htmlことを行います:

{% if user.get_profile.consumer %}
 ...
{% else %}
 ...
{% endif %}

これにより、ユーザー タイプに基づいて、まったく異なる 2 つのルック アンド フィール オプションが効果的に提供されます。文字列定数または文字列変数の{% extends %}いずれかを取ることができるので、context_processor を使用して、拡張するテンプレートの名前を設定することもできます。

于 2010-01-08T17:26:57.487 に答える