Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

進階客製化 Flatsome 子佈景主題-開闔式選單 (下)

昨天我們提到透過擴充短代碼 (shortcode) 的方式,客製化出可以用查詢參數 _GET 來指定開啟選單項目的開闔式選單 (accordion) 區塊。今天,我們就要讓 Flatsome 內建的 UX Builder 也能夠轉譯出這個功能。

分析上層佈景主題檔案

經過分析後,我們可以發現上層佈景主題將 UX Builder 的核心功能,存放於 inc/builder 下。而用於轉譯短代碼的檔案,則在 inc/builder/shortcodes 之下,我們在裡面可以找到 accordion.php 這個檔案:

PHP

從 accordion.php 這個檔案中,可以了解如何在 UX Builder 中註冊新的區塊。透過 add_ux_builder_shortcode 這個函式,我們可以將註冊過的短代碼置於 UX Builder 中,使它能夠在頁面中轉譯自訂的短代碼。這裡簡單介紹一下幾個引數:

名稱說明
type底下是否有子項目,有的話則填入 'type' => 'container'
name在 UX Builder 中顯示的名稱。
category類型,欲顯示在 UX Builder 的哪個區塊中。因為和 Accordion 是類似的類型,所以維持原本的 ‘content’。
template在 UX Builder 中要顯示的樣式範本。為 HTML 格式,後面會提到如何引用 HTML 檔案。
thumbnail選填,在 UX Builder 中要顯示的縮圖。後面會補充說明。
info要顯示在 UX Builder 中的補充資訊,預設是 {{ title }},用來擷取下方 options 中的 title 欄位值。
allow可新增於此元素的子區塊,因為我們要做的是開闔式選單,因此填寫 'accordion-item'
presets預設內容。在 'content' 將短代碼填入,這樣在新增區塊時,便會自動帶入預設的內容。
options其他選項,這部分基本上便按照原本的預設值,不需要額外調整。
圖中左側的 TITLE 便是透過 info 引數帶入的 {{ title}} 值。

自訂範本

在前一段中,我們提到 templatethumbnail 這兩個引數。因為這兩個引數使用了 flatsome_ux_builder_templateflatsome_ux_builder_thumbnail 這兩個方法,因此需要在子佈景主題的 functions.php 中稍加改寫:

PHP

從上述的程式碼中,我們定義了將範本儲存於「子佈景主題」的 inc/builder/shortcodes/templates 中,而縮圖的 svg 檔則儲存於子佈景主題的 inc/builder/shortcodes/thumbnails 中。

自訂 HTML 範本

我們先將上層佈景主題的 templates 的資料夾中,將 accordion.html 複製到子佈景主題的對應位置,改名為 custom-accordion.html。其內容如下:

HTML

這裡是透過 AJAX 的方法,將 shortcode 的選項取出並轉譯到 UX Builder 中。因為我們沒有變更任何選項,因此這裡可以維持原樣。

改寫 custom_accordion 的程式碼

在這次的實作中,我們可以直接將原本 accordion.php 的程式碼直接原封不動的複製到子佈景主題對應的資料夾中,並在 'name''template''presets' 中稍做修改。

PHP

將所有客製化的檔案引入 functions.php 中

我們在上一篇跟這一篇的實作中,總共建立了以下幾個檔案:

  • inc/shortcodes/custom-accordion.php (使用者實際上會看到的短代碼)
  • inc/builder/shortcodes/custom-accordion.php (UX Builder 轉譯用的短代碼)
  • inc/builder/shortcodes/templates/custom-accordion.html (UX Builder 轉譯用的範本)

接著,我們要將這些功能正式套用在子佈景主題中:

PHP

結語

今天示範如何將昨天開闔式選單的短代碼,註冊為 UX Builder 的客製化區塊。只要熟悉 add_ux_builder_shortcode 這個函式,便可以大幅提升對 Flatsome 子佈景主題客製化的掌控度。

透過開闔式選單這個相對簡單的例子了解 add_ux_builder_shortcode 的運作方式後,我們可以再進一步處理昨天提到的第二個問題:Flatsome 內建的 Blog Posts 元素無法使用自訂內容製作投影片輪播 (slider)。

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

DMCA
PROTECTED