dan*_*des 2 html css php drupal drupal-7
在Drupal 7中,编译在一起然后添加到标题中的css和javascript文件将以" http://www.example.com/sites/all/css "形式出现,我需要将其作为' https: //www.example.com/sites/all/css '.
我已经能够通过将settings.php中的baseUrl更改为使用https来实现此目的,但随后它会抛弃我们的网站.我们使用Drupal作为我们的CMS,使用另一个框架作为我们的LMS.因此,当站点从我们的LMS加载Drupal baseUrl时,该地址不起作用.
例子:
如果我设置baseUrl =' https: //www.example.com/cms ',则css正确加载为' https://www.example.com/cms/sites/all/css ',但Drupal管理站点失败加载css,因为那里的正确链接实际上是' https://www.example.com/drupal/sites/all/css '
如果我将baseUrl交换为=' https: //www.example.com/drupal,则会出现同样的问题.这样css不会在我们的前端加载,但在Drupal管理员端正常工作.
我想知道是否有办法做一个通用的通配符baseUrl,只是说使用https,如baseUrl ='https://%'或每次都在地址栏中拉出当前的url,看看生成的url应该是什么样的喜欢.
我知道这很模糊,但我不知道在哪里/怎么问.
我不太了解您使用多个子目录(/,/ drupal,/ cms)的站点结构,但您可以做的是重写资源URL并删除协议.
在自定义模块中,实现YOUR_MODULE_process_html钩子并从CSS和JS中删除所有协议.
http://www.example.com/css/... 将转变为 //www.example.com/css/...
function YOUR_MODULE_process_html(&$vars)
{
foreach (array('head', 'styles', 'scripts') as $replace) {
if (!isset($vars[$replace])) {
continue;
}
$vars[$replace] = preg_replace('/(src|href|@import )(url\(|=)(")http(s?):/', '$1$2$3', $vars[$replace]);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |