Drupal 7

[Apache] 利用 .htaccess 設定強制導向 https

這是很頻繁遇到的問題了,遇到只能使用 cPanel 的網站,但又需要設定強制導向 https,就必須從 .htaccess 著手。之前查過不少方法,基本上大多是設定判斷 RewriteCond 來偵測用戶連結的是不是 https(443),如果不符合就用 RewriteRule 導向 https 通訊協定。

剛剛因為更新 Drupal 核心程式不小心把 .htaccess 覆蓋掉了,所以又上網查了一下,找到 How to redirect all traffic to HTTPS on your Drupal site 文章,裡面提的方法簡單又好設定,記錄一下,避免日後又要再查一次。

基本上是把下面的程式碼放在 RewriteEngine on 下面

[Drupal] Field Collection 無法儲存資料

這個案例很特別。這個網站用 field collection 有好一段時間了,突然客戶回報無法儲存資料,嘗試好幾次確實都是在 field collection 填入資料但無法順利寫入資料庫。

查了下發現兩年前就有這個問題,然而近四個月還有傳出類似災情,詳情可以閱讀這則討論。解法方法也不難,打入該則討論裡提到的 patch 即可。

[Drupal] Views PHP 的內容無法在 Views Data Export 的 Batch 模式匯出

簡單說,就是用 Views Data Export 的「Batch」匯出模式時,會發現所有用 Views PHP 設計的欄位都無法順利匯出其欄位數值。問題主因是 View PHP 沒有實作 pre / post execute 的程式片段。

想瞭解具體情況的可以看相關討論;如果只是想找解法的,可以直接參考這個 Patch

參考資料:https://www.drupal.org/project/views_data_export/issues/1536670#comment-...

[Drupal] 用 Views 的 overridden display 覆蓋 master display

雖然 Views 的 master (default) 和 override display 的設計很方便,而且有提供可以 revert override to default 的功能,但有時候是想保留 override display 並覆蓋掉 default display,這時候就尷尬了,因為 Views 沒有提供這麼方便的功能。

在 copy view (overridden) display to master (default) 討論串找到一個很方便的解法,基本用法是透過 Devel 模組的執行 PHP 功能,直接參考下列程式碼並替換掉「machine_name_of_my_view」與「machine_name_of_the_overridden_display」這兩個參數成真正的 views & display machine name 即可。

[Drupal] 重建選單路徑

有時候會遇到因不明原因造成管理選單錯亂,例如 node/add 這個選單不見,導致看不到新增內容的各個項目
這時的解決方法是刪除 menu_link 資料表的資料,然後再用 menu_rebuild() 重建資料

以下是用 drush 指令的操作方式:

drush sqlq "DELETE FROM menu_links WHERE menu_name='management'"
drush eval 'menu_rebuild();'

 

[Drupal] IE11 無法顯示圖片

現在開發網頁已經很少為了 IE 特別調整什麼了,除非是在公務機關環境,偶爾還是會遇到在使用舊版 IE 的現象。不過這次的問題是發生在 IE11 無法顯示圖片。

首先,我把苗頭放在 Image Style 後產生的 itok,找到「Some images are not displayed in IE [closed]」文章,解法看來是要從伺服器端下手,不過因為主機放在學校資訊中心,若非必要,實在不想求助資訊中心。

如果是改 header 可以解決,那修改 Drupal Core 看來也可能是選項之一,然後找到「Internet Explorer, MIME sniffing and broken images」,仔細研讀後才知道無法正確顯示圖片的正確原因為何。

[Drupal] 在主選單加入 node/add/content-type 的選單項目

情境描述:

在主選單加入某個特定內容類型的新增連結,但同時要限制必須是註冊使用者才能建立內容。然而,因為 Drupal menu access callback 的設定,當未登入使用者不具有權限建立內容時,就無法看到 node/add/content-type 的路徑,也就會造成選單中是前述路徑的選單項目無法顯示在未登入使用者的畫面上。

解法:

讓註冊使用者才能建立內容,這在 Drupal 內建的權限控管機制就做得到,只不過可以加上 Redirect 403 to User Login 模組或 LoginToboggan 模組,讓使用者在存取 node/add/content-type 路徑時可以直接導向登入頁,而不是限制存取的頁面。

[Drupal] A/B test

最近因在學校授課之故,又燃起想試做 A/B test 的念頭。想說 Drupal 這麼神奇,應該也會有 A/B test 的工具吧,果不其然。

A/B test:提供一套 API 函式,可以用來實作 A/B test。不過看來是得自己先在 Drupal 做出兩個頁面,再隨機分配給訪客瀏覽。

Optimizely:用來介接 optimizely.com 提供的服務,是從《Growth Hack 這樣做》這本書看到的服務。這服務好像可以直接從 optimizely.com 的後台直接改成 A/B 不同的版面配置,得花時間試試。

Pages

Subscribe to RSS - Drupal 7