Menu.cshtml
ビューをオーバーライドし、いくつかのロジックをコーディングしてメニュー項目の数をチェックし、含まれるメニュー項目の数に基づいて異なる ID でナビゲーション メニューをレンダリングすることで、最終的に orchard 1.5 でこれを実現しました。Site.css
次に、さまざまなサイズのナビゲーション メニューに適した CSS を使用して、さまざまな CSS セレクターを に追加しました。最終的にはMenu.cshtml
次のようになりました (これは、現在アクティブなテーマの Views フォルダーにあります)。
@
{
Script.Require("jQuery");
var tag = Tag(Model , "ul");
var items = (IList<dynamic>)Enumerable.Cast<dynamic>(Model.Items);
}
@{//if the menu contains 3 items, render a nav called 'ThreeItemNav'
if(items.Count == 3){
<nav id="ThreeItemNav">
@tag.StartElement
@* see MenuItem shape template *@
@DisplayChildren(Model)
@tag.EndElement
</nav>
}
else if(items.Count == 4){
<nav id="FourItemNav">
@tag.StartElement
@* see MenuItem shape template *@
@DisplayChildren(Model)
@tag.EndElement
</nav>
}
else if(items.Count == 5){
<nav id="FiveItemNav">
@tag.StartElement
@* see MenuItem shape template *@
@DisplayChildren(Model)
@tag.EndElement
</nav>
}
}
//Include the jQuery to add animations to the navigation menu
@using (Script.Foot())
{
<script type ="text/javascript">
//<![CDATA[
$(document).ready(function () {
//Add your script here
$(" #FiveItemNav li").hover(function () {
//Do something when the sub menu list items are hovered....
});
$(" #FourItemNav li").hover(function () {
//Do something when the sub menu list items are hovered....
});
$(" #ThreeItemNav li").hover(function () {
//Do something when the sub menu list items are hovered....
});
});
//]]>
</script>
}
ThreeItemNav
各 nav 要素 ( 、FourItemNav
および)のテーマに CSS セレクターを追加する必要があることに注意してください。FiveItemNav
たとえば、現在のテーマでは次のようになりますSite.css
。
/*Style the Three Item Navigation menu*/
#ThreeItemNav li
{
background-color:#263A79;
}
#ThreeItemNav a:hover
{
border-right:1px solid #333;
border-left:1px solid #333;
}
#ThreeItemNav > ul li.current
{
background:#5882FA;
}
/*Style the Four Item Navigation menu*/
#FourItemNav li
{
background:#Purple;
}
#FourItemNav a:hover
{
background:Orange;
}
.........more styles
これは確かに長い道のりのように思えますが、Orchard ナビゲーション メニューの機能を維持し、CSS でスタイルを設定し、jQuery アニメーションを追加できるようにするには、これが最善の方法です。長い目で見れば、ナビゲーション メニューにいくつかの強力な機能を追加するには、初期の開発コストに見合うだけの価値があると考えました。これをよりきちんとした方法で行う方法についての提案を聞きたいです。また、Orchard 1.5 を使用することを強くお勧めします。これは、階層ナビゲーション メニューの作成をサポートする機能が組み込まれているためです。
Menu.cshtml
ビューとビューの内部の仕組みをチェックするMenuItem.cshtml
と、Orchard でナビゲーション メニューがどのようにレンダリングされるかを理解しようとするだけでなく、デフォルトのテーマ マシンがナビゲーション メニューとそのさまざまなレベル/サブ メニューをどのようにスタイル設定するかを調べるのにも役立ちます。