Content Widgets
以內容區塊形式提供的文章小工具:提示框、手風琴、分頁標籤、步驟、產品框、嵌入、程式碼、卡片、引用、目錄和最新文章。
外掛
Content Widgets
以內容區塊形式提供的文章小工具:提示框、手風琴、分頁標籤、步驟、產品框、嵌入、程式碼、卡片、引用、目錄和最新文章。
說明
Content Widgets
線上示範: emdashhq.com/blog/widget-gallery — 全部十九個小工具在同一篇文章中渲染。
為 EmDash 網站提供的一組文章小工具:提示框、手風琴、分頁標籤、清單、按鈕、YouTube 和 iframe 嵌入、產品/評測框、引用語、事實表、自動目錄、系列導覽,以及即時的「最新文章」列表。
每個小工具都是一個 blocks 欄位的區塊類型,因此編輯可以把它們放進任何基於區塊的欄位——頁面內容、部落格文章本文、登陸頁——只要你的結構允許。
包含內容
十九種區塊類型,全部以 widget_ 為前綴:Prose、Notice、Accordion、Tabs、Checklist、Steps、Button、YouTube、Embed、Image、Code、Product box、Link cards、Pull quote、Facts table、Table of contents、Series nav、Latest posts 和 Divider。
運作原理
沙盒外掛無法提供 Astro 渲染元件,因此這些小工具以區塊類型 JSON + 現成的 Astro 元件的形式,散佈在套件的 site/ 目錄中。你只需把它們複製到網站中一次;外掛透過元件在程序內呼叫的兩個公開路由,提供共用的執行階段行為(YouTube 的隱私模式、聯盟揭露文字、文章查詢)——沒有 HTTP 往返。
外掛還新增了一個記載每個區塊欄位的 Widget catalog 管理頁面,以及一個包含確切安裝步驟和設定狀態的 Setup guide 頁面。
安裝
安裝
1. 安裝外掛
從 EmDash 外掛註冊表安裝 @bitdoze.com/emdashhq-widgets,或將其作為檔案相依項目連結,並在 astro.config.mjs 的 sandboxed: 下註冊:
import widgetsPlugin from "emdashhq-widgets";
emdash();
外掛會要求 content:read 和 schema:read——請核准它們,這樣 Latest posts 小工具和 posts 路由才能運作。靜態小工具無需它們即可渲染。
2. 把區塊類型加入你的結構中
把 site/block-types/*.json 複製到你的 seed 檔案的 blockTypes 陣列中(或在運作中的網站上,把每個檔案的內容 POST 到 /_emdash/api/schema/block-types),然後在應該接受它們的 blocks 欄位的 allowedTypes 中列出這些類型——例如 pages.content 或 posts.body。
3. 註冊渲染器
把 site/components/*.astro、site/components/config.ts、site/components/icons.ts、site/widget-components.ts 和 site/WidgetBlocks.astro 複製到你的專案中,然後要麼為僅用於小工具的欄位渲染 WidgetBlocks:
要麼把 widgetComponents 展開到你現有的對應表中:
const blockComponents = defineBlockComponents();
4. 設定
設定位於 Plugins → Content Widgets → Settings:
- Privacy-enhanced YouTube embeds — 從
youtube-nocookie.com提供播放器(預設開啟)。 - Affiliate disclosure — Product box 小工具內的小字說明行;留空則隱藏。
- Posts collection — Latest posts 小工具和
posts路由的預設集合。
常見問題
常見問題
為什麼我必須複製檔案,而不是由外掛來完成?
沙盒外掛執行在隔離的執行階段中,無法註冊 Astro 渲染元件。site/ 目錄提供了外掛作者自己使用的同樣的區塊類型 JSON 和元件,因此安裝就是向你的儲存庫一次性複製——之後這些小工具就和你自己的任何區塊類型一樣運作。
不安裝外掛,這些小工具能運作嗎? 靜態的可以——Prose、Notice、Accordion、Tabs、Checklist、Button、Embed、Quote、Facts、TOC 和 Series 只需要區塊類型和元件。YouTube、Product box 和 Latest posts 會讀取外掛設定或路由;沒有外掛時,它們會退回到預設值(無 Cookie 開啟、無揭露文字、空清單)。
YouTube 小工具會設定 Cookie 嗎?
在訪客點擊封面之前,不會載入任何播放器。使用預設的隱私設定時,播放器來自 youtube-nocookie.com,即使那時也不會設定追蹤 Cookie。
Latest posts 如何建立它的清單?
該元件在程序內呼叫外掛的公開 posts 路由(沒有 HTTP 請求)。該路由依由新到舊列出已設定集合中已發布的項目,並根據集合的 urlPattern 解析每個項目的公開 URL。
我能重新設計這些小工具的樣式嗎?
可以——每個元件都使用 wgt-* 類別,並讀取你的設計權杖(--color-brand、--color-surface 等),同時帶有中性的後備值。覆蓋這些類別或權杖,即可符合你的佈景主題。
這些小工具也能在一般頁面內使用嗎?
可以。把 widget_* 類型加入任何 blocks 欄位的 allowedTypes 中——頁面、文章或其他任何內容。
更新日誌
更新日誌
1.0.4
- 無 JavaScript 的分頁標籤:標籤會降級為頁內錨點,每個面板都保持可見。啟用 JS 後,它們會升級為真正的分頁標籤,支援方向鍵、Home/End 和漫遊式 tabindex。
- 文件:圖庫示範連結帶有 UTM 參數。
1.0.3
- Product box:修正了沒有圖片時的版面把內容擠進窄欄的問題;現在只有設定了圖片時才會渲染媒體欄
- Product box 重新設計樣式:等寬字型的揭露行、價格標籤、優缺點的勾號/叉號標記,以及與網站按鈕一致的按鈕樣式
- 網站圖示集新增了用於缺點欄的
x圖示
1.0.2
- 文件:說明中連結到線上的小工具圖庫示範文章
1.0.1
- 註冊表列表素材:外掛圖示、橫幅和螢幕截圖
- 文件修正:說明和更新日誌中的 19 個區塊清單
1.0.0
- 首次發布:19 種
widget_*區塊類型(prose、notice、accordion、tabs、checklist、steps、button、YouTube、embed、image、code、product、link cards、quote、facts、table of contents、series nav、latest posts、divider) site/下的區塊類型 JSON 和自包含的 Astro 元件- 用於共用設定(YouTube 隱私模式、聯盟揭露、文章集合)的公開
config路由 - 列出最新已發布項目及其解析後 URL 的公開
posts路由 - Block Kit 管理頁面:小工具目錄和設定指南