使用razor脚本生成页面标题 - umbraco

时间:2014-11-16 23:54:36

标签: razor umbraco page-title

所以我正在尝试创建一个脚本,根据页面的文档类型,如果在覆盖自定义标题输入中没有写入任何内容,则会出现某种预定义的标题标签格式。我已在主模板的title标记中插入宏,但继续收到错误加载Razor Script消息。

HTML

<title>
    <umbraco:Macro Alias="NewPageTitle" runat="server"></umbraco:Macro>
</title> 

脚本 -

@inherits umbraco.MacroEngines.DynamicNodeContext
@using umbraco.MacroEngines

    @{
      if(String.IsNullOrEmpty(@Model.tabName.ToString()) == false )
        {
          @Model.tabName
        }

      else if(@Model.DescendantsOrSelf("Country"))
        {
          <text>
            Holidays in @Model.Name
          </text>
        }

      else 
        {
          @Model.Name;
        }
    }

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试使用此代码。原始代码的问题在于您使用&#34; @ Model.DescendantsOrSelf(&#34; Country&#34;)&#34; 作为布尔值,它是一个列表。我还删除了 if(String.IsNullOrEmpty(@ Model.tabName.ToString()))的比较。

此外,如果将?umbDebugShowTrace = true 添加到URL的末尾,您可以获得一些有价值的调试信息。有一个名为&#34; Umbraco Debug&#34;的Chrome扩展程序。我用来快速访问查询字符串和信息。您可能会发现它很有用。

@inherits umbraco.MacroEngines.DynamicNodeContext
@using umbraco.MacroEngines

    @{
      if(String.IsNullOrEmpty(@Model.tabName.ToString()))
        {
          @Model.tabName
        }

      else if(@Model.DescendantsOrSelf("Country").Count() > 0)
        {
          <text>
            Holidays in @Model.Name
          </text>
        }

      else 
        {
          @Model.Name;
        }
    }

答案 1 :(得分:0)

非常简单,只需将以下代码添加到标题标记

即可
@Umbraco.Field("pageName")

将显示pageName,您也可以从文档类型添加自定义属性。 例如你添加了像“metaKeywords”这样的新属性,其值为“html,javascript,xml”,按以下方式获取值...

@Umbraco.Field("metaKeywords")

即使您不需要在模型中添加自定义属性