ああ、また会った。
ウィジェットは、 というクラスでビルドされ、レイアウトに挿入されOrchard.Widgets.Filters.WidgetFilter
ます。ウィジェットに使用される表示タイプを変更する方法はないようです (デフォルトでWidgetFilter
は、デフォルト値の「詳細」が使用されます)。
これを回避するには、独自の の実装を使用できますWidgetFilter
。既存のコードを独自のクラスにコピーし、クラスに[OrchardSuppressDependency("Orchard.Widgets.Filters.WidgetFilter")]
属性を追加します。これにより、既存のWidgetFilter
ものは使用されず、あなたのものは使用されます。
メソッド全体を読むとOnResultExecuting
、最後のすぐ近くに への呼び出しがあることがわかりますBuildDisplay
。このメソッドの 2 番目の引数は、表示タイプにすることができます。ウィジェットが配置された場所を確認widgetPart.Record.Zone
し、それに応じて displayType パラメータに異なる値を渡すことができます。
これが最もエレガントな方法かどうかはわかりませんが、ここから始めます。おそらく、他の誰かがよりきちんとした解決策を持っているかもしれません。