4

少しコンテキスト

OrchardCMSに移植したい多くの人々が使用している最近のMVC4Webアプリケーションがあります。これは「admin」タイプのアプリケーションですが、Orchardのadminセクションの一部にはしたくありません。このアプリケーションは現在公開されており、オーチャードへの移行をエンドユーザーにはできるだけ見えないようにしたいと考えています。

私たちが今いるところ

既存のASP.NETMVCアプリケーションをOrchardCMSと統合する方法としてこの回答に従いましたが、レイアウト(OrchardではなくRazor)を使用しており、Orchardがページをレンダリングする方法(デフォルトでは)が機能していません(コントローラーアクションによって返されるビューはレイアウトなしで表示されます-_ViewStart.cshtmlは無視されます)。Viewメソッドでレイアウトのパスを指定しようとしましたが、モジュール内にあるため、機能しないか、パスが適切ではありません。Orchardに_layout.cshtmlファイルを使用してOrchardテーマをバイパスするように指示する方法はありますか?

4

2 に答える 2

5

オーチャードのテーマをバイパスすることが可能です。私はMvcMailerでこれを行っているので、出力される電子メールはレイアウト付きの「テンプレート化された」HTMLであることに注意してください。これが通常のページで機能するとは断言できませんが、試すことはできます。あなたの見解でこれを平手打ちするだけです:

@inherits System.Web.Mvc.WebViewPage<object>
@{
  Layout = "_Layout.cshtml";
}

警告:新しい@modeldirectivは使用できません。古いスタイルにフォールバックして、モデルを「オブジェクト」の場所に配置します。

@using Namesapce.ViewModels
@inherits System.Web.Mvc.WebViewPage<MyViewModel>

それ以外の場合は、テーマを作成してオーチャードの形状をオーバーライドするのは非常に簡単です。私がそれをする2つの方法があります:

  1. 簡単なテーマを作成し、図形をオーバーライドし(たとえば、別のログインが必要な場合は、テーマの〜/ ViewフォルダーにLogin.cshtmlを作成します)、代替を使用し(Layout-homepage.cshtmlを使用してホームページのレイアウトをオーバーライドします)、を使用します。 cssなど;
  2. いくつかのトリックを使用して、モジュールからのコードでテーマをオーバーライドし、テーマフォルダーに独自のビューとシェイプを作成します。たとえば、図形を表示するコードを含むLayout.cshtmlファイルをテーマに含めることができます。ただし、図形自体(.cshtmlファイル)はモジュール内に存在します。これは、異なるモジュールで同じ名前が付けられているが、異なるコンテンツを表示する図形を呼び出すダッシュボードタイプのテーマを使用するのに最適です。このためのコードはもう少し詳細です。サンプルが必要かどうか尋ねてください。
于 2013-04-04T18:00:33.397 に答える
1

tl; drいいえ、できません。

私は自分の質問に答えるのは好きではありませんが、バートランド・ル・ロイが私の質問に答える代わりにコメントし(難しい感情はありません)、彼はオーチャードチームの一部(またはそうでしたか?)なので、誰かが来るまで、私は知っていることで答えますより良い答えが付属しています。

私が理解していることから、オーチャードプロジェクトに参加することは、それを完全に受け入れることであり、その間にはありません。カスタム(オーチャード)ビューエンジン(ゾーン、レイアウト、ウィジェット、シェイプなどで動作)は、モジュールでバイパス(デフォルトのMVCエンジンへのフォールバック)することはできません。Bertrandが提案したように、プロジェクトをOrchardテーマに変換する必要があります。

于 2013-03-13T18:04:07.540 に答える