2011-11-03 31 views
3

當我清除我的主題註冊表時,Drupal運行並構建了一個很好的整合css文件,但它爲不同的節點/頁面類型執行此操作,以便獲取所述文件的多個實例。我在另一個question I asked(和回答)中提到過這個問題,但我的問題是,Drupal如何推斷需要添加到統一版本的css文件?必須有許多不同的地方來控制在特定節點上出現哪些模塊,因此構建另一個css文件的規則是什麼?在刷新我的主題緩存時,Drupal如何將模塊css文件添加到整合文件中?

+0

+1非常有趣的問題,只是爲了調查... – Clive

回答

3

嗯,這是不是函數的一個簡單鏈跟隨,但我想我已經到了那裏......

每次頁面「刷新」(即從頭開始建立,而不是從緩存中提供)在頁面構建過程中添加了drupal_add_css()的所有CSS文件都會彙總並保存到單個文件中,該文件作爲該頁面的<link>標記返回。

drupal_add_css()下面一行決定了聚合CSS文件的名稱是什麼:

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

$types在這方面是所有的CSS文件的數組當前頁面生成過程中使用drupal_add_css()增加。聚合CSS的文件名包含一個序列化的字符串$types,這意味着任何其他添加了與該文件相同的CSS文件的頁面都將接收完全相同的文件名,從而加載相同的CSS文件。

所以基本上,聚合函數是針對每一個頁面構建運行的,因此每次添加到該頁面的所有CSS都將被聚合。如果某些頁面碰巧使用相同的模塊,那麼它們將自動被提供與上面的PHP代碼片段中定義的相同的CSS文件。當您將其與頁面緩存結合使用時,您可以在不同頁面上的HTML源代碼中找到結果。

希望有道理!

+0

這是非常有意義的。謝謝@Clive! –

相關問題