By default, breadcrumbs navigation ignore the property "hideInNav". 
We preferred to add another property to dialogs, "hideInBreadcrumbs", to have 
more flexibility (sometimes we want the page to appear in breadcrumbs but not 
in nav..)

To make it work, you have to work a little bit in Java and Freemarker.
In M5, you can define new areas. This is my recipe.. breadcrumbs are managed as 
area. 
Create a new model class for your area like this: 

[code]package ***.*****.magnolia.model;

import info.magnolia.jcr.util.NodeTypes;
import info.magnolia.jcr.util.PropertyUtil;
import info.magnolia.module.templatingkit.functions.STKTemplatingFunctions;
import info.magnolia.module.templatingkit.navigation.Link;
import info.magnolia.module.templatingkit.templates.AbstractSTKTemplateModel;
import info.magnolia.objectfactory.Components;
import info.magnolia.rendering.model.RenderingModel;
import info.magnolia.rendering.template.AreaDefinition;
import info.magnolia.templating.functions.TemplatingFunctions;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.inject.Inject;
import javax.jcr.Node;
import javax.jcr.RepositoryException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BreadcrumbAreaModel<RD extends AreaDefinition> extends 
AbstractSTKTemplateModel<RD> {

        private static Logger log = 
LoggerFactory.getLogger(BreadcrumbAreaModel.class);

        @Inject
        public BreadcrumbAreaModel(Node content, RD definition, 
RenderingModel<?> parent, STKTemplatingFunctions stkFunctions, 
TemplatingFunctions templatingFunctions) {
                super(content, definition, parent, stkFunctions, 
templatingFunctions);
        }

        public Collection<Link> getBreadcrumb() throws RepositoryException {
                List<Node> ancestors = stkFunctions.ancestorsInSite(content, 
NodeTypes.Page.NAME);

                List<Link> items = new ArrayList<Link>();
                for (Node current : ancestors) {
                        final boolean hideInNavigation = 
PropertyUtil.getBoolean(current, "hideInNav", false);
                        if (!hideInNavigation) {
                                items.add(Components.newInstance(Link.class, 
current));
                        }
                }
                items.add(Components.newInstance(Link.class, content));
                return items;
        }

}[/code]

Now, create in configuration (prototype) your breadcrumb area (extras area is 
just for my website.. you can put wherever you need): 

[code]/templates/prototype/areas/extras/areas/breadcrumb
templateScript = /templates/***-*****/pages/global/breadcrumb.ftl
modelClass = ***.*****.magnolia.model.BreadcrumbAreaModel[/code]

And this is the FTL: 

in extras area FTL: 
[code][@cms.area name="breadcrumb" content=content?parent/][/code]

in breacrumb FTL: 
[code][#assign breadcrumb = model.breadcrumb!]
[#if breadcrumb?size > 0]
<p class="breadcrumb">
[/#if]
[#list model.breadcrumb as item]

[#if item_has_next]
        <a href="${item.href}">${item.navigationTitle}</a> <span 
class="icon-arrow-right8"></span> 
[#else]
        ${item.navigationTitle}
[/#if]

[/#list]
[#if breadcrumb?size > 0]
</p>
[/#if][/code]

HTH, Matteo

-- 
Context is everything: 
http://forum.magnolia-cms.com/forum/thread.html?threadId=997ba5dc-aa51-4f4b-ab59-61d46f8c96f4


----------------------------------------------------------------
For list details, see http://www.magnolia-cms.com/community/mailing-lists.html
Alternatively, use our forums: http://forum.magnolia-cms.com/
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------

Reply via email to