Drupal常見錯誤

1.問題:系統的js效果失效,如views,admin,module filter。

原因:第一種可能是jquery版本問題,第二種可能是有js錯誤,用firebug檢查下。

2.問題:panels裏給page定義的動態path路徑,訪問是提示page not found

原因:設置了動態的路徑參數後,還需要在參數設置那裏給每個參數指定一個上下文環境的值。

3.如果在調用系統表單或者其它系統的內容時,沒調出來或者調的不全,

原因可能是,調用的相關函數在相應模塊的inc文件內,需要先module_load_include('inc', 'taxonomy', 'taxonomy.admin');進來。

4.views裏的字段看不到,管理員能看到,是權限問題,如果查看已經設置了權限,是否啓用了OG的group permission?

5.如果發現提交節點時,報錯說body沒填內容,但是body其實沒有設置必填,那麼檢查下是否啓用了field validation模塊(以及rules模塊)?

因爲fieldvalidation 提供了一個默認的body min words的rules,這個對中文限制有錯誤,應該被禁止掉。

6.啓用或卸載一個模塊時報錯,模塊功能不能正常使用,甚至可能出現白屏,可能是數據表未安裝或卸載成功。

確認模塊已卸載,然後直接找到該模塊安裝的數據表(.install文件查看數據表信息),刪掉即可。

7.admin menu突然沒了?具體原因不明,但是清下緩存就好了

8.解決ckeditor不能上傳圖片的錯誤

$cookie_domain = 'example.com';

9.加入你的節點顯示時,顯示出了html代碼,即代碼沒有被過濾掉,那麼應當檢查下是否這個節點保存時,沒有保存對應的輸入格式。

比如你的節點保存表單是自定義的,保存時,沒有指定輸入格式,那麼在節點顯示時,它就沒有輸入格式去處理。

10.form_set_error 只在表單驗證函數裏有實際效果,不要寫到submit函數裏。

11.Strict warning: Only variables should be passed by reference

我報錯的代碼場景:

$output .= drupal_render(drupal_get_form('import_apply_form'));

正確的寫法:

$import_apply_form = drupal_get_form('import_apply_form');

$output .= drupal_render($import_apply_form);

就是說drupal_render函數的參數是引用型的,我們不能直接傳函數進去當參數。

12.使用taxonomy_select_nodes函數,如果不限制數量,除了參數$limit = FALSE,還需要設置$pager = FALSE,否則就只顯示默認分頁的第一頁的10個

taxonomy_select_nodes($term->tid, $pager = FALSE, $limit = FALSE, $order = array('t.sticky' => 'DESC', 't.created' => 'DESC'));

13.admin 7.x-2.0-beta3 和jquery update 7.x-2.3模塊同時啓用,admin模塊的效果沒了,兩者衝突會報錯。

admin模塊的dev版修正了這個錯誤。

14.jquery update 7.x-2.3,啓用後設置jquery版本爲1.7以上,views中的字段的style setting裏的效果不正常。

它的dev版本修正了這個錯誤,並且還提供了前臺和後臺主題分別加載不同版本的jquery的設置。

15.在服務器上使用 fopen() 函數打開非物理路徑的文件地址,打不開。

是因爲服務器上php參數配置 allow_url_open 沒有設置啓用,而如果服務器上無法修改設置,那麼可以使用 drupal_realpath() 獲取文件的物理路徑作爲參數傳給fopen()。

16.List (integer)類型字段,取得的value值類型其實是字符串,而不是整數。

$node->field...['und'][0]['value']

$the_user_wrapper = entity_metadata_wrapper('user', $the_user);

$the_user_invite_comment_setting_value = $the_user_wrapper->field_invite_comment_notify->value();

17.使用video模塊做的視頻文件字段,flowplayer播放器,在view節點時,有時播放器不顯示,貌似丟失了文件,但是編輯保存後,又好了。

看起來是緩存的問題,實際上這時發現緩存(哪個緩存表存儲的文件緩存?調查下)中相應的視頻文件存儲的有時缺失url,只存儲了fid,而播放器顯示的代碼中,是直接獲取了緩存中的文件url,所以會造成“丟失”現象,應改成從fid獲取整個文件的信息。

18.現象:某個模塊的hook_init,沒有被初始化緩存到cache_bootstrap表中的module_implements記錄中,根本原因不明,經過調查,

$query = db_select('cache_bootstrap', 'cb');

$query->fields('cb', array('data'));

$query->condition('cb.cid', 'module_implements', '=');

$result = $query->execute();

$row = $result->fetchField();

$module_implements = unserialize($row);

print_r($module_implements['init']);

打印出的數組裏,init項裏沒有該模塊的名字。那麼覆蓋性的解決方案是直接去該記錄初始化的地方去判斷下,如果沒有該模塊,就強制加上該模塊。

但是後來,由於修改了settings.php中的host地址,原來是db,現在改成了localhost,這個現象又沒了!根本原因還未查明...

19.重定向循環錯誤,一般是與已有的判斷跳轉代碼衝突,形成了死循環。

比如要實現需求:非登錄用戶訪問網站,跳到登錄頁面

在hook_init裏執行drupal_goto之前,除了要判斷當前是否有用戶登錄外,還要過濾掉user/login頁面,否則就會造成重定向循環錯誤。

20.自定義的一個多行文本框,填寫規則是一行一個,提交後後臺獲取表單值,要分隔成數組。

$member_usernames = $form_state['values']['member_usernames'];

$temp = explode('\n', $member_usernames);

應該用雙引號!

21.如果發現$node->title或者其它字段信息顯示不正確,那麼檢查下在當前頁面裏,是否在別的地方有輸出這個字段信息,而且是這樣的方式:

$node->title = '***'; print $node->title;

這樣的話,被強制賦值的$node就會被緩存起來,下次你用node_load時,它就讀取你修改過的緩存了。

還可以在調用時,設置不讀取緩存來避免這種情況:

node_load(arg(1), $vid = NULL, $reset = TRUE)

22.從服務器上的站點下載到本地來搭建環境,文件已同步,數據庫也導入成功了,但是本地打開一看,好像沒有樣式和圖片加載...

去文件系統配置的頁面看了下,Temporary directory裏寫的是"/tmp",配置成"sites/default/files/tmp"。

23.配置phpmailer的發件箱地址時,要確保和站點郵箱地址一樣,否則發不了郵件。

24.如果客戶瀏覽器看不到任何js效果,對於其它網站也是如此,那麼可能是客戶的瀏覽器設置了禁止活動腳本。

25.ueditor上傳圖片時,報錯:網絡鏈接錯誤,請檢查配置後重試!

檢查settings.php中是否啓用了$cookie_domain,應該註釋掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章