に示すように、垂直メニューにエントリとして追加されなければなりません。いくつかのステップがあります。 、official documentationを参照してください。子テーマ
を作成し、子テーマを作成し、
参照形状交互の概念を理解すること
を有効にする方法を理解する
official documentation
設定管理エリア管理エリアに
移動のメニュー、メニューににナビゲーションをクリックして、あなたが持ってたら例
[ Home (Content Menu Item) ]
[ Service (Content Menu Item) ]
[ Document Storage (Custom Link) ]
のために、いくつかのメニュー項目とサブ項目を追加この構造体Orchardはテーマで@Zone(Model.Navigation)
呼び出しを介してこの構造体をレンダリングします。この呼び出しがどこにあるのかは、テーマによって異なります。
私の子供のテーマはオーチャードはメニュー自体をレンダリングする場合、それは、このように次のステップを提供することになり、Menu.cshtml
形状テンプレートを使用するため、
@{
Func<dynamic, dynamic> Zone = x => Display(x); // Zone as an alias for Display to help make it obvious when we're displaying zones
}
<div class="wrapper">
@* Navigation bar *@
@if (Model.Navigation != null)
{
<div id="layout-navigation" class="group navbar navbar-default" role="navigation">
@Zone(Model.Navigation)
</div>
}
...
</div>
今のように、必要な場所@Zone(Model.Navigation)
を呼び出すLayout.cshtml
代替を使用しています形はMenu.cshtml
の代わりになります。
あなたの子供をテーマにメニューの形状の代替を作成
ゴーあなたに子テーマフォルダとファイルViews\Menu.cshtml
を追加し、そこにメニューをレンダリングを開始、例えば
<ul class="nav navbar-nav">
@DisplayChildren(Model)
</ul>
@DisplayChildren(Model)
コールは、MenuItem.cshtml
シェイプテンプレートを使用してメニュー項目のレンダリングを開始するので、次のステップは、MenuItem.cshtml
の代わりにシェイプを提供することです。
あなたの子供をテーマにメニュー項目の形状の代替を作成
はあなたに子テーマフォルダを移動して、ファイルViews\MenuItem.cshtml
を追加し、メニュー項目のレンダリングを開始します。ここでは、ブートストラップの仕様に応じて<li>
構造などのメニュー項目をレンダリング私のMenuItem.cshtml
ファイルの内容は次のとおりです。
@*
this shape alternate is displayed when a <li> element is rendered
whereas the following code is based on Orchard.Core\Shapes\Views\Menu.cshtml
*@
@{
// odd formatting in this file is to cause more attractive results in the output.
var items = Enumerable.Cast<dynamic>((System.Collections.IEnumerable)Model);
}
@{
if (!HasText(Model.Text)) {
@DisplayChildren(Model)
}
else {
if ((bool) Model.Selected) {
Model.Classes.Add("current");
}
if (items.Any()) {
Model.Classes.Add("dropdown");
}
@* morphing the shape to keep Model untouched*@
Model.Metadata.Alternates.Clear();
Model.Metadata.Type = "MenuItemLink";
@* render the menu item only if it has some content *@
var renderedMenuItemLink = Display(Model);
if (HasText(renderedMenuItemLink)) {
var tag = Tag(Model, "li");
@tag.StartElement
@renderedMenuItemLink
if (items.Any()) {
<ul class="dropdown-menu">
@DisplayChildren(Model)
</ul>
}
@tag.EndElement
}
}
}
あなたはまた、Custom Link
のような特定のメニュー項目の種類を無効にする交互に提供することができます。あなたは、仕事の多くを見るが、かなり柔軟なようにファイルには、コンテンツのような
@*
this shape alternate is displayed when menu link is _not_ of type "Content Menu Item" otherwise MenuItemLink-ContentMenuItem.cshtml is used
whereas the following code is based on Orchard.Core\Shapes\Views\MenuItemLink.cshtml
*@
<a href="@Model.Href" @if (Model.Item.Items.Length > 0) { <text>class="dropdown-toggle" data-toggle="dropdown"</text> }>@Model.Text</a>
でMenuItemLink.cshtml
だろう。
[このドキュメント](http://docs.orchardproject.net/en/latest/Documentation/Navigation-and-menus/)を十分に読んだことがありますか? – devqon
@devqonはい、私はしました。しかし、ドキュメントではダッシュボードでサブメニューを作成する方法について説明していますが、コードでこれを行う方法が必要です。また、IMenuProviderを使ってみましたが、MainMenuクラスを作成しましたが、 "Current Behavior"という名前の画像に記載されているメニュー項目を追加するだけです。 また、デフォルトのメインメニューではなく、作成した新しいメニューにメニュー項目を追加したいと思います。 –