了解 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 管理時,是極慢及很亂的。所有建議大家使用較複雜架構的式時好好規劃一番。

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

“Taiwan, Province of China”

不知為什麼大家將 DRUPAL 翻譯成 "水滴",並在出版刊物中應用,真的很難聽。對於一個品牌的稱呼,個人有點執著。比如我只會講 "Google",絕不會講 "谷歌",即使這是官方公佈的名稱。

我不理政治正不正確,我會選擇使用 "繁體中文",不愛 "正體中文"。原因很簡單,在我的生活環境中,除了 FOSS 社區以及政治話題中以外,絕不會有人這麼稱呼它們。

DRUPAL 剛剛 COMMIT 了一個 ISSUE: 將 "Taiwan" 修改為 "Taiwan, Province of China"

這改變肯定有人不喜歡。此外也帶出另一糟糕問題: 若你想改變這一名稱,除了預裝程式並通過介面翻譯改正外,你必須 HACK CORE。

"Taiwan, Province of China" 該如何翻譯 ?

我偏愛 "台灣"。原因同上。

 

UPDATE 29-06-2013: 現已使用 CLDR 數據,台灣是 TAIWAN ( https://drupal.org/node/1938892 )

Drupal CKEDITOR 模組 linebreaks 問題

我們的一個網站由於開發時並沒有使用 Ckeditor 模組,最後導致啟動編輯器後引起 LINEBREAK 的錯誤 (右面是期待的正確結果)。從網上及官網資料大概了解到這是一個已知問題, 也沒有解決方法。

想一想,最後決定直接更新文章內容,替代 LINEBREAK 為 HTML <br />。本來較好的方法是透過 Drupal API 更新,可是我們的網站很簡單,寫 API 太浪費時間,所以選用直接 MYSQL REPLACE:

  1. 為安全起見,隨機找了一段文章字詞進行全資料庫搜尋,結果符合預期: 只有一個欄位儲存這些資料 (CACHE TABLES 可以乏略)
  2. MYSQL REPLACE

    
    UPDATE field_data_body SET body_value = REPLACE(body_value, "n", "<br />");
    UPDATE field_revision_body SET body_value = REPLACE(body_value, "n", "<br />");
    
  3. Enjoy It !

如果你是使用 Wysiwyg 模組可以試試: Wysiwyg Linebreaks

效能篇: Field Storage 效能測試

分享一篇很值得一讀的文章: http://posulliv.github.com/2013/01/07/bench-field-storage/

節錄:

  • 透過調整 MYSQL 增加效能,這點一定要做!

innodb_buffer_pool_size=6G
innodb_log_file_size=512M

注意以上兩點需按伺服器性能及網站需求設定,如果設定後不能啟動可以參考這裏修正

  • 使用 MongoDB,提升三倍多效能,需要伺服器支援,也增加維護難度

然而作者的 FOLLOW UP 文章也測試了另一個 Field SQL norevisions 模組。如果你有看過 DRUPAL 數據庫結構,你會發現 DRUPAL 在做很笨的事情: 同時寫入相同的數據到兩個 FIELD 資料表中。而這模組作用就是停止這愚蠢的行為。(Kay.L: 不知有沒有副作用 ^_^)

Drupal Commerce: Notice: Trying to get property of non-object in commerce_product_line_item_populate()

Manager Order 時出現錯誤,GOOGLE 一下,沒有解答。個人時間有限,沒仔細查原因,另外也因為是全新網站,所以直接清除資料庫攪定。

資料表是 commerce_order / commerce_order_revision,將他們清空便可。

Drupal: 增加子項目 type 支援到 theme_item_list()

D8 Issue (COMMITED):
http://drupal.org/node/1785310

 

D7 可自已增加到 theme 中:
http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_item_list/7


// .. 省略
      if (count($children) > 0) {
        // Render nested list.
        $data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => $type, 'attributes' => $attributes));
      }
// .. 省略

更改為


// .. 省略
      if (count($children) > 0) {
        // Render nested list.
        $data .= theme_item_list(array('items' => $children, 'title' => NULL, 'type' => (isset($item['type']) ? $item['type'] : $type), 'attributes' => $attributes));
      }
// .. 省略

如果不會使用 theme_item_list(),可看看這裏 EXAMPLE

個人 Drupal 相關的小總結

某人問我 "對 Drupal 7 作了 11 個小貢獻" 中,其他 10 個怎麼算出來的?

這是依據 Drupal Commit 算統計出來的圖表,找不找到我? 找不到 !! 再找找吧.. 用用放大鏡…. 還是找不到 ??

沒錯,如果只看用在 LDO 的帳號,真的……….. (這是一個很舊的帳號,是某天在 drupaltaiwan.org 打漏了一點才發現還來這麼一個帳號)。人地江湖,壞事做多了,分身自然很多…….. 

I'm Kay.L, a droplet

最近要處理的事情多了,沒什麼空閒時間弄 Drupal 的東西。看看 marvil07 分享的數據,由 D8 開發以來,還算做了一些小事情。

純是 Drupal 8 記錄:

全部 Drupal 貢獻記錄:

 

筆者並沒有很刻意分配出時間作貢獻的。全是在使用 Drupal 時遇上了問題,就去修正;或是午餐間、等待客戶回覆中的無聊時間上去看看。大家有心的,也可以參與參與。如果你有興趣 Drupal Core 開發,可以看看 Drupal Core Contribution Tips (中文),http://core.drupalofficehours.org/

還不知如何起步,或有 ISSUE 需要人幫助 REVIEW,可以 直接 EMAIL 找我。(十一月人在台灣一周,台灣的朋友,如果你碰到我的話也可以問問哦)

模組推薦:快速新增 MENU 至內容類型 (Content Types)

大家都知道新增選單 (MENU) 後,可以到內容類型管理頁面啟用,增加到 NODE 編輯頁面。

數個步驟,當只有兩個內容類型時,還好。若要增加至十個或更多類型中很要命。以下模組正解決了此問題:

Content types per menu
http://drupal.org/project/ct_per_menu

啟用後可在 MENU 管理頁面進行管理

I ♥ IE

我好像對 IE 情有獨鍾,記得 Firefox 及 Opera 冒起頭來、HTML & CSS 語義標準 (所謂的 CSS + DIV) 大熱之時,即使我使用 Firefox 作開發工具,平時瀏覽網站還是用以 IE6 為核心的 Maxthon 瀏覽器。經過多次來回嘗試,才下定決心到現在使用的 Chrome 身上。所以挺懂為什麼很多人選擇使用 IE 6, 7 … 真的,不易感受不到更換的原因,習慣難以改變。(就像 Chrome 的開發工具很齊全,還是獨愛 Firebug)

IE6 也算幫我賺了點金錢,最早一次網賺就是修復 IE 的兼容性問題,15 分鐘、50 美金。這令我留下深刻印象,也改變了現在的工作與生活。

最近還看到幾篇為 IE 說好話 (事實) 的文章,不知何解,我心裏有點高興。

IE 10 將會很好,期望過渡期中,網路能找到平衡點。好讓開發者輕鬆點,多點時間享受生活。

 

今天是七夕,這篇給 IE 的。