-1

Orchard CMS と MVC は初めてなので、これを考慮してください。どんな助けでも - 多ければ多いほど良い - 大いに受け取られます。

ブログの概要ページにウィジェットを追加したいと考えています。これを達成するための最良の方法は何ですか?このページに固有になるように、レイヤーのルールによって定義されたブログの概要ページのレイヤーを作成してみました。ただし、これではウィジェットをレイヤー ゾーンに追加することしかできません。

私が必要/やりたいことは、タグクラウドと他の投稿のタイトルを表示するブログロール、および他のいくつかのコンテンツを含むサイドバーを効果的に作成することです. これは、ブログの要約コンテンツを別のゾーンに移動して、ウィジェットを横に収めることを意味します。

これは正しいアプローチですか?もしそうなら、どうすれば要約を別のゾーンに移動できますか?? これが最善のアプローチではない場合、何ですか???

これが予測の出番ですか?

ありがとう

4

3 に答える 3

4

あなたの質問に対する私の理解から、私の答えはこのようになります。

デフォルトのThemeMachineを使用している場合、「メインコンテンツ」、つまりブログの概要ページは、コンテンツゾーンに読み込まれます。コンテンツゾーンは、ThemeMachineの中央のコンテナまたはゾーンにあり、2つのサイドゾーンまたは一般にサイドバーと呼ばれます。 。あなたが望んでいることを達成するために、私はタグクラウドウィジェットとブログロールウィジェットの両方を、あなたが求めている外観に応じて、左側/サイドバーまたは右側のいずれかに配置します。

以上です!

これは、使用しているテーマに依存し、テーマのルートにあるTheme.txtファイルであるテーママニフェストによって指定されたアサイドゾーンが実際に使用可能であることに依存します。

これらのウィジェットが表示されるタイミングのルールを設定する場合は、管理ダッシュボードの[ウィジェット]領域にあるレイヤーを使用してこれを行うことができます。それについての詳細は2番目の質問が必要になります;-)私があなたの最初に答えたことを願っています。

PSプロジェクションは、ブログの概要ページとブログウィジェットの両方の代わりに使用できます。また、表示される内容をより細かく制御できます。

于 2012-11-06T09:20:00.643 に答える
2

あなたが達成しようとしていることを理解したと思います。解決策として、テーマを次の 2 つの方法のいずれかで変更する必要があります。


最初の方法はより望ましい方法ですが、より多くの作業を行う必要があります。テンプレートを変更して、現在のゾーンを 2とLayout.cshtmlに分割する必要があります。これは、テンプレートの現在のコードに大きく依存していますが、おそらく以下から変更する必要があります。ContentContentAside

<section id="content-area">
    @Zone(Model.Content)
</section>

に:

<section id="content-area">
    @Zone(Model.Content)
</section>
@if(Model.Aside != null){
<aside id="aside-area">
    @Zone(Model.Aside)
</aside>
}

次に、 CSS を変更して、 yourcontent-areaが左に、 theaside-areaが右にフローティングするようにします。

ゾーンのリストTheme.txtに追加するには、テーマのファイルを変更する必要もあります。Aside

Asideゾーンにウィジェットを追加できるようになりました。これらのウィジェットを特定の状況でのみ表示する必要がある場合は、ウィジェットを表示したいときにその状況でアクティブになる追加のレイヤーを作成する必要があります。


2 番目の解決策は、ブログが概要モードで表示されている場合にのみこれらのウィジェットを表示する場合です。このソリューションは、Orchard を使用する通常の方法ではなく、Orchard が許可するトリックですが、これを念頭に置いて設計されていません。それでも、場合によっては便利だと思うので、ここに行きます。

ゾーンのリストにゾーンTheme.txtを追加するように変更します。Aside

テーマに新しいテンプレートを作成し、名前を付けますContent-Blog.cshtml。次の内容になるように編集します。

<section id="content-area">
    @Display(Model.Content)
</section>
@if(Layout.Aside != null){
<aside id="aside-area">
    @Display(Layout.Aside)
</aside>
}

Asideまた、コンテンツの右側にゾーンを設定するように CSS を変更する必要があります。

Asideこれで、ウィジェットをゾーンに追加できます。Asideゾーンが表示されるのContent-Blog.cshtmlは がレンダリングされるときだけでありBlog、サマリー モードで表示されるときだけレンダリングされるため、新しいレイヤを作成する必要がないことに注意してください。

于 2012-11-06T17:50:24.190 に答える
0

最終的に、関連するビューを見つけてゾーンを切り替え、狭いゾーンが右側に表示されるようにしました。次に、ブログ投稿の要約を返すプロジェクションを作成し、これを左側の大きなゾーンに配置しました。

助けようとしたすべての人に感謝します。簡単な答えが必要だとわかっていたので、最初は単純化した質問でした。それがこれほどの悲しみを生むとは思いもしませんでした。

于 2012-11-13T13:04:35.197 に答える