drupal多站点符号链接?

时间:2012-10-24 21:42:13

标签: .htaccess drupal theming

所以基本上我使用的是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”目录。更不用说上面提到的问题。

1 个答案:

答案 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内容。