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


最近同事在整理電話号碼庫數據的時候,發現省市區幾級數據有很多不規範的地方,造成簡稱全稱重疊、省市區級别錯亂等問題,後來找到标準的行政劃分名稱,在數據庫進行了批量替換,但以前存在的頁面現在不存在了,會造成大量死鍊接,需要做301跳轉來保存可訪問性。
晚上找了一些辦法:
Drupal裡面Views功能很方便、強大,而在PHP程序中調用Views的Page或者Block也很需要,有時還可以起到替代寫SQL語句的作用,不過需要帶參數變量Block的調用不太常見,以前用過也老是忘記調用辦法,昨天又花時間找了一下,現在就記錄下面,免得以後又到處去找。
views_embed_view('views_name', 'page_or_block_id', 'variable');
詳情請看Drupal官方網站中的API文檔:views_embed_view
這兩年我們新建網站多數都采用了《在Drupal中直接導入、使用數據庫》這篇文章中說的辦法,而沒有用以前新建内容類型、導入到Drupal的Node中的辦法,這對于數據量大、改動不大、讀取多、寫入少的需求很合适。
偶爾遇到需要修改、删除的事情,我們就是到阿裡雲RDS管理後台,Web界面來操作或者用SQL語句來進行,比以前在Node頁面進行編輯要麻煩,但更改量不大的情況下也可以接受。
最近要用的一個新站也是用直接建表方式來搭建的,但内容需要人工來修改完善,而且是長久都需要添加、維護信息的,再用以前導入RDS後台就顯得太麻煩了,于是想去找現成的
這段時間我們有個網站不斷更新内容,流量在不斷增長的同時,也引來了大量采集者,現在的采集者已經非常專業了,IP池不斷更換,User Agent也随機變化,甚至Referer也做了不同的僞裝,讓我們花了很多時間來分析Apache日志,不斷修改屏蔽條件,鬥智鬥勇。先以為是百度爬蟲太快,把百度爬蟲進行了專門的臨時503處理,360爬蟲幹脆全部屏蔽了,但發現還是不行,非正規搜索引擎的采集者帶來的麻煩依然不斷。🤔
為了不影響用戶訪問,下血本把阿裡雲服務器從8核16G升級為16核32G,基本可以解決ECS負載飙升的問題,但RDS數據庫服務器還是會遇到查詢語句堆積的情況,我們
我們從去年開始新做的Drupal網站基本上沒有再采用新建内容類型的方式了,不使用node頁面,而是采用在MySQL中自建table的方式,這樣在數據量大的情況下,對于速度的提升很明顯。
但涉及到老的網站已經用node建立了很多頁面,想要改為table的方式,就需要讀取node中的信息,轉移到table中去,可以采用php調用Drupal API,但效率不高,數據量大的情況下需要很長時間運行,後來嘗試用MySQL語句,也可以順利進行,現在來補充做個筆記,下面是Drupal 7網站遷移數據的MySQL語句示例:
INSERT INTO
很多年前我們Drupal網站采用了Bartik主題作為電腦版、Mobile主題作為手機版,兩個版本采用不同的網址可以互相跳轉切換,後來進行了改版,把電腦版、手機版合二為一做成了響應式版本,使用的主題是Responsive Bartik。投放廣告則采用了Google AdSense的響應式廣告代碼。
最近因為國内浏覽器、運營商對AdSense屏蔽太狠,所以部分國内站改用了百度聯盟的廣告,并試用了反廣告屏蔽代碼,效果還不錯。但百度聯盟一直都沒有響應式格式廣告代碼可用,隻能分為手機、電腦兩種版本來創建廣告單元、獲取代碼。
在MediaWiki
前段時間進行改造MediaWiki網站符合百度熊掌号驗證的時候接觸到ld+json數據,這是加到head裡面的一種結構化數據,用來告訴搜索引擎一些關于頁面更新時間等元素。
後來在Google Search Console裡面收到這樣的報錯提示“檢測到了新的AMP問題:必需的結構化數據元素有誤”,仔細查看是“所鍊接到的 AMP 版本有效,但收到了警告
It is eligible for some AMP-specific features in Google Search results, but is not
Memcache幾年前我們就開始在Drupal站上啟用,對于降低數據庫負載的作用很明顯,偶爾會出現Memcache自己停了需要重啟Memcache服務的情況,但很少很少,幾個月也難得一次。
6月底開始申請熊掌号後,重新提交URL、提交MIP版本/AMP版本,帶來大量百度爬蟲,服務器負載明顯增高,另外其它采集者也多起來了,導緻我們網站有一陣子總是卡住,甚至随機出現白屏打不開的情況,這種白屏故障會一直持續,直到用drush cc all清理緩存後恢複。
這對網站的訪問影響太大了,如果沒有及時發現,可能幾個小時、半天都打不開,仔細查看RDS的
很久前就使用Drupal做多語言網站,采用了Drupal自帶的多語言支持,對于需要大量翻譯的詞彙,采用自定義模塊配套的.po文件來導入翻譯内容。
以前翻譯一些外文的時候用到Google翻譯,總是在Web界面進行:https://translate.google.cn/ 或者 https://translate.google.com/ ,将需要翻譯的詞、句輸入,翻譯後将輸出内容複制、粘貼到.po文件或者直接粘貼到Drupal的翻譯界面。
但如果需要翻譯的詞、句量很大,或者需要翻譯的目标語言很多的時候,反複複制粘貼都是一
Drupal網站有站點聯絡功能,是通過填寫contact表單來發送郵件實現的,我們總是收到一些來自俄羅斯的垃圾郵件,這些俄羅斯黑客有一定技術,可以識别圖片驗證碼,使我們的主要反垃圾措施失效,但垃圾終究是垃圾,這種長期自動騷擾别人的做法,這世界上做得最多的就是俄羅斯人和中國人了,真是為國家丢臉,希望中國人幹這些事的人以後少些吧。
早就想找辦法來屏蔽,本來Drupal還自己帶有“觸發”、“動作”機制的,但好像原來屏蔽關鍵詞就沒有實驗成功,所以這次幹脆找底層API來解決,通過1個小時的摸索,找到了辦法。
2002-2023 v11.7 a-j-e-0