4

クエリを使用して詳細を表示するウィジェットがあります。ウィジェットのヘッダーには詳細の表示タイプがあり、形状をオーバーライドできるように要約を使用したいので、ウィジェットの表示タイプを指定することは可能ですか (クエリは要約を使用しており、すべてが必要に応じて表示されます)さまざまなセクション (主にヘッダー テキスト) に配置するときは、コンテンツ ゾーンでは詳細にしたいと思います。ブートストラップテーマを使用しています。したがって、基本的に、ウィジェットをコンテンツ以外の場所に貼り付ける場合、要約を使用したい

これが理にかなっていることを願っています。

ありがとう

4

1 に答える 1

3

ああ、また会った。

ウィジェットは、 というクラスでビルドされ、レイアウトに挿入されOrchard.Widgets.Filters.WidgetFilterます。ウィジェットに使用される表示タイプを変更する方法はないようです (デフォルトでWidgetFilterは、デフォルト値の「詳細」が使用されます)。

これを回避するには、独自の の実装を使用できますWidgetFilter。既存のコードを独自のクラスにコピーし、クラスに[OrchardSuppressDependency("Orchard.Widgets.Filters.WidgetFilter")]属性を追加します。これにより、既存のWidgetFilterものは使用されず、あなたのものは使用されます。

メソッド全体を読むとOnResultExecuting、最後のすぐ近くに への呼び出しがあることがわかりますBuildDisplay。このメソッドの 2 番目の引数は、表示タイプにすることができます。ウィジェットが配置された場所を確認widgetPart.Record.Zoneし、それに応じて displayType パラメータに異なる値を渡すことができます。

これが最もエレガントな方法かどうかはわかりませんが、ここから始めます。おそらく、他の誰かがよりきちんとした解決策を持っているかもしれません。

于 2013-02-06T15:11:02.717 に答える