了解 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/