在Sitecore上实现面包屑

本文关键字:面包 实现 Sitecore | 更新日期: 2023-09-27 18:17:06

我只是想问这里是否有人已经在Sitecore中制作了面包屑。我目前正在做一个Sitecore 8 MVC项目,需要有一个面包屑。

目前我看到这个网站http://blog.ryanbailey.co.nz/2015/05/breadcrumbs-for-pages-in-sitecore.html。但它还不适合我,因为我不知道该引用什么。

我只需要知道如何获得我当前页面路径中的每个项目,我已经可以处理它了。

谢谢

在Sitecore上实现面包屑

应该这样做:

public ICollection<Item> GetBreadcrumbs(Item current, SiteContext site)
{
    Item homeItem = site.StartItem;
    List<Item> breadcrumbs = new List<Item>();
    while (current != null)
    {
        // You may want to add additional logic to opt in/out of 
        // the breadcrumb based on a template/field
        breadcrumbs.Add(current);
        if (current == homeItem)
            break;
        current = current.Parent;
    }
    breadcrumbs.Reverse();
    return breadcrumbs;
}

然后:

var breadcrumbs = GetBreadcrumbs(Context.Item, Context.Site);

可以取当前项,然后取它的所有祖先项。

var ancestors = currentItem.Axes.GetAncestors().ToList();

然后你可以得到主页项和过滤祖先,以删除站点核心和内容节点。

ancestors = ancestors.SkipWhile(i => i.ID != home.Id.ToID()).ToList();
public void GetBreadcrumbs(Item ParentItem)
        {
            List<BredCrumbDetails> lstBreadCrumbs = new List<BredCrumbDetails>();
            string strcurrenttitle = ParentItem.Name;
            Item currentitem = ParentItem;
            int i = 0;
            while (currentitem != null)
            {
                var ItemTemplateid = currentitem.TemplateID.ToString();
                var FolderTemplateId = "{}";
                if (ItemTemplateid != FolderTemplateId) //here we are removing folders
                {
                    BredCrumbDetails bcDetails = new BredCrumbDetails();
                    if (i == 0)
                    {
                        bcDetails.BCPageLink = null;
                        bcDetails.Title = currentitem.Name;
                        bcDetails.IsVisible = true;
                        lstBreadCrumbs.Add(bcDetails);
                    }
                    else
                    {
                        bcDetails.BCPageLink = currentitem.Paths.FullPath;
                        bcDetails.Title = currentitem.Name;
                        bcDetails.IsVisible = true;
                        lstBreadCrumbs.Add(bcDetails);
                    }
                    i++;
                    if (currentitem.Name == ("Home"))
                    {
                        break;
                    }
                    currentitem = currentitem.Parent;
                }
                else
                {
                    i++;
                    currentitem = currentitem.Parent;
                }
            }
            lstBreadCrumbs.Reverse();
            rptCrumbs.DataSource = lstBreadCrumbs;
            rptCrumbs.DataBind();
        }