4

次の問題があります。Orchard でサイトを作成していて、デザイン会社が作成したデザインを適用する必要があります。彼らは html と CSS (+ LESS) を提供したので、それをテーマにする必要があります。メニュー以外はほとんど私がやってます。次のコードのnavタグにクラスを適用したいのですが、最終的にそれをレンダリングするための代替を作成できません。

<article class="widget-navigation widget-menu-widget widget" shape-id="18">
<nav shape-id="19">
    <ul class="menu menu-main-menu" shape-id="19">
<li class="current first" shape-id="22">
    <a href="/" shape-id="22">Home</a> 
</li>
<li shape-id="24">
<a href="/Something1" shape-id="24">Something1</a>
</li>
<li shape-id="26">
<a href="/Something2" shape-id="26">Something2</a>
</li>
<li class="last" shape-id="28">
<a href="/Something3" shape-id="28">Something3</a>
</li>
    </ul>
</nav>
</article>

適切な CSS を適用できるように、メニューのレンダリングに影響を与えるにはどうすればよいですか? 私が作成できる唯一の代替品には、次のもののみが含まれます。

<a href="@Model.Href">@Model.Text</a>

また:

@Display(Model.Menu)
4

1 に答える 1

1

このページで説明されているように、Views/Menu-Main.cshtml 内でメニューのカスタム形状を作成できると思います。そこからは、形にしたいことはほとんど何でもできます。例えば

@{
// Model is Model.Menu from the layout (Layout.Menu)
    var tag = Tag(Model, "ul");

    var items = (IList<dynamic>)Enumerable.Cast<dynamic>(Model.Items);

    if (items.Any()) {
        items[0].Classes.Add("first");
        items[items.Count - 1].Classes.Add("last");
    }    
}
<nav class='my-custom-class'>
    @tag.StartElement
        @DisplayChildren(Model)
    @tag.EndElement
</nav>

私は実際にこれを試していないので、100% 正しくない場合は申し訳ありませんが、少なくとも正しい方向に進むはずです。

また、上記のサンプル コードは、元のメニューのコードをわずかに変更したものにすぎません。Orchard の最も優れた点は、オープン ソースであることです。元のコードはここで表示できます。

于 2013-02-22T08:43:34.817 に答える