1

見栄えのするパンくずリストを作成する必要があります。JSPで正常に動作する次のコードがあります。しかし、「absParent」などを取得するためにcurrentStyleオブジェクトで適切なメソッドを取得していないため、コードを見栄えのするものに変換するのに苦労しています。どんな助けでも大歓迎です!!

        <%@ include file="/libs/foundation/global.jsp" %>
        <%

            final int startLevel = currentStyle.get("absParent", 3);
            final int endLevel = currentPage.getDepth() - currentStyle.get("relParent", 0);
            final int minItems = currentStyle.get("minItems", 2);
            if (startLevel <= endLevel - minItems) {
             %><section class="breadcrumbs"><%
                for (int level = startLevel+1; level < endLevel; ++level) {
                    Page itemPage = currentPage.getAbsoluteParent(level);
                    if (itemPage == null || !itemPage.isValid() || itemPage.isHideInNav()) {
                        continue;
                    }

                    final String pagePath = itemPage.getPath() + ".html";   
                    final String pageTitle = itemPage.getNavigationTitle();

                    String className = "breadcrumb-item-"+level;
                    if (level == startLevel) className += " breadcrumb-first";
                    if (level == endLevel-1) className += " breadcrumb-last";

                    pageContext.setAttribute("className", className);%>
                <section class="breadcrumbs ">
                        <a href="<%= xssAPI.getValidHref(pagePath) %>" class="breadcrumb-item"><%= xssAPI.encodeForHTML(pageTitle) %></a>
                </section>    

                <%} %>
            </section><%
            }

        %>
4

2 に答える 2

2

ブレッドクラムを作成するには、WCMuse クラスを作成し、それをこのコンポーネントに含める必要があります。

<div 
    data-sly-use.breadcrumb="${'com.mySite.components.BreadcrumbUse'}">
            <!-- + Breadcrumb component + -->
            <div class="breadcrumb component">
                <div class="breadcrumb_nav_bar clearfix"
                    data-sly-test="${breadcrumb.navList}"
                    data-sly-list.element="${breadcrumb.navList}">
                    <p data-sly-test="${!elementList.last}">
                        <a href="${element.path}.html">${element.title ||
                            element.navigationTitle || element.name}</a>
                    </p>
                    <p data-sly-test="${elementList.last}">${element.title ||
                        element.navigationTitle || element.name}</p>
                </div>
            </div>
            <!-- - Breadcrumb component - -->
</div>

WCMUse クラスのコード サンプル:

Public class BreadcrumbUse extends WCMUse
{
    private List<Page> navList = new ArrayList<Page>();

    @Override
    public void activate() throws Exception
    {
        setBreadCrumbItems();
    }

    private void setBreadCrumbItems()
    {
        long level = 4L;
        long endLevel = 1L;
        int currentLevel = getCurrentPage().getDepth();
        while (level < currentLevel - endLevel)
        {
            Page trailPage = getCurrentPage().getAbsoluteParent((int) level);
            if (trailPage == null)
            {
                break;
            }
            this.navList.add(trailPage);
            level++;
        }
    }

    public List<Page> getNavList()
    {
        return this.navList;
    }

}
于 2016-01-13T22:06:39.537 に答える