1. 程式人生 > >雲客Drupal8原始碼分析之主題鉤子註冊theme.registry

雲客Drupal8原始碼分析之主題鉤子註冊theme.registry

以下內容僅是一個預覽,完整內容請見文尾:

全文目錄(全文11509字):

主題鉤子定義:
主題註冊服務:
主題實現:
主題鉤子註冊:
主題鉤子型別:
函式註冊:
掃描註冊:
註冊順序及覆寫:
主題鉤子、主題函式、模板命名:
預處理函式:
註冊後處理及修改:
執行時主題登錄檔:
補充說明:
BUG報告:
一、在drupal8.5中主題鉤子註冊邏輯有多個bug,簡要說明如下,請避免,這些雲客已經向官方提交了報告:
1在drupal8系統中處理hook_theme()時  對主題鉤子定義的“includes”屬性處理不正確,當對主題鉤子覆寫定義時,只原定義的includes值被保留,覆寫的值會被遺漏
問題程式碼:
\Drupal\Core\Theme\Registry::processExtension方法的第465行

2:\Drupal\Core\Theme\Registry::init方法內,初始化後沒有將$this->initialized設定為true,導致效能問題

3、在子主題放在父主題目錄下的情況,父主題在掃描模板註冊主題鉤子時,兩代以上的子主題目錄排除不乾淨

4、在\Drupal\Core\Theme\Registry::postProcessExtension的721行變數設定錯誤,導致效能問題

5、主題管理器派發修改鉤子時,執行順序不正確

6、\Drupal\Core\Theme\Registry::getBaseHook方法實現有問題,不存在$this->registry[$base_hook]['exists']

各位《雲客drupal8原始碼分析》系列的讀者:
本系列分享希望幫助大家理解drupal8底層原理,並縮短學習時間,但部分重點內容在部落格僅釋出前言和目錄,這是因為:drupal在國外如此流行但在國內卻很小眾,一個重要原因應該是中文資料的缺乏,我們是否能夠找到一種方式來激發高質量的中文資料出產?此時同是積極推動者的晴空提出能否用付費閱讀的方式來鼓勵更多教程作者?並建立了一個付費閱讀drupal資料的網站,學習者僅需支付很少費用即可查詢到最用心的知識註解,避免大量查詢資料,可以節省大量學習時間是划算的,作者也能分配精力去開發高質量內容而得到回報,drupal是精品中的精品,超過一半的世界五百強用她做網站,難能可貴,國內普及初期需要一個良好的土壤,普及開後免費內容會越來越多,為了支援國內發展,雲客決定將重點內容放在晴空的這個網站上收費閱讀,讀者只需要微信支付很少費用即可,雲客在這裡承諾該系列得到的所有訂閱費用全部捐獻給drupal深圳社群,用以組織活動等等,發展社群需要大家貢獻力量,該網站於2017年3月29日上線,請移步:http://nowicode.com/ 閱讀本篇完整版

我是雲客,【雲遊天下,做客四方】,微訊號:php-world,歡迎轉載,但須註明出處,討論請加qq群203286137