Kentico文档获取页面元数据自定义页面类型

Kentico文档获取页面元数据自定义页面类型

问题描述:

当尝试在自定义页面类型TreeNode上使用GetStringValue()检索DocumentPageTitleDocumentPageDescription时,结果总是会返回为传递给方法的默认值(在此例中为空字符串) 。Kentico文档获取页面元数据自定义页面类型

我能够成功检索其他列值以及标准文档属性,如DocumentName,DocumentIDAbsoluteURL,但不是文档元属性。

在文件/页面选项卡中的各个领域确实有值,并正在默认情况下,如<meta name="description" content=".." />

// returns empty string 
string documentPageDescription = DocumentContext.CurrentDocument.GetString("DocumentPageDescription", string.Empty); 

// returns empty string 
TreeNode document = parameters[0] as TreeNode; 
string documentPageDescription = document.GetStringValue("DocumentPageDescription", string.Empty); 

我试过设置从页面选项继承领域的渲染成功键入到“页面(菜单项)”,但没有帮助。

自定义页面类型是否需要从某个特定对象继承,或者是否已激活特定设置才能访问这些值?或者如果我认为是TreeNode实际上不是,我怎么能从这个对象具有以前列出的属性可用的TreeNode?

感谢您提供任何帮助。

DocumentPageTitleDocumentPageDescription都回来为空时,自定义页面类型文件/页面从父/全局值继承。

我能够使用以下时继承,而回落至父值继承正在发生时获得的属性:

string documentPageTitle = document.GetStringValue("DocumentPageTitle", DocumentContext.CurrentTitle); 

这种方法来自于以下问题上Kentico DevNet

谢谢你的帮助和建议,很感激。

ValidationHelper.GetString(CMS.DocumentEngine.DocumentContext.CurrentDocument.GetValue("DocumentPageDescription"), string.Empty) 
+1

请不要在这里发布代码。试着解释为什么这能解决问题。 – loki

有两件事要检查,一个,你确定元数据可以在你正在拉的网页上?二,你的API实际上是拉该页面的所有数据吗?

我在测试中使用过这些数据,并且都返回了元数据。

var page = DocumentHelper.GetDocuments().Path("/Articles/Coffee-Beverages-Explained").FirstObject; 
Response.Write(page.GetStringValue("DocumentPageDescription", string.Empty)); 

TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser); 
TreeNode tn = tree.SelectNodes().OnCurrentSite().Path("/Articles/Coffee-Beverages-Explained").FirstObject; 
Response.Write(tn.GetStringValue("DocumentPageDescription", string.Empty)); 
+0

谢谢你的建议。我认为我的问题是关于[下面](https://devnet.kentico.com/questions/getting-the-metadata-of-a-page-via-expression)。如果自定义页面类型页面设置为从父类继承,则结果会返回为空。我可以通过“DocumentContext.CurrentTitle”和“DocumentContext.CurrentDescription”获得继承情况下的父元数据值。当不继承时,通过'TreeNode'对象上的'GetStringValue()'获取值可以正常工作。谢谢! –

+0

我看到了,因为从父项继承时,该项目的描述列中没有存储实际数据,因此GetValue或GetStringVlaue将为空。 – Rui