Umbraco インストールのトップ メニュー項目とサブ メニュー項目の両方に「現在の」クラスを設定しようとしています。
トップメニューは次のようなものです:
Home Products About Contact
ここで、たとえば Products をクリックすると、クラス名を「current」に設定します。同時に、次のようなサブメニューをロードします。
Jeans
Sweeters
T-shirts
- Red
- Green
- Blue
そして、Sweetersをクリックすると、製品リンクとsweetersリンクが現在のクラスになることはありません。これどうやってするの?
トップメニューのコード
@{
<ul class="topnavigation">
@foreach (var c in Model.AncestorOrSelf(2).Children.Where("umbracoNaviHide!=true"))
{
<li class="@(Model.Id == c.Id ? "current" : "")"><a href="@c.Url">@c.Name</a></li>
}
</ul>
}
サブメニューのコード
@{
<ul>
@foreach (var page in @Model.AncestorOrSelf(3).Children)
{
string style = string.Empty;
if (Model.Id == page.Id) { style = "class=current"; }
<li @style><a href="@page.Url" @Html.Raw(style)>@page.Name</a></li>
if (page.Childen != null && page.Children.Count() > 0 && Model.AncestorsOrSelf().Where("Id == @0", page.Id).Count() > 0)
{
<ul>
@foreach (dynamic secondPage in page.Children.Where("!umbracoNaviHide"))
{
string style1 = string.Empty;
if (Model.Id == secondPage.Id) { style1 = "class=current"; }
<li @style1>
- <a href="@secondPage.Url">@secondPage.Name</a>
</li>
}
</ul>
}
}
</ul>
}