在 Sitecore 上实施面包屑导航

问题描述 投票:0回答:4

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

目前我看到了这个网站http://blog.ryanbailey.co.nz/2015/05/breadcrumbs-for-pages-in-sitecore.html。但它对我来说还不起作用,因为我不知道该参考什么。

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

谢谢

c# asp.net-mvc sitecore sitecore8 sitecore-mvc
4个回答
3
投票

类似这样的事情应该做到:

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);

2
投票

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

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

然后您可以获取主页项目并过滤祖先以删除 sitecore 和内容节点。

ancestors = ancestors.SkipWhile(i => i.ID != home.Id.ToID()).ToList();

0
投票
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();

        }

0
投票

您可以参考下面的链接以获取有关 sitecore 中面包屑的更多信息 [1]:https://devkheradiya.hashnode.dev/unlocking-breadcrumb-navigation-in-sitecore-a-step-by-step-guide-to-enhancing-user-journeys

© www.soinside.com 2019 - 2024. All rights reserved.