【问题标题】:Kentico Document Get Page Meta Data Custom Page TypeKentico 文档获取页面元数据自定义页面类型
【发布时间】:2017-08-16 04:46:47
【问题描述】:

当尝试在自定义页面类型 TreeNode 上使用 GetStringValue() 检索 DocumentPageTitleDocumentPageDescription 时,结果总是作为传入方法的默认值(在本例中为空字符串)返回。

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

文档/页面的Meta选项卡中的各个字段确实有值,并且默认情况下正在成功呈现,例如<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?​​p>

感谢您提供的任何帮助。

【问题讨论】:

    标签: kentico


    【解决方案1】:
    ValidationHelper.GetString(CMS.DocumentEngine.DocumentContext.CurrentDocument.GetValue("DocumentPageDescription"), string.Empty)
    

    【讨论】:

    • 请不要只在此处发布代码。尝试解释为什么这可以解决问题。
    【解决方案2】:

    要检查两件事,第一,您确定要拉取的页面上的元数据可用吗?第二,您的 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));
    

    【讨论】:

    • 感谢您的建议。我认为我的问题与following 有关。如果自定义页面类型页面设置为从父级继承,则结果返回为 null。我能够通过DocumentContext.CurrentTitleDocumentContext.CurrentDescription 获得继承情况下的父元值。不继承时,通过 GetStringValue()TreeNode 对象上获取值工作正常。谢谢!
    • 我明白了,因为从父项继承时,该项目的描述列中没有存储实际数据,因此 GetValue 或 GetStringVlaue 为空。
    【解决方案3】:

    当自定义页面类型文档/页面从父/全局值继承时,DocumentPageTitleDocumentPageDescription 返回为 null。

    继承时,我能够使用以下方法获取属性,而在发生继承时回退到父值:

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

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

    感谢您的帮助和建议,不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多