【问题标题】:drupal multi-site symlinks?drupal多站点符号链接?
【发布时间】:2012-10-24 21:42:12
【问题描述】:

所以基本上我使用的是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>

是否可以配置我的服务器来做这样的事情?基本上,我宁愿让我的客户在使用他们自己的域或子域时甚至不知道服务器上存在“站点”目录。更不用说上面提出的主题问题了。

【问题讨论】:

    标签: .htaccess drupal theming


    【解决方案1】:

    根据我的理解,你试图理解的内容,让我告诉你,这不是你通常处理事情的方式。

    模块无需查看主题(模板文件除外)文件夹即可获取任何内容。 徽标、标题和其他与主题相关的内容可以存储在主题的名为“images”或其他任何内容的子文件夹中。

    主题文件夹将包含所有模板文件(页面模板、html 模板、节点模板等),但如果您想获取主题的路径,则为您准备好一个变量。

    url() 在 css 中,如果样式在文件中,将相对于 css 文件 - 而不是当前页面。 这就是您可以输入url('images/a_border_image.png') 的地方,因此无论主题的位置如何,它都将相对于主题文件夹。浏览器知道 css 文件的位置是 sites/sub.mywebsite.com/themes/mythemefolder 并且 css 中的 url() 内容将相对于 that 文件夹。

    但是,如果您想(轻松)获得正确的路径,请执行以下操作:

    <?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 内容。

    【讨论】:

    • 完全明白。我使用 page.tpl.php(模板)的唯一原因是通过 php 使用 ImageTTF 动态生成图像。这样我就可以缓存它们,并动态插入它们来代替原本不漂亮的文本。但是同意,使用 style.css 文件会简单得多。 --------------------- 除此之外,您提出的解决方案肯定比我的更容易。我会实施它。但是我的问题更多是关于 apache 符号链接。我宁愿完全隐藏 /sites/mywebsite.com/ 文件夹,使其在源代码中不可见。有可能吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 2011-09-06
    相关资源
    最近更新 更多