Technical

By gloomcheng, 15 February, 2020
隨著 Drupal [9.0.0-alpha1](https://www.drupal.org/project/drupal/releases/9.0.0-alpha1 "9.0.0-alpha1") 版釋出,想說也該把這個網站升級至 Drupal 8 了,於是就又浪費了好幾個小時 ## 話說在前 不論是 Drupal 6 或 Drupal 7 都無法直接升級至 Drupal 8,所以升級流程約略是 1. Drupal 6 必須先升級至 Drupal 7 2. 先安裝一個空的 Drupal 8 網站(建議可以用 [drupal/recommended-project](https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies "drupal/recommended-project") 安裝) 3. 先評估有哪些原先裝在 Drupal 7 的模組,還需要安裝在 Drupal 8 的,先用 composer require 的指令安裝並啟用 4.
By gloomcheng, 23 September, 2019

Drupal 7 的版型大部分都預設會在 body 元素加入以路徑為主的 class,不過 Drupal 8 的版型似乎預設都沒加入這個功能。如果想將 path alias 加到 body 當成 class 來使用的話,可以用以下的程式來達成

By gloomcheng, 18 October, 2018

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

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

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

By gloomcheng, 18 October, 2018
**20200402 更新:現在有 Visual Studio Code Remote - SSH 套件可以直接編修遠端主機的檔案,可參考[此文](https://www.footmark.info/software/editor/vscode-remote-ssh-linux-folder/)**

平常已經習慣使用 Terminal + VIM 的工作方式,直接連線到遠端編輯檔案,對我來說,大概就是把 Terminal 環境設置好,以及使用 SSH Key 直接登入主機,就省去不少麻煩。雖然這樣的工作方式對我來說很方便,不過最近需要跟一位前端設計師合作套版,思索了一下,覺得這樣的工作方式應該會造成設計師困擾,因此就開始找尋可以直接在本地編輯檔案的方法。

By gloomcheng, 18 October, 2018

我這次主要是想在 views 的 more-link 加上 .btn-primary 的 class,讓輸出結果直接變成按鈕樣式。在查找資料中[1][2],發現在 Drupal 8.0.x 的早期版本中,是有 views-more.html.twig 版型範本檔案的;不過在最新的 8.6.x 版本已沒有這個檔案了,我並沒有進一步去瞭解為什麼要拿掉這個版型檔案。

由於已經沒有 views-more.html.twig 可以修改,所以如果要覆寫 views 的輸出結果,就要在 THEMENAME.theme 檔案中利用程式直接修改。在網路上找到的參考文章有提供一段範例程式碼如下:

By gloomcheng, 18 October, 2018

在 Drupal 7 開發模組或版型時,若需要列印變數資訊,會直接安裝 Devel 模組,而後使用 dpm() 或 dsm() 方法就可以列印變數資訊了。然而,Drupal 8 因為已經捨棄 Krumo,所以使用 dpm / dsm 方法雖然可以列印變數資訊,但卻是沒有良好格式化的結果(根據 How to Print Variables using Kint in Drupal 8 一文是說 dpm / dsm 方法還可以使用,但實際上我沒有成功過),所以建議改用 kint() 來列印變數資訊。

由於 kint 屬於 Devel 8.x 的子模組,所以要使用 kint() 還是需要下載 Devel 模組並啟用 kint 模組,安裝方式可參考此文。依照 Drupal 7 的經驗,安裝並啟用模組後,應該就可以直接使用 kint() 或 ksm() 方法,然而實際上在程式碼內直接呼叫這方法會出現錯誤訊息,如下:

By gloomcheng, 19 July, 2018

近兩年習慣用 Bootstrap 版型進行開發,最近總算也要面對用 Drupal 8 開發系統了,於是也找了 D8 的 Barrio 版型(採用 Bootstrap 4 flex 架構),雖然很常在建 D7 的 Bootstrap 子版型,但 D8 下的建立流程和步驟不太一樣,而且要改的地方很多,所以把連結記錄在這,方便日後搜尋。

Creating a custom Barrio sub-theme

附帶一提,如果想用 SASS 的話,看來 Bootstrap 4 - Barrio SASS Starter Kit 可以試試。

By gloomcheng, 29 June, 2018

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

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

By gloomcheng, 25 April, 2018

最近學校的一台主機經常飆高 CPU,一開始追查發現原來是被塞入了一隻惡意程式,用途是在挖礦的。在資訊工程師生涯近十年來,首次看到被塞入的程式居然不太惡意,純粹只是會佔用主機資源而已,著實令人驚奇!

簡單記錄一下幾個比較關鍵的點,提供搜尋到這篇文章的人參考。