1

ユーザー コントロールをヘッダーに追加するために、Layout.cshtml に次のコードがあります。

WorkContext.Layout.Header.Add(New.User(), "10");

ただし、ヘッダーでは

<article class="widget-HeaderMenu widget-header widget-menu-widget widget" shape-id="5">

前にレンダリングされます

<div class="user-display" shape-id="15">(これはその WorkContext のもので注入されます)

どちらも右にフロートしますが、ユーザー コントロールをメニューの右側に表示するには順序を逆にする必要があります。

それ、どうやったら出来るの?

WorkContext.Layout.Header.Add(New.User(), "10");9000以上に設定しても何もしないように見える2番目のパラメーターと関係があるのだろうか?私は左のパラメータを Clay オブジェクトのインスタンス化として認識しています。

編集

いくつかの実験の後、2 番目のパラメーターは、ゾーン内に注入された形状の順序であると思われます。

EDIT2

<li>@Display(New.User())</li>私は、bijが MenuWidget 代替に追加したいという効果を得ました。

代替は次のようになります。

@{
// 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 id='topnav'>

    <ul>
       @DisplayChildren(Model.Menu)
        <li>@Display(New.User())</li>
    </ul>
</nav>

関連項目: Orchard でメニューのレンダリングを制御する方法

4

1 に答える 1

0

おそらく最も簡単なのは、新しいゾーンを導入することです。

于 2013-02-25T17:29:23.873 に答える