本人從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的朋友有所幫助。

我的這個博客基本都是中文寫的,但也常遇到國外垃圾信息的騷擾,幾乎每天都有英文的垃圾留言,帶有一些Spam廣告網址,我先是發現後手工删除,但太多了,每天都有上十條,遠比正常留言多,後來用Drupal的Captcha插件,但Spammer似乎有技術手段跳過驗證,依然不斷地發,我被迫把留言添加人工審核、甚至關閉留言一段時間,但隻要放開後馬上又可以看到垃圾源源不斷。😠
春節前同事們一起也談工作總結、計劃的時候,到說到幾個開放提交信息、留言的網站存在大量垃圾,每天要花費好多時間去檢查、删除。于是我嘗試了Drupal的Mollom插件,這個有所謂智能反垃圾的功能,建立在對大量垃圾
最近我們在對一些網站添加多語言以及修改自定義模塊的工作中,需要對Boost緩存進行清除操作,逐個網站在菜單中清除需要很長時間,想到用Drush來批量處理系列網站,但Drush本身隻能清除系統緩存,并不能處理Boost緩存,在網上找了些資料,找到了boost.drush.inc這個補丁可以解決,隻需要在drupal/sites/all/modules/boost目錄下新建這個文件,複制這些代碼就可以了。
為Drush添加了下面三個命令:
我們一些使用Drupal的網站中啟用了系統自帶的留言功能contact模塊,用戶使用的時候填入表單就可以反饋,不需要另外發送郵件,還是很方便的,但同事發現一些要求更改或者删除某個頁面的留言中,用戶并沒有按照我們的提示填寫需要更改或者删除的頁面網址,導緻需要反複聯系多次,增加了工作量也不利于客戶體驗。
本來同事是想在contact表單中加入一欄讓用戶填寫相關的網址,但默認的contact模塊并無此功能,這幾天在網上搜索了半天才找到辦法,就是修改contact模塊中的表單及發送php程序可以搞定。我先是嘗試直接修改drupal/modules/contact中的兩個文
在用Drupal 7搭建新網站時,根據具體情況可以添加多語言及手機版,我記錄在博文《Drupal的多語言系列網站搭建和設置》中。
在對更早使用Drupal 6已經搭建起來的網站進行擴充添加多語言及手機版的時候,過程也類似,隻是稍微有些不同,下面我也記錄一下過程:
初期準備:
很長時間沒有更新drupal 網站的sitemap了,近期用drush xmlsitemap-regenerate命令來批量更新,但在遇到數據量大的網站時,有時會遇到類似這樣的報錯:
Fatal error: Maximum execution time of 240 seconds exceeded in /mnt/gb2/htdocs/drupal.mingluji.com/includes/path.inc on line 115 Drush command terminated abnormally due to an unrecoverable
用Drupal搭建網站中,我們通常是初期導入大量數據,後來再反複修改分類、Views、顯示模闆、菜單等項目來改善用戶體驗,特别是顯示模闆可能會在幾個月、幾年後多次修改,甚至是重要的全面修改,顯示内容已經面目全非了,但搜索引擎的快照中還是以前的内容,沒有及時重新抓取、更新排名。
搜索引擎應該是基本參照網站的xmlsitemap中的頁面最後修改時間lastmod、更新頻率changefreq來決定是否回來抓取、多長時間回來抓取的,而Drupal生成的sitemap中某個頁面的最後更改時間很可能就是當初創建的時間,但顯示内容因為模闆修改而早就不同了,造成修改後的内容無法
去年在用Drupal 7搭建PostCodeBase系列各國郵編多語言網站的時候,遇到上百個國家子網站每個都需要設置50種語言網站名稱的問題,開始還逐個設置,後來實在受不了,改用Drush命令來設置:
drush --root=/usr/local/apache2/htdocs/drupal7.postcodebase.com --uri=http://bra.postcodebase.com variable-realm-set language af site_name "Brasi
還是在Business Profile Report這個網站的設置中,我們有些特别的需求,例如:批量設置産品初始價格、順序添加SKU産品編碼、産品頁面更新日期等,都可以用PHP程序來實現,程序bulk_set.php記錄如下:
<?php
$_SERVER['HTTP_HOST'] = 'report.bizdirlib.com';
$_SERVER['SCRIPT_NAME'] = '/bulk_set.php';
在用Drupal 7搭建Business Profile Report這個網站的過程中,遇到一個産品有多種不同License對應不同價格的情況,可以用Ubercart 3中的Attributes功能來實現。在modules中打開Ubercart的Attributes這個子模塊,然後在Attributes中添加一個叫License的屬性,并設置默認的Options選項。再在具體的頁面中為Attributes選擇License屬性,并根據需要來設置Options和調整不同的SKU編碼。
單個頁面都可以像上面隻有編輯,但我們已經有了數以十萬記的産品頁面,不可能逐一編輯,
Drupal系統本身支持多站點,默認情況下,這些系列網站都是用同一個robots.txt文件,這在多數情況下都很方便,但我們發現在robots.txt中添加過多的Sitemap:标簽來提交站點地圖的時候,Google Webmaster Tools會因為robots.txt文件過大而進行變換、截取,從而這些提交無效。
以前知道有個RobotsTxt的插件,但為了讓系統保持精簡就沒有安裝過,這兩天嘗試了安裝這個模塊,還是比較方便的,可以在菜單中編輯每個站點自己的robots.txt,而且會自動在底部添加一個sitemap提交。
我們的多語言網站可
2002-2023 v11.7 a-j-e-0