Так что в основном я использую мультисайт drupal. Структура выглядит следующим образом:
mywebsite.com: -- public_html/sites/default/
sub.mywebsite.com: -- public_html/sites/sub.mywebsite.com/
Работает просто отлично (через settings.php), но проблема возникает при создании тем. Чтобы ссылаться на действительные файлы изображений, я должен использовать drupal_get_path('theme','mythemefolder')
. И из-за того, что активированы «красивые URL-адреса», я должен использовать следующий код для ссылки на файлы изображений:
$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» существует на сервере при использовании их собственного домена или поддомена. Не говоря уже о представленной выше тематической проблеме.