顯示頁面舊版反向連結Copy this pageExport to Markdown輸出PDF檔案Fold/unfold allNew PageNew Folder回到頁頂Add Tags 本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。 ====== 用表單自動新增 DW 頁面 ====== ===== 工具 ===== <span imp>bureaucracy plugin</span> action 用 template,並附: * 範本頁路徑 * 可以是一整套 namespace!:o * 也可以是該 namespace 原本就有的範本 * 所建頁面的位置、前綴 * 頁面名稱要引入多個其他欄位資訊時,所用的分隔符(所以頁面名稱也可以結合多個欄位的輸入資訊!:o) <code>action template [template] [destination] [separator]</code> 那範本有何格式?☞ https://www.dokuwiki.org/plugin:bureaucracy#creating_templates * 另可能也要參考 DW 內建的範本機制 FIXME 表單 FIXME: <code> </code> 條件式 addpage? ===== 參考 ===== https://www.dokuwiki.org/plugin:bureaucracy#action_modes ===== 實做 ===== 在 GHS 站上做一個快速新增 tweet 的表單: 我準備把日常 tweet 都放到 :diary namespace 下,所以先做個範本 <div tip>範本: <code> ==== @@標題:@@ ==== @@內文:|@@ {{tag>published @@標籤:|@@}} </code> </div> * 我已經有用 templatepagename plugin 把 diary: namespace 的頁面範本改名為 tree_template 了,所以就直接先編輯 diary:tree_template * ''內文:|''、''標籤:|'' 裡面的 ''|''(pipeline),是用來讓欄位留空時,該處直接顯示空白內容(v2→3 才發現要這樣做),而不是顯示無意義的「內文:」 然後,在任何一頁(比方說就在 diary 這頁裡),新增下面的表單: <div tip> <code> <form> action template _ diary:%Y:%m:%d - date "日期:" textbox "頁面名稱後綴:" @ ! textbox "標題:" textarea "內文:" ! textbox "標籤:" ! submit </form> </code> </div> * 驚嘆號 ''!'' 表示該欄位非必填 * ''@'' 表示該欄位的值會被代入依 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)@'',就可以順利吃到 ''日期:'' 選擇器中輸入的日期,然後自動分拆成 ''年/月/日'' 的資料夾層級,太棒了!<span ex>我順利建了一個 1778/07/14「Long Live America」的推文。</span> 後續改良: * 條件式選擇格式是 tweet 或一般日記 * 勾選「今天」的話,直接建立 ''diary:%Y:%m:%d'',就不用選日期 ↑哇,''addpage'' 只能用來選擇「額外」增加頁面,不是用來取代原本 ''action template'' 那邊新增的頁面啊 這樣做出來的表單比之前用的方法和 plugin 靈活多了,表單更完整! 也比我做成 iOS shortcut 的方式更方便!(因為 shortcut 只能逐步接受輸入內容,只要一步錯就得重來;表單的好處是都下好再離手) {{tag>未完成}} 上一次變更: 2020/09/01 01:20(外部編輯)