2011-11-09 30 views
0

我熟悉使用#attached屬性將JavaScript和CSS附加到Drupal 7中的特定表單和表單項的過程。將JS/CSS附加到Drupal 6中的表格中

我遇到了一個解決的問題,但不幸的是我在D6安裝。

基本上,drupal_get_form()從主題層(在自定義模板文件中)被調用。它正在打印的表單具有執行drupal_add_js()(和css)的form_alter掛鉤,但由於在主題圖層中調用了drupal_get_form,因此這些JS文件被添加得太晚,因此未包含在內。

這個問題最好的Drupal 6解決方案是什麼?

+0

是否有任何理由你調用'drupal_get_form()'? – kiamlaluno

回答

2

正如問題中所述,drupal_get_form()在頁面構建過程中調用太遲,導致drupal_add_js()drupal_add_js()調用有任何影響。在主題圖層調用drupal_get_form()通常不是問題,但在這種情況下,我假設在這種情況下它被稱爲page-<something>.tpl.php。由於執行template_preprocess_page()後發生CSS和JS添加,因此建立了$script,css$styles變量。

一個簡單的解決方案是從你的主題頁面模板預處理打電話drupal_get_form(),然後重新建立$scriptcss$styles變量。

function THEME_preprocess_page(&$variables) { 
    $form = drupal_get_form('the_form_name'); 
    $variables['my_form'] = $form; 
    $variables['styles']   = drupal_get_css(); 
    $variables['css']    = drupal_add_css(); 
    $variables['scripts']   = drupal_get_js(); 
} 

更好的解決方案將是較早調用drupal_get_form(),從一個較低的水平模板(如node.tpl.php OU user.tpl.php)。但最好的辦法是在頁面,塊等回調函數中檢索主題圖層之外的表單。

+0

+1不錯,簡單的方法來做到這一點。我已經刪除了我的答案,因爲它不再相關。 – Clive