Hi Mike,

Take a look at ecommerce/template/catalog/SideDeepCategory.ftl there's a macro there that has everything you need.

We adapted that to build our menus for us, the wrappers are attached to the context in the related groovy files.

Hope that helps.

Jason

On 16/11/2020 11:34, mike Butler wrote:
I am customising the main decorator for ecommerce and  have a Header.ftl which 
includes dropdown menus and I am working on a dropdown menu for categories.

What I have tried so far:
For the categories menu  I have included  ProductCategories.groovy as an action 
in the main-decorator (as used in the categories in the left panel of the main 
div) which I believe should provide a hash: “productCategoryID” which I can use 
in the Header.ftl.

Can you please confirm that is correct.

 From reading the ftl documentation I think I have to  use an ftl 
object-wrapper  but without an example I do not understand how to code that.


I have used <#list productCategoryId?keys as root> which is just a guess but it 
does produce a very nice menu with dropdown containing fifteen “productCategory” 
entries that’s “productCategory”  15 times  so at least I know something is happening.

I would also like to understand what and how I can display from the hash. 
Current test coding is below:

Any pointers/help with this menu would be a very much appreciated learning 
experience for me.

Regards
Mike Butler
Freelance Consultant

<#--Some sort of object wrapping please help -->

<ul class="dropdown-menu">
   <#if (productCategoryId?has_content)>
     <#list productCategoryId?keys as root>   ------- What would be the correct 
syntax?
       <li class="nav-item">
         <a class="nav-link" href="<@ofbizUrl>productCategoryId</@ofbizUrl>">$ 
{uiLabelMap.productCategory}</a>
        </li>
     </#list>
   <#else>
     <li class="nav-item">
       <a class="nav-link" href="#">${uiLabelMap.Category}</a>
     </li>
     <li class="nav-item">
       <a class="nav-link" href="#">${uiLabelMap.Product}</a>
     </li>
   </#if>
</ul>









Reply via email to