2013-02-14 28 views
0

我有一個自定義的Drupal 7模塊,它打印出表單的內容,解析它並用等價的div替換所有表單元素,然後使用DOMDocument()打印出HTML。用drupal_get_css打印默認CSS文件的原始內容

然後通過wkhtmltopdf運行以生成PDF。我也有一些preg_replace在一些內聯CSS中將所有出現的textarea/input轉換爲.div-textarea/.div-input

的問題,但是,是包含在自定義主題的默認Drupal的CSS文件和CSS文件是無法通過此正則表達式來處理,因爲drupal_get_css()函數返回<link>標籤和CSS的@import規則。

所以問題是:你知道我怎麼能得到Drupal的主題輸出來打印HTML文件中的CSS文件的實際原始內容,而不是這些樣式錶鏈接,以便我可以在其上運行替換函數?

或者是否有更好的方法將CSS規則從一個元素/類複製到另一個元素/類?

回答

1

我這樣做是使用PHP功能可按:file_get_contents

那麼你的代碼看起來是這樣的:

$css = file_get_contents(drupal_get_path('theme', 'my_theme') . 'css/my_css.css'); 

然後你就可以打印CSS可在任何模板或追加到任何字符串讓你的輸出。

編輯:

要獲得所有的CSS文件的列表運行:$css_list = drupal_add_css();

+0

感謝您的回答;我現在唯一的問題是,我不想一定要手動添加每個CSS文件,因爲有很多 - 你知道一種方式,我可以得到所有將加載的CSS文件的數組,因此我可以依次通過?乾杯! :) – 2013-02-18 09:07:25

+0

編輯我的asnwer上面。只需運行不帶參數的drupal_add_css,它將返回數組中的所有CSS樣式表。 – danielson317 2013-02-18 16:18:47

+0

啊,非常感謝! – 2013-02-20 09:38:45

1

一旦你加載一個字符串的CSS(見@ danielson317的答案如何做一個很好的例子)添加頭部使用drupal_add_html_head()

如果添加第二個key參數,則可以使用hook_html_head_alter()運行您的正則表達式。