====== 用表單自動新增 DW 頁面 ====== ===== 工具 ===== bureaucracy plugin action 用 template,並附: * 範本頁路徑 * 可以是一整套 namespace!:o * 也可以是該 namespace 原本就有的範本 * 所建頁面的位置、前綴 * 頁面名稱要引入多個其他欄位資訊時,所用的分隔符(所以頁面名稱也可以結合多個欄位的輸入資訊!:o) action template [template] [destination] [separator] 那範本有何格式?☞ https://www.dokuwiki.org/plugin:bureaucracy#creating_templates * 另可能也要參考 DW 內建的範本機制 FIXME 表單 FIXME: 條件式 addpage? ===== 參考 ===== https://www.dokuwiki.org/plugin:bureaucracy#action_modes ===== 實做 ===== 在 GHS 站上做一個快速新增 tweet 的表單: 我準備把日常 tweet 都放到 :diary namespace 下,所以先做個範本
範本: ==== @@標題:@@ ==== @@內文:|@@ {{tag>published @@標籤:|@@}}
* 我已經有用 templatepagename plugin 把 diary: namespace 的頁面範本改名為 tree_template 了,所以就直接先編輯 diary:tree_template * ''內文:|''、''標籤:|'' 裡面的 ''|''(pipeline),是用來讓欄位留空時,該處直接顯示空白內容(v2→3 才發現要這樣做),而不是顯示無意義的「內文:」 然後,在任何一頁(比方說就在 diary 這頁裡),新增下面的表單:
action template _ diary:%Y:%m:%d - date "日期:" textbox "頁面名稱後綴:" @ ! textbox "標題:" textarea "內文:" ! textbox "標籤:" ! submit
* 驚嘆號 ''!'' 表示該欄位非必填 * ''@'' 表示該欄位的值會被代入依 template 自動建立的頁面名稱中。在本例中,只會用到下面''頁面名稱後綴:''這欄所輸入的字串,所以到時候如果有輸入的話,頁面名稱就會變成 ''diary/某年/某月/某日-字串'' * template 後面指用 ''_'',就是使用 diary: 下找到的範本,本例就會是上面已建好的 diary:tree_template * 頁面名稱格式: * 如果用 ''diary:%Y:%m:%d''((日期格式依:[[https://www.php.net/manual/en/function.strftime.php|PHP: strftime - Manual]])) 就會一律是當天日期(v1 用的,但其實這不是我要的 * 如果用:''diary:@DATE(@@日期:@@,%%Y/%%m/%%d)@'',就可以順利吃到 ''日期:'' 選擇器中輸入的日期,然後自動分拆成 ''年/月/日'' 的資料夾層級,太棒了!我順利建了一個 1778/07/14「Long Live America」的推文。 後續改良: * 條件式選擇格式是 tweet 或一般日記 * 勾選「今天」的話,直接建立 ''diary:%Y:%m:%d'',就不用選日期 ↑哇,''addpage'' 只能用來選擇「額外」增加頁面,不是用來取代原本 ''action template'' 那邊新增的頁面啊 這樣做出來的表單比之前用的方法和 plugin 靈活多了,表單更完整! 也比我做成 iOS shortcut 的方式更方便!(因為 shortcut 只能逐步接受輸入內容,只要一步錯就得重來;表單的好處是都下好再離手) {{tag>未完成}}