テーマレジストリをクリアすると、Drupalが実行され、統合されたcssファイルが作成されますが、ノード/ページタイプが異なると、このファイルのインスタンスがいくつか存在するようになります。私が尋ねた(そして答えた)別の質問でこれについて言及しましたが、私の質問は、Drupalが統合バージョンに追加する必要のあるcssファイルをどのように推測するのかということです。特定のノードに表示されるモジュールを制御するさまざまな場所が必要です。それでは、構築される別のcssファイルのルールを構成するものは何でしょうか。
1 に答える
それは簡単な関数の連鎖ではありませんでしたが、私はそこに到達したと思います...
ページが「更新」される(つまり、キャッシュから提供されるのではなく、ゼロから構築される)たびに、そのページの構築中に追加されたすべてのCSSファイルが集約され、そのページのタグdrupal_add_css()
として返される単一のファイルに保存されます。<link>
の次の行はdrupal_add_css()
、集約されたCSSファイルの名前を決定します。
$filename = 'css_'. md5(serialize($types) . $query_string) .'.css';
$types
drupal_add_css()
このコンテキストでは、現在のページのビルド中に使用して追加されたすべてのCSSファイルの配列です。集約されたCSSのファイル名には、シリアル化された文字列が含まれます$types
。これは、基本的に、同じCSSファイルを追加する他のページがまったく同じファイル名を受け取り、同じCSSファイルをロードすることを意味します。
したがって、基本的に、集計関数はページビルドごとに実行されるため、そのページに追加されたすべてのCSSは毎回集計されます。特定のページが同じモジュールを使用している場合、上記のPHPスニペットで定義されているものと同じCSSファイルが自動的に提供されます。これをページキャッシュと組み合わせると、さまざまなページのHTMLソースで見つけた結果が得られます。
それが理にかなっていることを願っています!