痕迹导航更改字段名称



我的面包屑由以下内容组成:

网站>第一个站点>第二个站点。

我想将"网站"更改为"主页",这是我的代码:

@if (!Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Home"))
    {
        <div class="breadcrumb" itemprop="breadcrumb">
            @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level"))
            {
                if (Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Website"))
                {
                    <p>test</p><a class="breadcrumb" href="@level.Url">Home</a>
                }
                else
                {
                    <a class="breadcrumb" href="@level.Url">@level.Name</a>
                }
                <span>&gt;</span>
            }
            @CurrentPage.Name
        </div>
    }

第一个.Equals 确保面包屑隐藏在主页上,因为我主页的文档别名是"主页"。

第二个.平等应将"网站"更改为"主页"。"网站"也是我的文档别名。

我正在使用 Umbraco 版本 7.7.2

有谁知道为什么这不起作用?

我建议使用Model.DocumentTypeAlias来检查当前页面的文档类型。

此外,检查您所处的级别可能比检查当前文档类型别名更容易:Model.Level == 1会检查您是否在根目录(主页)。

当你做if (Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Website"))时,我会想象这是在测试当前页面的文档类型,因为你想测试当前项目。尝试:

if (level.DocumentTypeAlias.Equals("Website"))
{
    ...

完全固定示例:

@if (Model.Level != 1)
{
    <div class="breadcrumb" itemprop="breadcrumb">
        @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level"))
        {
            if (level.DocumentTypeAlias.Equals("Website"))
            {
                <p>test</p><a class="breadcrumb" href="@level.Url">Home</a>
            }
            else
            {
                <a class="breadcrumb" href="@level.Url">@level.Name</a>
            }
            <span>&gt;</span>
        }
        @CurrentPage.Name
    </div>
}

请注意,如果您的页面继承自Umbraco.Web.Mvc.UmbracoTemplatePage而不是Umbraco.Web.Mvc.UmbracoViewPage,您将需要编写Model.Content而不仅仅是Model才能访问当前页面内容。

我迟到了,但是,为了避免使用文档类型检查和所有这些逻辑,您可以执行以下操作:

在文档类型中创建"标题"属性。这可以是组合或继承的文档类型,甚至可以为模型生成器创建自己的基本模型。

创建一个扩展方法,如下所示:

public static class Extensions
{
    public static string TitleOrName(this IPublishedContent content)
    {
         if (content.HasValue("title")) return content.GetPropertyValue<string>("title");
         else return content.Name;
    }
}

然后,您可以像这样在面包屑上使用它:

@if (!Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Home"))
    {
        <div class="breadcrumb" itemprop="breadcrumb">
            @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level"))
            {
                    <a class="breadcrumb" href="@level.Url">@level.TitleOrName()</a>                    
                <span>&gt;</span> //I would include this using CSS
            }
            @CurrentPage.TitleOrName()
        </div>
    }

相关内容

  • 没有找到相关文章

最新更新