我的面包屑包含以下内容:
网站>第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>></span>
}
@CurrentPage.Name
</div>
}
第一个.Equals确保面包屑隐藏在主页上,因为我的主页的文档是“Home”。
第二个.Equal应该将“Website”改为“Home”。 “网站”也是我的DocumentAlias。
我正在使用Umbraco版本7.7.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>></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>></span> //I would include this using CSS
}
@CurrentPage.TitleOrName()
</div>
}