中文自動完成在 DRUPAL 8 中得到改善

不知大家有沒有察覺,在新的 DRUPAL 8.2.4 版本以後中,在標籤 (TAG) 輸入中文,不再返回奇怪的結果。 不必要的 HTTP REQUEST 也減少了。

DRUPAL 7 / DRUPAL 8.2.4 以前:
返回一堆不相幹的結果

(感謝 @jungle 提供 GIF)

D8.2.4 以後:

(再次感謝 @jungle 提供 GIF)

這受益於瀏覽器的 CompositionEvent API,監察 IME 輸入與輸出。
(可以參考 VUE 開發者的文章:
http://blog.evanyou.me/2014/01/03/composition-event/)

再沒有理由不用上新版 DRUPAL 8。至於 DRUPAL 7,要 BACKPORT PATCH 很容易,新年有空的朋友,可以展示一下你的功力: https://www.drupal.org/node/2823589

(特別感謝 @jungle 的 REVIEW,JS PATCH 在 DRUPAL CORE 要一天內完成及順利進到 CORE,不常出現)

[必看] Drupal 自動化測試與 WebDriver

Drupal 8 引入了 PhantomJS 加強 JavaScript 與瀏覽器方面測試,亦大家曾嚐試編寫自動化測試,必定遇過頭痛的時刻。不單是你,比如 DRUPAL CORE 也花費大量時間去尋找與修復一些不是 BUG 的 BUG:

https://www.drupal.org/node/2773791
https://www.drupal.org/node/2789381

大家不會對 Selenium 冒生,Selenium2 配合 WebDriver,你將可以在各個瀏覽器進來自動化測試。你可以直接透過真實的瀏覽器觀察結果,這絕對提高解決問題效率,及取得更真實的結果。而 Drupal Core 將 PhantomJS 寫死了為唯一的測試引擎,這為你帶來前所未有的惡劣 DEBUG 體驗!

若然,大家想要 WebDriver 進入 Drupal Core,請進去以下 ISSUE 說點廢話,不愛說廢話,可以直接 FOLLOW! 緊記積穀防飢,即使現刻沒有使用,假若覺得提議不錯,請進去說點廢話:

JavascriptTests with WebDriver
https://www.drupal.org/node/2775653

廢話有時候是有用的!! 自已感覺良好的舉例,CKEditor 就是因為我的一句廢話帶回到 Drupal 8 (為求目的,不擇手段自讚 XD),否則就要使用已經消失的 Aloha
https://www.drupal.org/node/1260052#comment-6414400

我相信群眾的力量,SHOW YOUR LOVE!!

(請任意大量轉載)

 

找到第二個 Drupal 安全漏洞

想不到繼上一個安全漏洞後,半年內再發現第二個與 JavaScript 相關的漏洞。這是一個很輕微的安全漏洞,在 Drupal Security Issues 待了數月後,安全團隊決定可以公開討論。

漏洞:
@see https://www.drupal.org/node/2725255

這漏洞出現在 “Allowed HTML tags” 中,在 JS 中蠻普遍的 XSS 攻擊。當我們允許 HTML TAG 時,後台會執行驗證及與 CKEDITOR 設定。

document.createElement(‘div’)

Drupal 使用了以上 FUNCTION 處理 TAGS,不小心往裏面狂塞進食物,就會即時嘔吐的。這問題在早期的 jQuery 版本經常出現 (現在還是有點,只是難度較高):

jQuery(“<bad-js-code>”)

 

影響:
預設情況下,只有管理員能修改 “Allowed HTML tags” 設定。(但不排除任何模組在 FRONTEND 調用了關於此漏洞的 FUNCTION)

預防修正:
– 任何時候都不要給不信任的人大量管理權限
– 直接快速打上 https://www.drupal.org/node/2725255 內的 Patch A. (雖然… D8 硬硬地不要面地說半支援 IE 8….我相信不會有人使用 Drupal 8 還在用 IE8 吧? )
– 靜候官方安全發佈

 

消除 Drupal 8 Toolbar 垂直模式閃爍

我們是對客戶負責的開發者,讓客戶用得爽是我們的目標。我們絕不會是只生活在程式碼中追求不必要的 0.1 ms 後端效能 的不實際人士。對客戶的前端體驗是我們第一必須關註的。適當的時候進行正確的決定,做正確的事,比一切看不見的完美更完美!

繼 修復 Drupal 8 Toolbar 亂跳現象 發佈後,在 CORE ISSUE 又進行了三個月原地踏步。無止境等待,不會令我們停步,繼往開來,現在發佈了 2.0 版本,進一步修復我們所面臨的一切問題:

https://www.drupal.org/project/toolbar_anti_flicker

** 中文讀者若遇上問題,可以在此或官方 ISSUE 透過你熟悉的語言與我溝通。

修復 Drupal 8 Toolbar 亂跳現象

使用過 Drupal 8 都能感受到,當頁面載入後,會由上至下跳一小跳。

Drupal Issue:
https://www.drupal.org/node/2542050
(問題: https://www.youtube.com/watch?v=urZ02CLzrAU)

做了一個小模組修復這問題:
https://www.drupal.org/project/toolbar_anti_flicker

大家放心使用吧! 以個人經驗,Druapl Core 幾乎不會在半年至一年內修復.. (我還算保守估計了)

還有這裏:
https://notabluescreen.com/drupal-problem/

 

了解 Drupal 8:為什麼我怎麼修改版型都沒反應?

從 Drupal 8 開始,沿用了多年的版型系統要改變了,改了使用 Twig。Symfony 的長期使用者對它不會產生冒生。作為程式員,遇到新事物,我慣常是直接打開檔案來修一修改,看看效果。對了,就看看 Bartik 版型。

於是打開 bartik/tempaltes/page.html.twig 改一改。怎麼沒有反應?嗯,是 CACHES 吧!清一清,有反應了。可是改一改,清一清,多複雜!怎麼關掉?還要看看文檔。到目前為此,文檔中除了一堆廢話還是一堆廢話,最終找到了 PATCH,原來收藏在 settings.php 中。(提示 Patch)


$settings['twig_debug'] = TRUE;

打開後,你可以使用 Twig 的 dump FUNCTION。(這其實就是 PHP 的 var_dump)

例子:


{{ dump() }}

印出所有目前 twig 檔案的所有可用的變數


{{ dump(user) }}

只印出 $user 內容

** 在 Devel 模組還未能完全在 Twig 下發揮作用前,大家先用用此 FUNCTION 吧。

啟用這個 DEBUG 設定更強大及有用的是將大量 DRUPAL 版型套用資訊以註釋方式印在源始碼中,讓開發者更順手! (將會有一篇文章詳說)


$settings['twig_auto_reload'] = TRUE;

當設定為 TRUE 時,會依據檔案修改時間決定是否重新載入修改的內容。


$settings['twig_cache'] = FALSE;

完全關閉 CACHE 功能。 在 DRUPAL 註釋中只建議打開上面的 twig_auto_reload 選項就足夠。但既然 TWIG 設計有這一選項,大家也應知道在一些未知情況下,AUTO RELOAD 是會出錯的。在開發過程中,如果兩者都打開不足以對你的進度構成影響,不妨兩者都用上。

在 DRUPAL 8 文檔中,還提及一些 TWIG 的全局變量。除非 PATCH 成功進入核心,否則是不可使用的。

 

開發版型,建議大家緊記三原則:

  • 直接試,不要猜想;未嘗試前不要發問這這這方法是否可行
  • 沒反應,試清除 CACHE
  • 上線前,請關閉上面的 DEBUG 設定

 

在此,特別想請醒新手們!關於 DRUPAL 中的 TWIG 就是你們在各大不同平台所見的 TWIG,DRUPAL 會增加少量獨有的 FUNCTION,但其他語法及功能幾乎是一致的。你們可以從非 DRUPAL 資源中學習 TWIG。比如說官方網站:http://twig.sensiolabs.org/

了解 Drupal 8:安裝模組、版型在這裏就對了!

DRUPAL 8 基於 Symfony2 架構上開發,相比前面的版本是極大的改變。然而連目錄架構也變了。

以前,經常看到新手直接把模組與版型放在根目錄的 MODULES / THEMES 資料夾中,這是錯誤的。但到了 DRUPAL 8,它是建議這樣做。

Drupal 8 目錄解說:

  • CORE
    這資料夾存放了 DRUPAL 核心檔案,不建議隨便修改。
  • MODULES
    在 DRUPAL 8 中,請將模組直接安裝到這裏。在多網站架構中,所有網站都會看到這些模組。
  • THEMES
    在 DRUPAL 8 中,請將版型直接安裝到這裏。在多網站架構中,所有網站都會看到這些版型。
  • PROFILES
    這裏保存 DRUPAL 8 安裝檔,與 DRUPAL 8 之前版本相同。
  • SITES
    這裏保存 DRUPAL 8 設定檔,與 DRUPAL 8 之前版本相同。(當然也能將模組及版型放到這裏)
    如在多網站架構中,你能限制模組/版型於某一網站,如:sites/notabluescreen.com/modules/foo_module/..

放在根目錄的 MODULES / THEMES 還是 SITES 中好?

從 DRUPAL 8 架構來說,放在那都是沒有差別的,是個人喜好
但需要注意,某些模組寫得糟糕,有機會被影響。(Drupal 7 中,很少會出現這情況,但我遇上一次;Drupal 8 中,相信更是極低可能性)。
即使如此,試想像你有十個不同網站放到一起,有一堆不同的版型及模組,當你打開 admin/modules 管理時,是極慢及很亂的。所有建議大家使用較複雜架構的式時好好規劃一番。

如果你是有潔癖的人,可以更仔細的整頓資料夾,可參考:整頓你的模組資料夾

Drupal 8 會有什麼改變?

Drupal 7 差不多一周歲了,使用率也很高,根據 Drupal.org 的資料,D6 & D7 的數據差不多。模組的成熟度也不差,我這邊有相關數據,大家可以分析分析。

即使如此,還有不少個人開發者留戀 Drupal 6,甚至企業也有那方向傾向。或許,對於一些管理公司內部系統的開發者,並沒有必要升級或使用 Drupal 7,他們也許跳過此步,邁向 Drupal 8。在繁體中文世界而言,這也可能反映了相關翻譯處於緩慢或停滯狀態的原因 ?

Drupal 8 開發也近一年,有不少改變,做一個小總結,大家可以參考參考:

Backend:

  • 最易於看到的分別是資料夾結構改變了,大多 Drupal 核心檔案移動至 /core 資料夾中,更加提倡了 Don't Hack Core 概念。[#22336]
  • 強化多語言,這將會有一個大改變,最終多少還不知 :)。像集中管理 .PO 檔 ([#1260586]) 這點大家會喜歡。
  • PHP 最低版本需求提升至 5.3,底層將整合 Symfony2,還有一些大型的改動計劃。Classes 使用 PSR-0 方案,Namespace 也將進入 D8 (這些不用 Drupal 的 PHP 開發者也應該留意吧 ?)
  • 一些模組及 Garland 版型,正在或即將離開核心..([#1255674])

Frontend:

  • IE6 已死,IE7 也可能跟隨 ([#1217788]),估計其它舊的瀏覽器版本也會於無形中淘汰
  • Drupal 8 將進入 HTML5 時代,HTML5shiv 已進入核心,核心版型正在轉換至 HTML5
  • Javascript 方面也會有不少改變..
  • CSS 將做一次大清除 ([#1089868]),有人建議增加 CSS 的 Sass 版本
  • 關於 Responsive Layouts 相關的東西也會陸陸續續登入 D8..

還有很多未列出… 將對於大多 Drupal 使用者,最關心也是版型、版型、版型,關於如何改善,可以提供個人意見

個人最想要的內置 WYSIWYG、Media 管理工具,沒有什麼進展..這有一點失望。

歡迎轉載 🙂

** 這個 BLOG 瀏覽量很低,可能關心於 Drupal 的中文使用者不多,或我寫的內容實在太不吸引 (自我安慰…也可能是內容傾向於開發、大方向,而不是一步步的簡單教學…就 DrupalTaiwan 而言,我覺得上面的問題不能說上跟 Drupal 有關,大多是 HTML / CSS / PHP / LAMP 技術問題)。本來此 BLOG 也想分享 WordPress 的,但後來決定專一點…甚麼也好,未來一年會傾於 HTML5 / CSS3 / Mobile Site 開發,可能會更少分享 Drupal 的事了 **