我的面包屑由以下内容组成:
网站>第一个站点>第二个站点。
我想将"网站"更改为"主页",这是我的代码:
@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>></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>></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>></span> //I would include this using CSS
}
@CurrentPage.TitleOrName()
</div>
}