我在万神殿上托管了Drupal 7 Open Atrium 2网站。在进行一些性能分析时,我查看了Inspector,在Networks选项卡中,看到我有一个404,以及加载一个花了很长时间的CSS文件。这个css文件本质上是域的链接。我不明白Drupal在哪里或为什么要添加这些"幻像"样式表链接到域。
看起来,某处有一系列样式表,Drupal正在抓取数组中的最后一个空白项并将其添加为样式表链接。在一个案例中,它提供了一个相对链接" /" +"" + css缓存的随机字符。在另一种情况下,它将数组中的空白项追加到站点域mysite.pantheon.com +"" +随机字符。
更新:[ 我通过我的html.tpl.php文件(print_r($ css))检查了$ css变量,发现我确实有一个幻像列表:
[http://mysite.gotpantheon.com/] => Array
(
[type] => external
[group] => 100
[every_page] => 1
[weight] => 999.009
[media] => all
[preprocess] => 1
[data] => http://mysite.gotpantheon.com/
[browsers] => Array
(
[IE] => 1
[!IE] => 1
)
)
如何查看此css项目的添加位置?奇怪的是这个css"文件"以绝对URL列出,而所有其他都是相对URL(即.module / example / style.css)
以下是我的html头中的两个幻像链接:
在我的主题.info文件中声明我的最终css文件后立即显示。 (请注意,它位于"样式"标记之外。)
<style>
...
...
@import url("http://my-site.gotpantheon.com/sites/all/themes/oak_intranet/css/oak_intranet.css?n5w7ml");
</style>
<link type="text/css" rel="stylesheet" href="?n5w7ml" media="all" />
在作为安装的一部分的IE样式表之后随机显示。
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" href="http://mysite.gotpantheon.com/profiles/openatrium/modules/panopoly/panopoly_core/css/panopoly-fonts-ie-open-sans-bold-italic.css?n5w7ml" media="all" />
<![endif]-->
<link type="text/css" rel="stylesheet" href="http://mysite.gotpantheon.com/" media="all" />
有一段时间,我被卡在了出现的?n5w7ml字符上,这里有一个很好的答案:Weird characters at the end of src/href attributes in head tag
更多信息:
这是在panopoly_core.module中添加IE样式的地方。我想也许这里会有一些东西正在注册一个额外的css文件(空白或其他东西),只是将它附加到基本网址。虽然没有看到它。
/**
* Implemenets hook_page_build().
*/
function panopoly_core_page_build(&$page) {
// This fixes a bug that causes @font-face declarations to break in IE6-8.
// @see http://www.smashingmagazine.com/2012/07/11/avoiding-faux-weights-styles-...
$path = drupal_get_path('module', 'panopoly_core');
drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-bold.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-italic.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
drupal_add_css($path . '/css/panopoly-fonts-ie-open-sans-bold-italic.css', array('group' => CSS_THEME, 'every_page' => TRUE, 'browsers' => array('IE' => 'lte IE 8', '!IE' => FALSE), 'preprocess' => FALSE));
}
更新:
所以,我注意到在我的css数组中,只有两个外部样式表,一个是我的幻像域样式表实例。我把我的网站带到了我的本地主机并搜索了术语&#34;外部&#34;在所有核心文件中。虽然列出了很多,但我很幸运,第一个是colorizer.module。第54行有一个drupal_add_css。我添加了一个&#39;测试&#39; =&GT; &#39;测试&#39;项目到那里的数组并重新加载我的网站。我在print($ css)数组中的幻像css文件现在有了该测试项。而且,它是唯一的一个。出于某种原因,没有添加颜色化器的css文件而是添加了空白?
[http://mysite.loc:8888/] => Array
(
[type] => external
[group] => 100
[every_page] => 1
[weight] => 999.008
[test] => test
[media] => all
[preprocess] => 1
[data] => http://mysite.loc:8888/
[browsers] => Array
(
[IE] => 1
[!IE] => 1
)
)
答案 0 :(得分:0)
检查缓存,禁用缓存css文件
答案 1 :(得分:0)
First Phantom: Colorizer模块正在添加css文件,即使没有要创建的也是如此。补丁已在此问题帖子中承诺:https://drupal.org/node/2272845
第二个幽灵: 我在这里(https://www.drupal.org/node/171209)读到外部css文件没有进入[my-theme] .info文件。检查并确定我有这样的外部链接:
; CSS - General
stylesheets[all][] = css/screen.css
stylesheets[all][] = css/oak_intranet.css
stylesheets[all][] = http://fonts.googleapis.com/css?family=Lato
最后一个外部链接显示在我渲染的html中,如下所示:
<link type="text/css" rel="stylesheet" href="&n8223b" media="all" />
我只需删除它,保存文件,然后清除缓存。