2017-07-18 30 views
0

我試圖做一個模板,顯示它被放置的時間。我嘗試這樣做:如何在不使用#invoke的情況下僅在transcluding模板時替換魔術字?

This is a template ({{<includeonly>subst:</includeonly>CURRENTTIMESTAMP}}) 

但transcluded時,它會顯示爲This is a template ({{subst:CURRENTTIMESTAMP}}),而不是替代的時間戳。我然後嘗試

This is a template ({{{{{|safesubst:}}}CURRENTTIMESTAMP}}) 

但這並沒有代替它;時間戳會不斷更新。接下來,我試了

This is a template ({{<includeonly>{{{|safesubst:}}}</includeonly>CURRENTTIMESTAMP}}) 

但沒有骰子。我知道{{#invoke:}}可能,但我沒有這個選項。有人可以幫我嗎?

+0

模板如何知道某個頁面是否被編輯過?你可以使用這個模板,然後你的第一個例子就可以工作。否則,你會期望在哪裏存儲時間戳? – Tgr

+0

@Tgr目標是讓模板保存首次放置的時間(transcluded _or_ substitution),因爲我正在處理的wiki對替換不太瞭解。 –

+0

那麼,你不能用簡單的變形來做到這一點。 – Tgr

回答

0

考慮如何存儲模板。如果遞歸地替換模板,則模板的內容將存儲在包含頁面的wiki文本中,其中CURRENTTIMESTAMP將替換爲實際的時間戳記。如果您不覆蓋模板,則Wikitext將僅包含{{MyTemplate}},並且編輯的時間戳不會存儲在任何地方;當解析器呈現文章並遇到CURRENTTIMESTAMP時,它只會使用當前的時間戳。沒有辦法,#invoke或沒有。

你可以做的是將時間戳記寫入參數中,所以在包含頁面中你會寫{{MyTemplate|{{subst:CURRENTTIMESTAMP}}}},然後時間戳被存儲在頁面中。您可以創建一個包含該確切內容的包裝模板,以便用戶只需鍵入{{subst:MyTemplateWrapper}},這樣會更容易一些。儘管that's a bit more involved可以使模板顯示錯誤/添加錯誤類別,但不會使用替換。

+0

謝謝!我想我會跟你提到的第二個方法('{{SUBST:TemplateWrapper}}')去,如果transcluded添加一條錯誤消息。由於這已經回答了我的問題,我將其標記爲接受的:) –

+0

其實,我發現'{{{{{| safesubst:}}} CURRENTTIMESTAMP}}'更好地工作(編輯證明)。 –

相關問題