首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Sitecore上实现Breadcrumbs

在Sitecore上实现Breadcrumbs
EN

Stack Overflow用户
提问于 2015-10-10 18:38:20
回答 3查看 3.9K关注 0票数 0

我只想问这里有没有人已经在Sitecore做了面包屑。我目前正在做一个需要面包屑的Sitecore 8 MVC项目。

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

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

谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-10-10 19:01:17

下面这样的代码应该可以做到:

代码语言:javascript
复制
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;
}

然后:

代码语言:javascript
复制
var breadcrumbs = GetBreadcrumbs(Context.Item, Context.Site);
票数 3
EN

Stack Overflow用户

发布于 2015-10-12 04:24:33

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

代码语言:javascript
复制
var ancestors = currentItem.Axes.GetAncestors().ToList();

然后,您可以获取home项并过滤祖先项以删除sitecore和content节点。

代码语言:javascript
复制
ancestors = ancestors.SkipWhile(i => i.ID != home.Id.ToID()).ToList();
票数 2
EN

Stack Overflow用户

发布于 2017-04-07 18:53:52

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33053030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档