3

テーマレジストリをクリアすると、Drupalが実行され、統合されたcssファイルが作成されますが、ノード/ページタイプが異なると、このファイルのインスタンスがいくつか存在するようになります。私が尋ねた(そして答えた)別の質問でこれについて言及しましたが、私の質問は、Drupalが統合バージョンに追加する必要のあるcssファイルをどのように推測するのかということです。特定のノードに表示されるモジュールを制御するさまざまな場所が必要です。それでは、構築される別のcssファイルのルールを構成するものは何でしょうか。

4

1 に答える 1

3

それは簡単な関数の連鎖ではありませんでしたが、私はそこに到達したと思います...

ページが「更新」される(つまり、キャッシュから提供されるのではなく、ゼロから構築される)たびに、そのページの構築中に追加されたすべてのCSSファイルが集約され、そのページのタグdrupal_add_css()として返される単一のファイルに保存されます。<link>

の次の行はdrupal_add_css()、集約されたCSSファイルの名前を決定します。

$filename = 'css_'. md5(serialize($types) . $query_string) .'.css';

$typesdrupal_add_css()このコンテキストでは、現在のページのビルド中に使用して追加されたすべてのCSSファイルの配列です。集約されたCSSのファイル名には、シリアル化された文字列が含まれます$types。これは、基本的に、同じCSSファイルを追加する他のページがまったく同じファイル名を受け取り、同じCSSファイルをロードすることを意味します。

したがって、基本的に、集計関数はページビルドごとに実行されるため、そのページに追加されたすべてのCSSは毎回集計されます。特定のページが同じモジュールを使用している場合、上記のPHPスニペットで定義されているものと同じCSSファイルが自動的に提供されます。これをページキャッシュと組み合わせると、さまざまなページのHTMLソースで見つけた結果が得られます。

それが理にかなっていることを願っています!

于 2011-11-03T20:02:27.813 に答える