Pantheon でホストされている Drupal 7 Open Atrium 2 サイトがあります。パフォーマンス プロファイリングを行っているときに、インスペクターの [ネットワーク] タブを調べたところ、404 が表示され、CSS ファイルの読み込みに時間がかかっていることがわかりました。この css ファイルは、基本的にドメインへのリンクでした。Drupal がこれらの「ファントム」スタイルシート リンクをドメインに追加する場所や理由がわかりません。
どこかにスタイルシートの配列があり、Drupal が配列の最後の空白の項目を取得して、スタイルシート リンクとして追加しているようです。あるケースでは、css キャッシング用の相対リンク "/" + "" + ランダムな文字を提供しています。それ以外の場合は、配列内の空白のアイテムをサイト ドメイン mysite.pantheon.com + "" + ランダムな文字に追加しています。
更新: [ html.tpl.php ファイル (print_r($css)) で $css 変数をチェックしたところ、幻のリストの 1 つがそこにあることがわかりました。
[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 ヘッド内の 2 つのファントム リンクがあります。
テーマ .info ファイルで宣言された最終的な css ファイルの直後に表示されます。(「style」タグの外側にあることに注意してください。)
<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 文字の表示に固執していましたが、なぜそれが起こっているのかについての良い答えがここにあります:頭のタグの src/href 属性の最後にある奇妙な文字
より詳しい情報:
ここで、panopoly_core.module に IE スタイルが追加されます。余分なcssファイル(空白か何か)を登録し、それをベースURLに追加するだけの何かがここにあるのではないかと思いました。見てないけど。
/**
* 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 配列には、外部のスタイルシートが 2 つしかなく、1 つはファントム ドメインのスタイルシート インスタンスであることに気付きました。私は自分のサイトを自分のローカルホストに移動し、すべてのコア ファイルで「外部」という用語を検索しました。多くのリストがありましたが、幸運にも最初に colorizer.module がありました。54 行目に drupal_add_css があります。そこの配列に 'test' => 'test' 項目を追加し、サイトをリロードしました。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
)
)