【问题标题】:Best practice for querying Umbraco nodes查询 Umbraco 节点的最佳实践
【发布时间】:2016-08-30 12:35:54
【问题描述】:

我是 Umbraco CMS 的初学者,我注意到每次我需要查询节点时,我都依赖于常量 ID。

例如:

public static class Constants
{
    public static class Pages
    {
        public static class System
        {
            public const int Root = 1059;
            public const int Home = 1092;
            public const int Pressemeddelelse = 1143;
        }

        public const int GratisKontoComplete = 1181;
        public const int TilmeldNyhedsbrevComplete = 1182;
    }
}

当我需要获取节点时,上面的代码可以帮助我,例如@Umbraco.NiceUrl(Constants.Pages.System.Root);

现在我的问题是:

还有其他方法可以实现吗?如果内容编辑器删除了节点并创建了怎么办?节点 if 肯定会改变。 要我通过 NodeAlias 查询吗?但我不知道怎么做,我不想使用 uQuery,因为我正在使用最新的 Umbraco 版本 7.4.3 并使用 MVC。

【问题讨论】:

    标签: umbraco querying


    【解决方案1】:

    首先,您不应该使用 id 来检索节点。 有很多方法,但对我来说最简单可靠的方法是使用 linq 查询。 比如HOME、BLOG和COMMENT三个节点。现在home是父节点,BLOG和Comment是HOME节点的子节点。现在要检索父节点,请使用以下节点。

    Umbraco.TypedContentAtRoot().First();

    Model.Content.AncestorOrSelf(1).First()

    其中模型是当前节点。 您也可以使用此代码

    var rootNode = new Node(-1);

    所有aboce代码将帮助您获取根节点,即HOME节点,现在在获取根节点后,您现在可以使用SQL查询来获取HOME节点的所有子节点等等。例如,如果我想检索 BLOG 节点,那么我的代码将是

    'var Blog= rootNode.Children.First(x => x.DocumentTypeAlias == "Blog");'
    

    其中“DocumentTypeAlias”是 BLOG 节点的别名。 希望对你有帮助

    干杯

    【讨论】:

    • 你那里有模块或库,我可以像这样查询:UmbracoHelper.GetNodeByAlias("Blog"),然后它会返回给我 IPublishedContent。
    • 重要提示:DocumentTypeAlias 不是内容项本身的别名,它是文档类型的名称。所以 Naveeds 最后一个示例将返回使用文档类型“博客”的所有节点。要获取有关 UmbracoHelper 的更多信息,请查看此处:our.umbraco.org/documentation/Reference/Querying/UmbracoHelper
    • DocumentTypeAlias 是您要检索的内容的别名,我的查询只会返回博客内容。查询包含 .First ,它只返回第一次出现。感谢您以任何方式分享链接。它对我非常有用
    • 谢谢你们,我最终做了一个这样的助手 public IPublishedContent GetNodeByAlias(string alias) { var umbracoHelper = new UmbracoHelper(UmbracoContext.Current); var contentNode = umbracoHelper.TypedContentSingleAtXPath(String.Format("//{0}", alias)); return contentNode; } 我也同意 documentTypeAlias 将返回所有具有相同文档类型的项目,所以在我的情况下,我只会查询具有唯一性的唯一项目文档类型。
    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2020-10-13
    • 2013-03-16
    • 1970-01-01
    • 2013-10-02
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多