模組:Infobox/Adapter/創作者/doc
出自幻跡百科
更多操作
此頁面為 模組:Infobox/Adapter/創作者 的說明文件
創作者 Adapter
這是創作者資料與通用 Infobox renderer 之間的轉接層。
目前資料流:
創作者正式模板參數
+
自訂資訊 subobject
+
平台帳號 subobject
+
EntitySchema
+
Infobox Schema
↓
normalized Infobox model
↓
模組:Infobox
目前負責的事情
本 Adapter:
- 載入 模組:Infobox/Schema/創作者
- 建立代表圖片 presentation
- 將作品形式多值參數轉成普通 Infobox row
- 查詢 page-local 自訂資訊
- 查詢平台帳號
- 建立 collection / section
- 將 normalized model 交給 模組:Infobox
作品形式
作品形式是 Creator 的正式 Entity field。
資料來源為:
{{創作者
|作品形式=漫畫;2D動畫;遊戲
}}
Template 同時:
- 將值寫入 屬性:作品形式。
- 將原始 template parameter 傳給 Adapter。
Adapter 不需要再從 SMW 查詢同一筆正式欄位。
它會將分號分隔的值轉成:
漫畫、2D動畫、遊戲
並建立:
type = row label = 作品形式 value = 漫畫、2D動畫、遊戲
如果值不存在,就不建立 row。
自訂資訊
自訂資訊來源為:
查詢後使用:
呈現。
排序依:
自訂欄位順序 自訂欄位標籤
自訂資訊屬於 optional collection。
當目前頁面沒有任何自訂欄位時,query 使用空的 default,因此不產生 SMW 的「沒有結果」文字。
平台帳號
平台帳號來自 模板:平台帳號 建立的 subobject。
查詢依:
帳號順序 帳號平台
排序。
平台帳號 query 同樣使用空的 default,因此不存在資料時不輸出「沒有結果」文字。
Query isolation
同一 Creator page 可以存在不同種類的 subobject:
平台帳號 自訂欄位
所以 query 除了:
[[-Has subobject::頁面]]
還會要求對應的識別 Property:
[[帳號平台::+]]
或:
[[自訂欄位標籤::+]]
避免不同 subobject 類型互相污染。
Deferred query
平台帳號和自訂資訊使用:
正式 Creator template parameters,例如代表圖片與作品形式,不需要經由 deferred SMW query 再讀回。
責任邊界
Adapter 知道:
- Creator 如何取得資料
- Creator 如何轉成 generic Infobox model
Renderer 不知道:
- 作品形式是什麼
- 帳號平台是什麼
- 自訂欄位是什麼
- Creator EntitySchema 的領域規則
這些領域知識都應停留在 Adapter / Schema 層。