今天突然遇到客戶回報說「特定角色」無法在內容管理頁使用篩選內容類型的功能,稍微看了下,發現應該是 ajax 的問題 查了下模組相關的 issue,原來是新的 Administration Views 加了新的權限設定「Use ajax pages on Administration Views System Display」,提供「特定角色」具有這項權限就解決了
Technical
如果是早期安裝的 Debian,預設安裝 MySQL 時都會需要設定 mysql root 的密碼,並且都是以 mysql -u root -p
再輸入密碼的方式登入 mysql client。
後期的 MySQL/MariaDB 則是改成提供 unix_socket
的登入機制,意思就是你可以改用 sudo mysql
就直接登入 mysql client 而不需要再另外輸入 mysql root 的密碼。
以下是將輸入密碼 mysql_native_password
的機制改成 unix_socket
的方法。
改用 unix_socket
> ALTER USER root@localhost IDENTIFIED VIA unix_socket;
改用 mysql_native_password
在進行 Debian 作業系統升級時,由於 MariaDB 鎖定在 10.1 的版本,然後升級過程又安裝了 10.5 的版本,造成衝突。於是,原本是要將 sudo apt purge mariadb-server-10.1
移除,但在移除過程中因為 Stopping MariaDB database server: mysqld failed!
卡住而無法順利移除。
一般的解決方法是 sudo service mysql stop
就可以了,但如果你也遇到用盡大部分的方法都無法停止 mysql 服務的情況,可以改用以下的指令:
$ sudo mysqladmin -u root -p shutdown
本案例情境是,某個學校系所網站,需要根據不同學年度提供對應的「修業規範」等資料,而前台呈現的頁面當然就是以 Views 製作,並提供「學年度」切換的 exposed filter;但是,之前一直不知道究竟要怎麼設定 exposed filter 的預設值是抓最新的「學年度」(以分類製作)。
之前搜尋的資料所提供的方向,大多是 hook_form_alter()
或 hook_views_pre_view()
,但嘗試過都失敗了,於是只好每年都到 Views 去修改 exposed filter 的「預設值」。
今天再次花時間搜尋,總算找到正確的方向,應該是要用 hook_views_pre_build()
來設定預設值才對1,其程式碼範例如下:
Drupal 8 要升級至 Drupal 9,最麻煩的環節應該是部分模組沒有支援 Drupal 9,且許多 Drupal 8 的模組開發者也沒有要繼續維護的打算,導致在使用 composer 升級時,會因為這些模組的相依性限制,而無法順利升級到 Drupal 9。
遇到這種問題,比較好的解決方案,建議在 composer 加入 Lenient 儲存庫1:
$ composer config repositories.lenient composer https://packages.drupal.org/lenient
加入後的 composer.json 會類似下面的結果
因某間大學防火牆擋 http(80) 通訊埠,導致無法使用 HTTP-01 考驗方式從 Let's Encrypt 申請 SSL 安全憑證
要建立自定義的 token 會需要用到 hook_token_info()
及 hook_token()
,前者是定義 token 的分類及可以使用的 tokens、後者則是撰寫 token 要置換成什麼內容的程式。
準備 Token
以下是 Drupal Token - Generic placeholder substitution 的範例:
Drupal 8/9 要使用 TextFormat
1 類型的欄位
平時甚少會需要在客製表單中加入檔案/圖像上傳的檔案,所以一時之間也不知道該怎麼寫,為了避免下次又忘記,來補篇筆記
Drupal 8 開始是定義在 ManagedFile Class1 內: