Drupal

Embed inline script in Drupal

Jiajun Xu 發表於 週一, 04/06/2020 - 15:41

話說最近跟某客戶在玩 Highcharts 這套動態圖表函式庫;而我們為了讓資料能動態更新,data 都存放在外部的 Google Spreadsheet 裡,因此無法使用如 EasychartCharts 等 Drupal 圖表模組。因此,如果要餵 Highcharts 吃存在 Google Spreadsheet 的資料,就必須手動寫 JS script 來進行設定。但在 Drupal 8 裡,這是有點麻煩的事情。

標籤 (Tags)

[Drupal 筆記] Multi-sites in subdirectories

Jiajun Xu 發表於 二, 12/10/2019 - 12:32

今天弄清楚了一件困擾我兩年的事情 囧

話說 "Multi-sites" 是 Drupal 一個很好用的功能,核心概念就是「共享 code」,佈署一次就能建立多個站台,管理跟維護都方便。

詳細資訊可參考官方文件,或是兩年前我比現在還肉咖的時候也寫過一篇筆記,有興趣請自行參考。

如果我們 google "Drupal multi-sites",範例中常見的是「同域名,不同子網域 (subdomain)」,但我想要的作法是「不同子目錄 (subdirectory)」,後者今天才弄清楚。

以下將兩種作法各貼出來:

標籤 (Tags)

[Drupal] Dynamic override key value of configuration entities by Webform Node field value

Jiajun Xu 發表於 週六, 08/24/2019 - 02:24

今天完成了一個讓我鬼打牆了至少整整七天的**小**功能,就是標題寫的這個東西。

我的專案主要是用 Drupal Webform 做課程的線上報名平台。之所以需要做下面這個 custom module,是因為課程報名需要設有人數限制,但 Webform 要設定報名上限的步驟頗為麻煩,而且我也不想讓一般使用者也進去設定頁面,於是決定在 Webform Node content type 裡面新增一個「報名上限」的欄位,讓使用者把上限數字直接填在這裡,再根據這欄位裡的值,去更動對應的 Webform 底下的人數上限設定值。

標籤 (Tags)

[Drupal] Webform tweak: 只顯示「必須填寫」 的欄位

Jiajun Xu 發表於 三, 07/24/2019 - 01:59

最近的專案裡,有項功能是「課程報名」。要在 Drupal 底下製作高度自訂性的表單,相信大家第一個想到的模組就是 Webform

為了讓用戶方便使用,我們先建立一個包含各類所需欄位的表單,例如姓名電話Email所屬單位性別葷素等等全部包進去,再到將 webform 設定成 "template",之後就可以輕鬆重製新的表單了。
(詳細說明可參見這篇 issue

但並不是每個課程,報名都要填那麼多的資料,例如公司的內部訓練,也許名字單位Email 這三項填一填就好了。
我原本想到的解法是,在 webform 裡頭設一個 fieldset,叫做「隱藏區」之類的,然後在前台用 CSS 把「隱藏區」藏起來;而用 webform template 新建表單的時候,把用不到的欄位拖曳到隱藏區就行了。
(當然直接刪除也可以啦)

標籤 (Tags)

[Drupal] 初試自動化流程工具 Rules

Jiajun Xu 發表於 周日, 06/09/2019 - 01:18

Rules 是 Drupal 裡一個神器級的模組,用來執行一些自動化工作;它除了強大,學問也非常深,還有前輩為此出了一本書這樣。

Rules 常見用法包括:在用戶登入後將其導向某路徑;在用戶發布內容後寄送 email 給管理員;或可搭配 Workflow 等流程工具,將用戶體驗更進一步優化。

它的基本運作模式是這樣的:

  • 事件(Events)→ 觸發
  • 條件(Conditions)→ 過濾
  • 執行動作

以下示範如何設定「在用戶發布文章之後,顯示系統訊息」:

標籤 (Tags)

[Drupal 7] 遷移「部份」文章

Jiajun Xu 發表於 週五, 05/03/2019 - 01:10

這邊遇到一個麻煩情勢:某 D7 網站原本架在 A server,現在想搬到 B server,但我進度拖拖拉拉,一邊處理 B server,他們又一邊在 A server 上新的稿,所以 B server 的文章進度是落後的,需要把這段時間在 A server 新增的文章搬過來。

在 D7 如果要匯出部份文章,Node export 是很好的選擇,因為它可以在內容管理頁面(/admin/content/),用勾選的方式決定哪些 node 要匯出,然後另存新檔,再到目的網站做匯入。

但這種作法有一個缺點:例如今天是一位使用者otakupapa進行匯入動作,所有匯入的文章,作者都會變成otakupapa

後來發現用 drush 處理匯入的話,可以透過指令來指定作者的uid。這種作法要成立,就是同一批匯入的文章,都是同一名作者的。所以我每次要先篩選出同一名作者的文章,再匯出成檔案。

標籤 (Tags)