Drupal : 如何使用同個資料庫但套用不同的 Theme ?

你會不會有這樣的需求?
當這個網站要讓電腦跟手機看到
雖然說 Responsive Design 可以解決大部分的問題
這邊 Subsite 不適用的原因是
雖然 users、roles、sessions 可以共用
但我要的不是另外架一個子站
整個站的資料不要跟主站有所分離
說白了就是
同一個網站要有不同的 view by device

如果你遇到這個問題你會怎麼處理?
mobile app 嵌入的 web view 讀到的網頁不要 header 跟 footer (只要 content)
但如果你在 mobile 上瀏覽的網站卻要是正常的(有 header & footer)

其實如果只有單一個網頁個別處理是 ok 的
可以在路徑上面多個參數
搭配 theme function 或 template 去做變化
如果該頁是 view 又有 intra link 可能就會破功
來試試看「Themekey」吧!

Themekey 就好像是個 for theme 的 Rules
他內建可以 trigger 的 event 相當多
不像 Rules 在不熟悉的時後會覺得使用上沒有頭緒
Themekey 的運作很簡單
先挑選一個 Properties(event),然後在選擇 Operator,再設定 Value 即可

現在假設我要的目的是
電腦跟手機連到同個網站在資料需要一致下,你打算怎麼做?
我一開始想說在網址列多個參數做識別
例如 http://www.facebook.com 跟 http://www.facebook.com/?device=mobile
這時候我選的 PROPERTIES 是 SYSTEM:QUERY_STRING
Operator 選擇 =
Value 設成成 device=mobile
這是 work 的
但有 intra link 的頁面會遇到上面說的問題

後來又想說如果說取得網址時在 meta data 塞些資料識別
但這樣似乎又太麻煩
其實他的 Properties 裡面還有 SYSTEM:USER_AGENT
可以直接針對不同 device 導到不同 Theme 去
後來看到 SYSTEM:HOST 有種一語驚醒夢中人的感覺
直接設定如果連到 m.facebook.com 就導到指定的 Theme 就好了
這樣網站路徑結構完全一樣
只要多設定一個 sub domain 就可以解決了
這實在太完美了阿…

I love Drupal ~

Comments

Popular posts from this blog

CentOS7 如何新增/移除 Rich Rule for firewalld

mac 安裝 mtr

Howto use Postman test Cors