C# Umbraco站点范围的设置节点

C# Umbraco站点范围的设置节点,c#,asp.net-mvc,model-view-controller,umbraco,umbraco7,C#,Asp.net Mvc,Model View Controller,Umbraco,Umbraco7,我正在与Umbraco合作,想知道是否有一种简单的方法来创建站点设置节点 目前我有这个树结构 内容 家 项目1 项目2 项目2a 我想创造的是这样的东西 站点范围内的内容 内容 家 项目1 项目2 项目2a 站点范围内的内容将包含类似Google Analytics Url的内容,用户可以轻松更改 有什么方法可以做到这一点吗?编辑:有关处理页面重定向和无模板节点导致的404错误的方法,请参见底部 一个常见的节点结构可能是这样的,它允许站点特定的内容-这里的优点是所有站点内

我正在与Umbraco合作,想知道是否有一种简单的方法来创建站点设置节点

目前我有这个树结构

  • 内容
    • 项目1
    • 项目2
      • 项目2a
我想创造的是这样的东西

  • 站点范围内的内容
  • 内容
    • 项目1
    • 项目2
      • 项目2a
站点范围内的内容将包含类似Google Analytics Url的内容,用户可以轻松更改


有什么方法可以做到这一点吗?

编辑:有关处理页面重定向和无模板节点导致的404错误的方法,请参见底部

一个常见的节点结构可能是这样的,它允许站点特定的内容-这里的优点是所有站点内容都位于主节点下,用户无法在根节点中创建更多内容(前提是您已正确设置):

  • 主页[包含设置选项卡]
    • 第1页
    • 第2页
    • 联系我们
    • 关于
根据站点范围的设置信息量,您可以在Home DocumentType上创建一个设置选项卡,并将其全部存储在那里(如上所示);或者使用设置节点创建树结构(如下所示):

    • 第1页
    • 第2页
    • 联系我们
    • 关于
    • 设置[具有常规设置选项卡/属性]
      • 电子邮件模板[例如,存储表示邮件合并模板的其他节点]
或者,对于全局设置/内容(我可能有多个站点),我经常在根目录中创建一个单独的节点结构,以包含全局设置、电子邮件模板等:

    • 第1页
    • 第2页
    • 联系我们
    • 关于
  • 设置[具有全局设置选项卡/属性]
    • 电子邮件模板[例如,存储表示邮件合并模板的其他节点]
创建一个设置文档类型作为文件夹或容器,但不要给它一个模板,您的所有全局/站点范围的设置/数据内容都可以在该模板下组织

处理没有模板的节点 未为文档类型分配/创建模板而创建的文档类型(例如树的基本级别的节节点及其子节点)在有人试图访问其URL时将抛出404错误,因此应排除在网站中呈现的任何导航之外。任何手动输入您希望在其中找到节点的URL的用户,例如/设置将显示默认的404错误页面,因为该页面不存在

有几种方法可以缓解这种情况:

  • 使用别名
    umbracorredirect
    并使用
    ContentPicker
    数据类型向DocumentType添加属性

  • 创建一个自定义404错误页面,并将Umbraco配置设置为使用该页面而不是默认页面

  • 如果使用第一个选项,则可以设置默认情况下希望用户查看的页面-通常是主页

    如果您在404错误页面中有一些自定义逻辑(比如根据URL查找最接近的匹配页面),或者使用SEO检查器之类的工具来处理404错误和重定向,那么第二个选项就很好了

    通过简单地确保这些节点在网站中的URL中根本看不到,这可以通过对导航结构(菜单、网站地图等)进行编码来排除它们,从而缓解很多问题


    注意:我通常会确保它们也被任何sitemap.xml生成器排除,这样搜索引擎就不会尝试为它们编制索引。您还可以将它们添加到robots.txt文件中。

    是否可以将“项目”节点移动到主节点下?瞧,主节点可以包含所有站点范围的设置。这是通常的做法。嗨,Jannik,这就是我目前的做法,但是我正在寻找一个节点,用户可以在其中输入可在站点范围内使用的数据。像“束缚项目”(用户可以在束缚部分选择4个节点)“谷歌分析Url”(用户可以输入Url)非常好,谢谢Robert。快速问题:有没有办法阻止用户导航到创建的节点?例如,如果我在根目录下创建一个节点“Settings”,它的url将是domain/Settings。有没有办法不抛出404错误而不是执行URL重定向到/home?如果用户试图转到提到的节点,他们应该抛出404错误,因为此URL不存在:域/设置。如果要在转到域/设置时将它们重定向到主页,则应设置一个@MarkoJ。是-有几种方法可以处理404错误;我个人使用SEOChecker和一个定制的404错误页面;但是在过去,正如您所提到的,我们也在那些没有模板的页面上设置了重定向。我们能否以强类型方式(使用model builder)访问父节点的属性(如设置)?绝对-IPublishedContent对象具有父(或ParentId)属性,您可以使用Umbraco API以强类型模型的形式检索该对象。