[英]Orchard custom token to store title
我有一個像這樣的自定義果園令牌
public void Describe(DescribeContext context)
{
context.For("Site", T("Site"), T("Site settings."))
.Token("RootUrl", T("RootUrl"), T("The current site's root url."));
context.For("Topic", T("Topic"), T("Topic contents."))
.Token("Title", T("Title"), T("Title of the topic"));
}
public void Evaluate(EvaluateContext context)
{
context.For("Site", _orchardServices.WorkContext.HttpContext.Request)
.Token("RootUrl", token => _orchardServices.WorkContext.HttpContext.Request.Url.GetLeftPart(UriPartial.Authority));
context.For<IContent>("Topic")
.Token("Title", content =>
{
int id = content.As<CommentPart>().Record.CommentedOn;
var contentItem = _contentManager.Get(id);
return contentItem.As<TitlePart>().Title;
})
.Chain("Title", "Title", content =>
{
int id = content.As<CommentPart>().Record.CommentedOn;
var contentItem = _contentManager.Get(id);
return contentItem.As<TitlePart>().Title;
});
}
在我的Orchard CMS中,我有一條規則,當添加評論時會發送一封電子郵件,因此在我鍵入的電子郵件的文本框中
{Topic.Title}
但是,這里從來沒有有人居住,有人能給我的黑暗角落帶來些許光芒嗎?
這里缺少的是上下文。 評估標記化字符串的代碼將提供一個上下文對象,它將作為評估令牌的對象。 通常,在該上下文上將有一個Content對象,該對象將傳遞到Content令牌的Lambda中。 在這里,您要告訴系統,如果它在上下文中找到類型為IContent的稱為“主題”的東西,則應由您的邏輯處理。 不幸的是,這永遠不會發生,因為調用代碼沒有將這樣的對象設置到上下文中。
從您的問題看來,您的意圖似乎是在添加評論時獲得評論的標題。 我認為,您可以只執行Content.DisplayText
,但是如果您必須開發自己的令牌,請將其附加到內容令牌上,而不是構建一個不會在您期望的位置進行評估的新根目錄。 因此,這將是Content之外的Topic令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.