iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 23
1

在lektor中,model扮演著很重要的角色(當然content及template也是)。接下來會以models/page.ini檔案作為範例,說明model的各項特性:

[model]
name = Page
label = {{ this.title }}

[fields.title]
label = Title
type = string
size = large

[fields.body]
label = Body
type = markdown

==當lektor專案資料夾中,models裡有page.ini,會發生甚麼事?==

model項目中,設定了name及label。label設定為this.title,其title為其設定的欄位,因此每一個page顯示的label會依其title欄位的內容而定。

models

[model]下可設定以下資訊:

  • name:model名稱,通常跟檔名相同。
  • label:設定於template中使用的表達式。
  • hidden:選擇是否於新增頁面中隱藏,選是的話,新增頁面無法指定此model。主要應用於特定的頁面中,像是blog或是project等等。
  • protected:選擇是否被保護,選是,以此model生成的頁面無法在編輯模式中刪除。
  • inherits:這邊可以選擇要繼承的model名稱 ,繼承後會擁有所有該model的設定與欄位。

fields

model中可設定各種不同類型的欄位,每個欄位裡可以設定該欄位的資訊,欄位設定為[fields.name]

  • label:該欄位的標籤名稱。
  • description:非必要資訊,可放置更詳細資訊,顯示於編輯模式中。
  • addon_label:算是label的附屬標籤資訊,顯示在填入欄位的右邊,讓填寫的使用者可以更了解此欄位的狀態,如單位等。
  • width:設定在編輯模式中的欄位大小,如1/4,1/2等。
  • size:顯示在編輯模式上的大小,分為normal, small, large
  • type:欄位的類型,可參考field types

attachments

在model設定中,可額外設定附件,只要在model.ini中加入[attachments]即可,以下為attachments底下的設定資訊:

  • enabled:若設定no,則此頁面將不會有附件,就算原本的資料夾中有檔案,也不會顯示在編輯模式中。
  • model:可設定所有附件套用的model。
  • order_by:設定排列方式。
  • hidden:預設為false。

children

若有設定子頁面,可在model中設定[children]。相關設定可參考Children & Pagination

model擇定方式

lektor中會設定許多model, template, content,並且互相都有關聯。有時候單一model會對到不同的content,為了避免系統出現混淆,lektor定下了model擇定的步驟。

  1. 如果model已經被其它model指定為子層,那就會以此設定執行,包含頁面設定等等。
  2. content資料夾與model名稱一樣,該content將以此model設定去運作。
  3. 如果都沒有找到對應的model,會使用page.ini。
  4. 如果連page.ini都沒有,那就會以none為設定,就像在contents.lr中設定_model: none

實際操作

來實際操作一下!

首先我在page.ini中調整內容:

[model]
name = Page
label = {{ this.title }}

[fields.title]
label = 標題
description = 請輸入標題名稱
width = 1/2
type = string

[fields.loading]
label = 進度
description = 請輸入項目進度
addon_label = %
width = 1/2

[fields.body]
label = Body
type = markdown

依照以上的內容,標題跟進度會在同一列,各分一半的欄位空間,並且都有描述資訊,告知使用者要怎麼填。而進度的部分,右邊有設定%讓填寫的人知道使用單位,以下是運行的顯示成果畫面。

1570431533203

團隊系列文

CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
King Tzeng - IoT沒那麼難!新手用JavaScript入門做自己的玩具~
Hina Hina - 陣列大亂鬥
阿斬 - Python 程式交易 30 天新手入門
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
塔塔默 - 用Python開發的網頁不能放到Github上?Lektor說可以!!
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。


上一篇
裝上強力的武器,Lektor外掛介紹
下一篇
一條龍的服務,發布專案依舊不馬虎
系列文
用Python開發的網頁不能放到Github上?Lektor說可以!!31

尚未有邦友留言

立即登入留言