14 Nov 2016

ATG 11.1 Merchandising Browse Customisation Part 2

Let's say we want to see child items for the postcode, city and county.
We should provide links definition in the /atg/remote/content/browse/ContentBrowseHierarchy.xml 

Insert the following into the xml so that Merchandising will know parent/child for each item:

<links id="postCodeLinks" parent-type="/cognity/estore/repository/AddressBookRepository:addressBookPostCode"> 
      <list-definition allow-circular-reference="false" visible="true" retriever="property" set-site-context-on-drilldown="false" allow-load="true" show-header="conditionally" id="postCodeChildStreets" show-count-on-header="false" allow-drilldown="true" child-type="/cognity/estore/repository/AddressBookRepository:addressBookStreet" show-count-on-children="false">
        <retriever-parameter name="propertyName" value="parentPostCodeId"/>
        <retriever-parameter name="reverseLink" value="true"/>
      </list-definition>
    </links>
    <links id="cityLinks" parent-type="/cognity/estore/repository/AddressBookRepository:addressBookCity"> 
      <list-definition allow-circular-reference="false" visible="true" retriever="property" set-site-context-on-drilldown="false" allow-load="true" show-header="conditionally" id="cityChildPostCodes" show-count-on-header="false" allow-drilldown="true" child-type="/cognity/estore/repository/AddressBookRepository:addressBookPostCode" show-count-on-children="false">
        <retriever-parameter name="propertyName" value="parentCityId"/>
        <retriever-parameter name="reverseLink" value="true"/>
      </list-definition>
    </links>
    <links id="countyLinks" parent-type="/cognity/estore/repository/AddressBookRepository:addressBookCounty"> 
      <list-definition allow-circular-reference="false" visible="true" retriever="property" set-site-context-on-drilldown="false" allow-load="true" show-header="conditionally" id="countyChildCities" show-count-on-header="false" allow-drilldown="true" child-type="/cognity/estore/repository/AddressBookRepository:addressBookCity" show-count-on-children="false">
        <retriever-parameter name="propertyName" value="parentCountyId"/>
        <retriever-parameter name="reverseLink" value="true"/>
      </list-definition>
    </links>

ATG 11.1 Merchandising Browse Customisation Part 1

While searching the internet I can't find good examples of the BCC Merchandising Browse customisation. So here it is

Create a file /atg/remote/content/browse/ContentBrowseHierarchy.xml that will be appended to the main configuration from DCS-UI

Be sure that your xml file is appended last so other modules is not affecting resulting xml. It might be necessary to add DCS-UI module into your ATG module manifest file among required modules so that xml from DCS-UI will come before the xml from your module. To check the resulting file please open component /atg/remote/content/browse/ContentBrowseManager and watch it's 'definitionFile' property. Check the order of xml files first.

ContentBrowseHierarchy.xml example for the newly created custom repository:
<?xml version="1.0" encoding="UTF-8" ?>
<browse-hierarchy xml-combine="append">
<browse-item id="home" xml-combine="append">
<browse-item reference-id="addressBook"/>
</browse-item>
<browse-item id="addressBook" label="Address Book" >
<browse-item reference-id="addressBookCounties"/>
<browse-item reference-id="addressBookCities"/>
<browse-item reference-id="addressBookPostCodes"/>
<browse-item reference-id="addressBookStreet"/>
</browse-item>
<browse-item  is-root="true" id="addressBookCounties" label="Counties" >
    <list-definition id="countyItems" retriever="query" child-type="/cognity/estore/repository/AddressBookRepository:addressBookCounty">
         <retriever-parameter name="query" value="ALL" />
    </list-definition>
</browse-item>
<browse-item is-root="true" id="addressBookCities" label="Cities">
    <list-definition id="cityItems" retriever="query" child-type="/cognity/estore/repository/AddressBookRepository:addressBookCity">
         <retriever-parameter name="query" value="ALL" />
    </list-definition>
</browse-item>
<browse-item is-root="true" id="addressBookPostCodes" label="PostCodes">
    <list-definition id="postCodeItems" retriever="query" child-type="/cognity/estore/repository/AddressBookRepository:addressBookPostCode">
         <retriever-parameter name="query" value="ALL" />
    </list-definition>
</browse-item>
<browse-item is-root="true" id="addressBookStreet" label="Streets" >
    <list-definition id="parentPostCodeItems" retriever="query" child-type="/cognity/estore/repository/AddressBookRepository:addressBookPostCode">
         <retriever-parameter name="query" value="id equals parentPostCodeId" />
    </list-definition>
    <list-definition id="streetsItems" retriever="query" child-type="/cognity/estore/repository/AddressBookRepository:addressBookStreet">
         <retriever-parameter name="query" value="ALL" />
    </list-definition>
</browse-item>
</browse-hierarchy>