本人從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 7的網站日志中總是出現類似這樣的報錯:
Spent 15.76 ms splitting 3.1 MB object into 4 pieces, cid = cn_18dao_zhougongjiemeng-cache-locale%3Azh-hans
今天發現運行drush cc all清理緩存的時候Linux界面也是報這樣的錯,于是又在網上找了一些帖子看:
Thousands of warnings about splitting object, can't tur
很多年前剛開始用Drupal時就記錄過《直接調用drupal_set_breadcrumb設置面包屑導航條》,在Drupal 6的時候可以直接在node-abc.tpl.php裡面使用這種辦法,但Drupal 7以後node--abc.tpl.php裡面直接調用drupal_set_breadcrumb就無效了,我就刻意添加了一個block,在block裡面使用php來調用drupal_set_breadcrumb,這個辦法一直都在使用。
最近在為以前做的一把刀詞典系列的網站添加Emoji的時候,也想着把幾個站内頁添加面包屑,在網上搜了一下,還有一個更合适的辦
AMP和MIP版本的表單提交一直都需要特别處理,我們以前把Drupal站的contact頁面(聯系我們表單提交頁面)都做了專門的HTML替換處理,讓AMP/MIP下都可以使用,但最近我們啟用Google Recaptcha屏蔽垃圾,對垃圾發送者确實起到了抑制作用,可AMP/MIP下的表單提交又出現新的問題。
今天查了一下,有AMP有專門的amp-recaptcha-input組件,但隻支持reCAPTCHA v3,而我們Drupal站Web版的recaptcha模塊隻支持reCAPTCHA v2,這就存在不方便的地方了,MIP上還沒有聽說過對google re
最近發現有一台阿裡雲RDS數據庫服務器負載持續很高,CPU總是占滿,當前連接數超過幾十的時候網站就被卡得不能動了。除了升級RDS配置以外,可以仔細檢查慢查詢日志,發現這種查詢特别多:
SELECT node.title AS node_title, node.nid AS nid, node.sticky AS node_sticky, node.created AS node_created FROM node node WHERE (( (node.status = 1 OR (node.uid = 0 AND 0 <> 0 AND
Drupal網站的反垃圾一直是個問題,包括頁面留言、登錄、注冊、網站聯絡等,如果不使用任何反垃圾措施,很快就會被垃圾發送者的信息淹沒。🤬
前幾年記錄過一篇文章《Drupal反垃圾模塊的選擇》,以前安裝過captcha、botcha、honeypot、Mollom、BlockAnonymousLinks等,不過spammer也在不斷提高技術,普通的算術或者圖片驗證碼已經不能對付厲害的垃圾發送者了,如果繼續加大圖片複雜程度的話,對想留言的普通用戶很不友好。
最近看到一些Drupal日志中出現這樣的報錯“無法找到文本格式:1。”,如下圖:

檢查發現是一些帶參數的Views頁面,當找不到頁面的時候報這個錯,再仔細看Views設置,發現這裡沒有設置格式:
點擊打開“全局:文本域”顯示:
今天同事反映網站打開巨慢無比,查看阿裡雲ECS Web服務器正常,而RDS MySQL數據庫服務器有堵塞,都是被下面類似語句鍊接:
SELECT s.source, s.context, t.translation, t.language FROM mingluji_gongshang.locales_source s LEFT JOIN mingluji_gongshang.locales_target t ON s.lid = t.lid AND t.language = 'zh-hans' WHERE s.textgroup
我記憶中我們從2010年開始使用Drupal搭建網站,從開始的Drupal 6到随後主流的Drupal 7再到目前最新的Drupal 8,始終都是使用的PHP 5.x,前幾年PHP 7剛剛出來的時候我們也安裝過,但發現網站很多報錯後就退回了PHP 5.x。
今年Drupal 8的最新版本已經說了不再支持PHP 5.x,需要升級到PHP 7.x,再加上我們看了一些文章說PHP 7的性能比PHP 5提升幾倍,這對我們也很有吸引力,想到遲早也得升級的,于是再次嘗試升級PHP版本。
Drupal 8推出很有幾年了,但我們多數網站還沒有從Drupal 7升級,我隻有一個《Google AdSense實戰寶典》采用的Drupal 8,因為隻使用了簡單的頁面添加、編輯功能。其它有自定義模塊和自定義模闆的都還沒有升級到Drupal 8,怕這個過程很麻煩耗時,因為以前從Drupal 6升級到Drupal 7就是一個大坑。🥵
最近新推出的與Emoji相關的網站準備采用Drupal 8,在編輯《Emoji🙃All表情符號手冊 📝》的時候,摘錄翻譯了一些Unicode Emoji相關資料,Drupal 8的多語言支持還是不錯的,但Book這個模塊中的多語
今年以來Drupal的版本升級似乎加快了,而且多是屬于與安全有關的升級,不得不去進行。上周發現Drupa 7網站上有提示Drupal 7.66需要升級到最新的7.67,而且是SECURITY UPDATE。⚠
想到前幾次小版本升級用drush也很簡單,就也運行drush up來進行升級,升級完成後卻發現一個下面這樣的報錯:
❌PHP Fatal error: Class 'finfo' not found in /.../misc/typo3/phar-stream-wrapper/src/Pha
2002-2023 v11.7 a-j-e-0