マルチサイトDrupal 7をインストールしています。
私はすべてのサイトに1つのテーマを使用し、それはsites/all/themesにあります。
各ドメインには、テーマを設定する独自の設定があり、CSSでクラスを指定できます。これにより、テーマを各サイト/ site1/themesにコピーしたり、それぞれにサブテーマを作成したりする必要がなくなります。オーバーヘッドが少ない。
だから私は1つの巨大なCSSファイルを持っています、それは各サイトの外観に対するすべてのCSSの微調整を含んでいます。
しかし、私は各サイトのCSSを独自のファイルに分離したいと思います。
したがって、site1.css、site2.css、site3.cssなどを使用できます。それらはすべて、sites/all/themesのテーマに配置する必要があります。
Drupalにsite2.comにあるときにsite1.cssをロードするように指示するには...
少し面倒ですが、カスタムモジュールで次のようなことができる場合があります。
function mymodule_preprocess_html() {
$site = $_SERVER['HTTP_Host'];
switch ($site) {
case 'siteurl1':
//Add your CSS for site 1 here with drupal_add_css
break;
case 'siteurl2':
//Add your CSS for site 2 here with drupal_add_css
break;
case 'siteurl3':
//Add your CSS for site 3 here with drupal_add_css
break;
}
}
または、テーマファイルで具体的に必要な場合は、template.php
function mytheme_preprocess_html(&$variables) {
$site = $_SERVER['HTTP_Host'];
switch ($site) {
case 'siteurl1':
//Add your CSS for site 1 here with drupal_add_css
break;
case 'siteurl2':
//Add your CSS for site 2 here with drupal_add_css
break;
case 'siteurl3':
//Add your CSS for site 3 here with drupal_add_css
break;
}
}
正直に言うと、モジュールでhook_preprocess_pageも使用できると思います。
猫とすべてのジャズに皮をむく多くの方法。
別の解決策:)
// Allow a site-specific user defined CSS file (useful for multisite installations):
// If a CSS file "local-[SITE].css" is residing in the "css" directory (beside "local.css"),
// it will be loaded after "local.css". SITE is the site's Host name, without leading "www".
// For example, for the site http://www.mydomain.tld/ the file must be called called "local-[mydomain.tld].css"
global $base_url;
$site = preg_replace("/^[^\/]+[\/]+/", '', $base_url);
$site = preg_replace("/[\/].+/", '', $site);
$site = preg_replace("/^www[^.]*[.]/", '', $site);
drupal_add_css(path_to_theme() . '/css/local-[' . $site . '].css', 'theme', 'all');
コンテキスト+ コンテキストアセットの追加 を試しましたか?
大幅に簡単になります。ハードコーディングも必要ありません。マルチサイトではまだ試していません。
プロジェクトページから:
このモジュールは、コンテキスト内に反応を追加して、テーマ、モジュール、またはカスタムフォルダーファイルをページに追加します。
テーマにcssファイルをすばやく追加したいと思ったことはありませんか? jsファイルを1ページ(またはセクションのみ)に含めます。
このモジュールで複数のCSSファイルを簡単に使用し、テーマのコンテキストの力を利用してください!
動的にロードされるファイルについては、多少のニーズがありました。 switch
を使用する代わりに、適切なフックでこのようなことをします。
基本的に、テストする基準に基づいてファイルに名前を付けます。フックで、そのファイルが存在するかどうかを確認し、存在する場合はロードします。そうでない場合は、何もしないか、デフォルトをロードします。
このようなものが開始点になります。
function mytheme_preprocess_html (&$variables)
{
$Host = $_SERVER["HTTP_Host"];
$filename = "something-{$Host}.css";
$default = "something.css";
$path = drupal_get_path("theme", "mytheme");
$options = array();
if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/{$path}/css/{$filename}")) {
drupal_add_css("{$path}/css/{$filename}", $options);
} else {
drupal_add_css("{$path}/css/{$default}", $options);
}
}
あなたの場合、私はおそらくfile_exists
について少し賢くしようとし、テーマ変数として保存するために何かをするでしょう。