面包屑更改字段名称

时间:2017-10-30 11:57:39

标签: umbraco partial-views umbraco7 breadcrumbs

我的面包屑包含以下内容:

网站>第1站点>第二站点。

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

@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确保面包屑隐藏在主页上,因为我的主页的文档是“Home”。

第二个.Equal应该将“Website”改为“Home”。 “网站”也是我的DocumentAlias。

我正在使用Umbraco版本7.7.2

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

2 个答案:

答案 0 :(得分:1)

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

此外,检查您所在的级别可能更容易,而不是检查当前的文档类型别名:Model.Level == 1将检查您是否位于根(主页)。

当你正在做if (Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Website"))时,我想这会测试当前页面的文档类型,你想在哪里测试foreach中的当前项目。尝试:

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才能访问当前网页内容。< / p>

答案 1 :(得分:0)

我迟到了,但为了避免使用doctypes检查和所有逻辑,你可以做到以下几点:

在doctype中创建“标题”属性。这可以是一个合成或来自继承的doctype,甚至可以为Models Builder创建自己的基础模型。

创建一个像这样的扩展方法:

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>
    }