0

ウィジェットの別のビューがあります。そのビューでは、次のようなコードを使用してラッパーを抑制しています。

Model.Metadata.Wrappers.Clear();

これは機能しますが、Widget.Wrapper のみを抑制したいと思います。現在、Widget Control Wrapper モジュールを有効にしているときに編集ボタンが表示されないようにする Widget.ControlWrapper も抑制しています。

Widget.ControlWrapper を維持しながら Widget.Wrapper のみをクリアする方法はありますか?

4

2 に答える 2

2

同様の問題で誰かがこれに遭遇した場合に備えて、テーマの Widget-Sidebar.cshtml ファイルで Widget.Wrapper を抑制することができました。

@using Orchard.DisplayManagement.Descriptors;
@using Orchard.Environment.Extensions;
@{
    Model.Metadata.Wrappers.Remove("Widget_Wrapper");
    Model.Metadata.Wrappers.Add("Widget_SideBarWrapper");
    Model.Metadata.Wrappers.Add("Widget_ControlWrapper");
}
@Display(Model.Content)

まず、シェイプ トレーシング ツールを使用して、「サイドバー」列にあるウィジェットの代替を作成することから始めました (基本的<div id="sidebar">には、レイアウトに としてあります@Zone(Model.Sidebar))。

上記のコードは、Shape Tracing を使用して作成した Widget-Sidebar.cshtml 代替に配置しました。

Model.Metadata.Wrappers.Clear(); as used by the OP completely removes everything, to the point where in Shape Tracing it won't even show up as a widget. Adding my own alternate (Widget.SideBarWrapper.cshtml, which is added as "Widget_SideBarWrapper" above) would not fix this. I felt that was wrong even though the content displayed.

Model.Metadata.Wrappers.Remove("Widget_Wrapper");

正しい方法のように見えました (つまり、Shape Tracing はまだ Widget を示していました) が、他のすべてのラッパーを削除しているように見えるため、新しいラッパーを Widget.ControlWrapper.cshtml と共に追加する必要があります ("Widget_ControlWrapper" として記述)上記のコード)。

HTH。

于 2013-10-22T22:03:50.020 に答える
0

次のように Widget.ControlWrapper を追加し直すことができました。

Model.Metadata.Wrappers.Add("Widget_ControlWrapper");

これは私が望んでいたように機能しているようです。

于 2012-11-13T19:59:18.670 に答える