したがって、基本的には drupal マルチサイトを使用しています。構造は次のとおりです。
mywebsite.com: -- public_html/sites/default/
sub.mywebsite.com: -- public_html/sites/sub.mywebsite.com/
(settings.php経由で)問題なく動作しますが、テーマを設定するときに問題が発生します。有効な画像ファイルを参照するにdrupal_get_path('theme','mythemefolder')
は、次のコードを使用する必要があります:
$uri=$_SERVER["REQUEST_URI"];
$path=drupal_get_path('theme','mythemefolder')."/";
$real_prefix=$base_path; // global from drupal, equates to "/" as drupal resides in public_html folder.
$count=substr_count($uri,"/");
for ($i=0;$i<$count;$i++) $real_prefix.="../";
このようにして、次のことができます。
<script type="text/css">
#borderclass {
background-image: url('<?= $real_prefix.$path.'images/a_border_image.png'; ?>');
background-repeat: repeat-x;
vertical-align: top;
}
</script>
<div class="borderclass" width="10px" height="10px"><!-- my image border div --></div>
これを行う必要がない方がはるかに望ましいでしょう。そして、単にローカルサイトフォルダーを参照するだけです...
代わりに、上記で参照した PHP 経由で次のように記述できます。
<div style="background-image: url('<?= $path ?>images/a_border_image.png');"></div>
代わりに、結果の html が次のように View Source 内に表示されます。
<div style="background-image: url('themes/mythemefolder/images/a_border_image.png');"></div>
およびない:
<div style="background-image: url('sites/sub.mywebsite.com/themes/mythemefolder/images/a_border_image.png');"></div>
そのようなことを行うようにサーバーを構成することは可能ですか? 基本的に、独自のドメインまたはサブドメインを使用している場合、クライアントに「sites」ディレクトリがサーバー上に存在することさえ知られたくありません。上記のテーマの問題は言うまでもありません。