2011-12-08 20 views
0

私たちは、App_Theme/{selected theme}にimages、css、および.skinファイルを使用したASP.NETソリューションを用意しています。今日のテーマには多くのファイルと画像が多数含まれており、顧客テーマのためにApp_Themesに新しいフォルダを追加し、すべてのファイルを新しいフォルダにコピーし、画像、スキン、CSSの10〜200の変更を行います。ASP.NETテーマと顧客固有の画像とCSS

ここで問題となるのは、私たちが開発したときに通常持っているデフォルトのテーマが、テーマの顧客テーマを古くから作り出すことです。だから、アップグレードが来たら、すべてのファイルを調べて、変更を探して、うまくそれらをすべて見つける必要があります。時々、私たちは本当に重要なことを逃してしまいます。

完全な解決策は、ベースのCSS、スキン、イメージを含む基本テーマを持つことです。また、新しい顧客テーマを追加するときは、変更された内容、オーバーライドするCSSセレクタ、基本テーマの画像の代わりに使用する画像のみをシステムに伝えます。私の理解では、App_Themesフォルダ内の通常のASP.NETテーマ機能を使用している場合は、BASEテーマではなくONEテーマしか作成できず、代わりにソリューションが使用する別の背景や画像を持つDeliveryCustomerテーマBASEテーマのもののうちの1つです。

将来的にこれを維持可能な方法で解決するガイドラインがありますか?私は、App_Themeパスをオーバーライドしてカスタムスキンで動作させることを見ました。

ありがとうございました!

答えて

0

[OK]をここで私はそれを知っている方法です。 私は必要とされるすべてのCSSファイル、スキンファイル、イメージを持つ元のテーマで、デフォルトのテーマを作成しました。このテーマはApp_Themesフォルダにあります。 Theme I'vはApp_Themesフォルダの隣にThemeSkinsという新しいフォルダを作成しました。このフォルダには、すべて新しいスキンが別のフォルダにあります。フォルダ名は、新しいテーマの名前です。それぞれのスキンフォルダには、オーバーロードしたいセレクタだけを含むCSSファイルがあります。交換したい画像もあります。

私は三つありませんThemeCreatorツール作成しました:App_Themesフォルダ内のデフォルトテーマを除くすべてのテーマを削除

  • を。これは、開発者のために働く主要なテーマを1つだけ持つことです。 ThemeSkinsで実行する必要がある作業はまだありますが、全体の作業負荷は最小限に抑えられます。
  • 次に、ツールはThemeSkinsにあるフォルダを調べ、App_Themesの下にその名前の各スキンのフォルダを作成します。次に、作成したばかりの新しいスキンフォルダにDefaultテーマをコピーします。
  • 最後に、App_Themesの下に新しく作成されたスキンにスキン固有のファイルをマージし、情報だけのために追加されたファイルをユーザーに知らせます。このツールはすべてのcssファイルに接頭辞「z_」を追加して、すべてのcssファイルの最後にロードされ、そこでデフォルトセレクタがオーバーロードされるようにします。

残っていることは、これまでのところ、これらのファイルに変更を必要としていないスキンファイルを更新することです。しかし、私はスキンファイルを追加するだけで、自動的にデフォルトを更新しなければならないと思うのですが、スキンマーカはcssセレクタでオーバーロードできないためです。

これは本当にスムーズに動作し、私たちのテーマでスキンを使って作業するうれしいやわらかい方法を提供します。 同じ結果を得る方法を知っている人はいますか? ASP.NETテーマを使用する主な問題は、既定のテーマを使用できず、スキンファイルのshape属性とcolor属性を使用せずにスキンを適用することだけであるということです。スキンファイルは、マークアップに必要なすべての場所にすべての属性をコピーし、CSSクラスのように参照するだけではなく、これを推奨します。

0

あなたが説明したような基本テーマの概念を使用してください。すべての一般的なCSSルールを別のファイルに引き出し、base.cssとしましょう。

base.cssを取ると共通しているすべての画像、およびフォルダApp_Themesの外に入れて、ちょうどあなたのような通常のCSSファイルが含まれます、あなたのマスターページ上の他の。

<link rel="stylesheet" type="text/css" href="/styles/base.css" /> <!-- Note this isn't in app_themes --> 

次に、さまざまなテーマのCSSファイルでは、スタイルのデルタのみを指定してください。

+0

ありがとうございます!ただし、ここでは、.skinファイルはApp_Themeフォルダからのみ読み込むことができます(レンダリングでこのパスをハイジャックする方法を使用しない場合)。私はまだ働くと思うかもしれない解決策に取り組んでいます。誰かが基本テーマを持っていて、顧客固有の部品を何らかの形で持っているのと同じようなケースがありますか? –

+0

スキンファイルが本当に必要ですか?私はちょうどASP.NETコントロールのCSSクラスに固執します。 – wsanville

+0

私の見解では、いいえ、私は私たちが.skinファイルを必要としないと思っていますが、残りのチームはそうしていますので、私はそれを念頭に置く必要があります。それ以外の場合、あなたのソリューションは私が必要とするものに最適です。 –

関連する問題