本人從2010年開始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal對多語言、多站點的支持也是我選擇它的重要因素。從最開始的6.x到7.x再到8.x,我一直都在使用,在這過程中需要修改模闆、自建模塊,也學會了PHP以及其它一些技術。在本博客中我也記錄了很多日常使用Drupal中遇到的問題、解決的辦法,希望對其他使用Drupal的朋友有所幫助。

這是 Drupal 分類的頁面,點擊下面标題查看詳細文章内容:
本人從2010年開始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal對多語言、多站點的支持也是我選擇它的重要因素。從最開始的6.x到7.x再到8.x,我一直都在使用,在這過程中需要修改模闆、自建模塊,也學會了PHP以及其它一些技術。在本博客中我也記錄了很多日常使用Drupal中遇到的問題、解決的辦法,希望對其他使用Drupal的朋友有所幫助。

在制作Drupal多語言網站的時候,使用.po文件來進行翻譯,這個翻譯的過程一般是通過Google翻譯加人工糾正,然後複制到.po文件中,再導入到Drupal網站中。
從Google翻譯的界面複制翻譯結果到.po文件來比較麻煩,以前是需要逐條複制粘貼,很花費時間,現在想到搞個小工具來合并From和To,并加上msgid與msgstr到一起,方便整體複制粘貼。
使用步驟:
最近在向一個Drupal網站report.bizdirlib.com中導入更多内容時,初期選擇了一種新的内容類型company_chinese來導入,但導入完成後發現不妥,需要修改為另外一種已經存在的類型product,以便使用購物車的各種功能。
如果在MySQL中操作來修改估計是可以實現的,但需要了解各種結構、反複測試,後來找到了一個現成的插件node convert,可以比較方便地實現。
步驟如下:
Drupal網站中用Views可以顯示需要的各種列表,有時希望把列表的結果保存為另外的文件,當結果數量很大(超過幾十、幾百)時,用人工複制粘貼的辦法就不合适了,需要有自動批量處理的辦法。嘗試了2種辦法可用:
昨天嘗試了一個辦法:在Views的設置中打開SQL語句顯示,将語句複制出來,根據需要進行修改,然後再放到PHPMyAdmin中對應的數據庫中運行,将得到的結果(也類似Views的結果)導出成CSV文件。這個過程有點麻煩,特别是需要對複制的SQL語句進行一些修改,最好能懂得一些SQL才好操作。優點是運行速
Drupal網站搭建好、數據導入或者編輯完成後,如果需要大批量修改内容,可以有多種辦法:
找到MySQL數據庫中需要修改的内容放置的字段,用MySQL UPDATE語句來直接替換,其運行效率最高,但實現不方便、出錯後無法挽回、頁面時間沒有變化;
今天找到一個用于search和replace的模塊Scanner,安裝試了一下,很容易使用,替換後是生成一個新的版本,如果有問題可以批量還原,選項也很豐富:大小寫敏感查找、全詞查詢、加前後綴設
以前的Drupal 6版本中使用函數drupal_set_title來修改頁面Title是頁面的HTML标題和頁面顯示<h1></h1>中的标題都一起變化,但Drupal 7版本中再調用這個函數的時候發現隻是頁面HTML标題變更了,但頁面顯示在<h1></h1>中間的标題卻沒有變,這在有些情況下其實更好,但在确實需要頁面顯示标題也變化的時候就不行了,還得想另外的辦法。
下面一段代碼放在my_module.module中就可以實現對原來的title進行翻譯然後顯示在頁面中:
/* *
Drupal網站在Site information的設置中有一個404錯誤頁面可以定制到自己希望的網址,如果你在日志中發現大量404錯誤,而其中很多都是同一個類型可以引導到對用戶更有幫助的内容頁面,那麼就可以在這個定制的404錯誤網址中進行判斷、導向。
我做的例子是http://ak.postcodebase.com/not_found ,因為來自外部網站的鍊接中,有一部分是這個站内找不到或者錯誤的郵編,就可以根據URI進行判斷:
在《Drupal的MySQL過度膨脹,清理緩存、翻譯表》這篇2012年8月的博文中,提到有些非英文網站的locales_source表不斷變大的問題,當時在網上找了一些資料,臨時先用删除表中某些特征的數據來解決,半年後再次逐步變大導緻網站訪問困難,又編寫了一個自動删除表中記錄的腳本來解決,但始終是治标不治本。
這些天在對其它網站進行多語言擴充的時候,發現有些網站也有類似問題,都是locales_source中包含大量不需要進行翻譯的内容,再次查找資料并逐步調試,終于是找到問題的根源并可以解決了,有兩種情況:
各國郵編的系列網站是用Drupal 6搭建的,當初都開啟了Pathauto, Boost等模塊,使用起來也都還正常,後來将一部分網站進行了50種多語言和手機版的擴充,訪問速度就感覺要慢一些,最近一兩個月來擴充得越多就感覺網站訪問越慢,而且後來取消了Boost緩存(因為沒有那麼大的硬盤來緩存100倍的文件,即使可以放得下,文件數量太多訪問也慢)後感覺更慢了一些。
這個問題先在google webmaster tools中有所發現,但直到最近操作越來越慢才引起重視,監控軟件的報錯也開始頻繁,昨天再一查監控軟件的記錄,這個系列的子網站打開首頁都需要20秒以上,基本上沒有
這些天在做系列網站的時候,遇到多個子網站、每個子網站都有多個内容類型,希望在首頁展示内容類型、包含的字段名稱以及頁面數量,以前是人工來讀取的,但網站多了就很麻煩,而且以後不便更新,這次用Drupal的API調用及SQL語句來實現了。
站内讀取的例子:http://hangye.mingluji.com/it/,源代碼:
<?php $node_types=node_type_get_names(); print '<ul>'; f
Drupal中的Views是一個非常有用的工具,不需要編程就可以生成各種列表,我們一直在各個網站中使用。但也存在一個問題,舉例如下:
2002-2023 v11.7 a-j-e-0