1

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>
}
4

1 に答える 1

1

ページには、ページの祖先を表す のPathコンマ区切りリストを含むプロパティがあります。ID

IDのようなものを使用して、現在のページのPathプロパティ内に製品ページが存在するかどうかを確認できます@Model.Path.Contains(c.Id.ToString())

于 2012-11-28T11:08:46.797 に答える