所以基本上我使用的是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”目录。更不用说上面提到的问题。
答案 0 :(得分:0)
根据我的理解你想要了解的内容,让我告诉你,这不是你通常处理事情的方式。
模块不需要查看主题(模板文件除外)文件夹来获取任何内容。 徽标,标题和其他与主题相关的内容可以存储在名为“images”或其他任何内容的主题子文件夹中。
主题文件夹将包含所有模板文件(页面模板,html模板,节点模板等),但如果您想获取主题的路径,则可以为您准备一个变量。
css中的 url(),如果样式在文件中,则相对于css文件 - 而不是当前页面。
因此,您可以输入url('images/a_border_image.png')
,这样无论主题的位置如何,它都将相对于主题文件夹。浏览器知道css文件的位置是sites/sub.mywebsite.com/themes/mythemefolder
,而css中的url()内容将与那个文件夹相关。
但是,如果您想要(轻松)获得正确的路径,请执行以下操作:
<?php
$theme_path = drupal_get_path('theme','mythemefolder').'/';
$real_path = url($theme_path . 'images/images/a_border_image.png'); // 'sites/sub.mywebsite.com/themes/mythemefolder/images/a_border_image.png'
?>
url()将为您处理基本路径和所有substr内容。