django-cmsは、常に一番上のページを開始/ランディングページとして使用します。このfoo-home-barとhomeのようなナビゲーションをランディングページにしたいと思います。
1つの方法は、/ homeにリダイレクトするダミーページを/に追加することですが、これは私には少し粗雑に思えます。より良い解決策はありますか?cms自体のコードを変更してもかまいません。
django-cmsは、常に一番上のページを開始/ランディングページとして使用します。このfoo-home-barとhomeのようなナビゲーションをランディングページにしたいと思います。
1つの方法は、/ homeにリダイレクトするダミーページを/に追加することですが、これは私には少し粗雑に思えます。より良い解決策はありますか?cms自体のコードを変更してもかまいません。
リダイレクトするページを作成する代わりに、最も簡単な方法は、djangoのリダイレクト汎用ビューを使用することです。
トップレベルのurls.pyに設定します
url(r'^$', RedirectView.as_view(url='/home/')),
from django.views.generic.base import RedirectView
もちろん、最初にインポートを追加すると、すべて設定されているはずです。
('^$'
ルートURLとRedirectViewリダイレクトのみを必要な場所でキャッチします。自分で使用するかどうかは少しわかりませんでしたが、多くの主要なWebサイトがサイトにアクセスしたときにリダイレクトを実行しているのを見ました...)
最初に作成するページはホームページのようです。必要に応じて他のルートページを追加し、それらのページでナビゲーションを有効にします。これは私がやったことです。
最初のページはテストで、次にいくつかの子ページでした。管理ページで、ページをクリックしてドラッグし、子/親の順序を変更できます。testの名前をhomeに変更し、子ページを別のルートページに移動しました。
menu / menu.htmlでテンプレートを作成することにより、デフォルトのメニューをオーバーライドすることもできます。そこで、いくつかのifステートメントを追加することにより、順序をオーバーライドすることができます。次のようなメニューを使用して、base.htmlにハードコーディングすることもできます。
<ul id=menu>
<li><a href="/foo/>foo></a></li>
<li><a href="/">Home</a></li>
{% show_menu %}
<ul>
そして、ナビゲーションに必要なバーと他のページがありますが、fooやhomeはありません。
ホームページには、他のページにはないアイコンがあり、ルートページを示していると思います。
cms_pageテーブルでtree_idの番号が最も小さいページがホームページです。これは通常、作成した最初のページになります。別のページをホームページにしたい場合は、データベースのtree_id値を手動で変更できます(ただし、残念ながら、管理者を使用することはできません)。