Page 2 of 3

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Fri Jun 11, 2010 4:48 pm
by Peciura
How display image and description?
Products 2.8.2

Code: Select all

{* hierarchy report template *}
<h3>Hierarchy Data for {$hierarchy_item.name} ({$hierarchy_item.id})</h3>
{if isset($upurl)}
	<p><a href='{$upurl}' title='{$mod->Lang('parent')}'>{$mod->Lang('parent')}</a></p>
{/if}
{assign var='prodmod' value=$mod}

{if isset($parent)}
	<h4>This Node</h4>
	Name: {$parent.name}
	Description: {$parent.description}<br/>
{/if}

<h4>Child Nodes</h4>
{if isset($hierdata) && count($hierdata)}
	{foreach from=$hierdata item='node'}
		<h5>
			{if isset($node.$datakey.url)}
				<a href='{$node.$datakey.url}' title='{$node.$datakey.name}'>{$node.$datakey.name}</a>
			{else}
				{$node.$datakey.name}
			{/if}
		</h5>
		{if !empty($node.$datakey.image)}
			{capture assign='image'}{$hierarchy_image_location}/{$node.$datakey.image}{/capture}
			{capture assign='name'}{$node.$datakey.name}{/capture}
			{if !empty($node.$datakey.thumbnail)}
				{capture assign='thumb'}{$hierarchy_image_location}/{$node.$datakey.thumbnail}{/capture}
				<a href="{$image}" class="fancybox" rel="nofollow"><img src='{$thumb}' alt='{$name}'/></a>
			{else}
				<img src="{$image}" alt="{$name}"/>
			{/if}
		{/if} ({$node.$datakey.count})
		{if !empty($node.$datakey.description)}
			<p>Description: {$node.$datakey.description}</p>
		{/if}
		<br/><br/>
	{/foreach}
{/if}

<h5>Products matching this location in hierarchy</h5>
{Products hierarchyid=$hierarchy_item.id}

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Mon Jun 14, 2010 9:25 am
by maranc
Thanks a lot Peciura, I tested your template and hier are results:
- I see parent, descritption of parent and associated image
- When I click on parent I still dont see childs (I have some products in subhierarchy - but I can't display it)
- on parent count shows always '0'

Some better (description and image are showing), but hierarchy still not working.

BTW - I checked my database tabels and saw somthing like this:
1. cms_module_products_hierarchy - tabel, where is structure hierarchy
2. cms_module_products_prodtohier - tabel, witch was created on update module. Hier are 2 colums:
            product_id    hierarchy_id
1 10
2 10
5 6
6 8
7 10
8 12

Maybe hier is a problem? I'm not expert....

Marek A.

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Mon Jun 14, 2010 2:37 pm
by Peciura
ATM hierarchy action does not count products recursively.

This template should output hierarchy tree. To make it menu like you need to add  proper CSS or/and JavaScript.
{* hierarchy report template *}
{if !isset($hdepth)}
Hierarchy Data for {$hierarchy_item.name} ({$hierarchy_item.id})
{/if}

{if !isset($hdepth)}{assign var='hdepth' value='0'}{/if}
{*
// create a nested set of unordered lists
// if the active_hierarchy smarty variable exists
// and matches the current hierarchy id
// the active class will be given
// to the ul.  You may want to modify your summary template
// to set this variable
*}

{foreach from=$hierdata key='key' item='item'}
{strip}
{if isset($item.$datakey)}

{if $item.$datakey.count gt 0} {*hier title*}
{$item.$datakey.name} ({$item.$datakey.count})
{else}
{$item.$datakey.name} ({$item.$datakey.count})
{/if}
{if !empty($item.$datakey.thumbnail)} {*image*}
{capture assign='thumb'}{$hierarchy_image_location}/{$item.$datakey.thumbnail}{/capture}
{capture assign='image'}{$hierarchy_image_location}/{$item.$datakey.image}{/capture}

{else}

{/if}
{if !empty($item.$datakey.description)} {*description*}
Description: {$item.$datakey.description}
{/if}

{/if}
{if $key|is_numeric}
{* it's a child -- call this template again with the node *} {*this is recursive part*}
{include file=$smarty.template hierdata=$item hdepth=$hdepth+1}
{/if}

{/strip}
{/foreach}


{*Products matching this location in hierarchy*}
{*Products hierarchyid=$hierarchy_item.id*} {*not used at the moment*}

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Wed Jun 30, 2010 12:48 pm
by eleventh
How to activate "active_hierarchy" variable?

I want to set on hierarchy tree active link.

Thanks

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Wed Jun 30, 2010 4:07 pm
by tyman00
eleventh wrote: How to activate "active_hierarchy" variable?

I want to set on hierarchy tree active link.

Thanks
I think active_hierarchy is set by the module. I haven't had much of a chance to play with the new hierarchy setup, but that seems most logical to me.

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 01, 2010 5:02 am
by Peciura
What is 'active' hierarchy ?

Code: Select all

{assign var='active_hierarchy' value=53}
Would "activate" hierarchy with id = 53. Normally it depends on hierarchy-link pressed by visitor. It is set by module each time page reloads.

Or do you mean some JavaScript that expands and collapses hierarchy level without reloading page ?

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Wed Jul 28, 2010 1:06 pm
by NikNak
Hi Peciura
In the Hierarchy template it mentions this:
// create a nested set of unordered lists
// if the active_hierarchy smarty variable exists
// and matches the current hierarchy id
// the active class will be given
// to the ul.  You may want to modify your summary template
// to set this variable

My question is - how do I get the data to set this variable in the summary template?

This variable doesn't seem to be set by the module (as far as I can tell), so if you have to set it yourself in a template, where do you get the correct id from?

Kind regards
Nik

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Wed Jul 28, 2010 8:53 pm
by Peciura
I assume you have set

Code: Select all

$config['process_whole_template'] = false;
and {Products action='hierarchy'} is in page template ( probably on one or another side).
If that is true after you press any hierarchy you will get a list of product in {content} area. Variables created in {content} area (Products summary action) are available in page template.
So we have to find out what hierarchy products belongs to and save that value to variable. But i prefer to know not only hierarchy product is assigned to but also all parent hierarchy steps. So i named variable "active_hierarchy_path". Last member stores id of hierarchy product is explicitly assigned to ( class='current' ), the rest - parent hierarchies ( class='active' ).

This is fragment of summary template
...
{assign var='active_hierarchy_path' value=$Products->GetProductHierarchyPath($items[0]->id)}
{foreach from=$items item=entry}
...

Here is fragment of hierarchy template
{if $item.count gt 0}
{$item.name} ({$item.count})
{else}
{$item.name} ({$item.count})
{/if}

{else}
...

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 8:42 am
by NikNak
Hi Peciura
This sounds great but I cannot get these variables.
Process whole template is false. My left column is {Products action="hierarchy"}. Im running cmsms 1.8.1 and Products 2.8.3 . I have entered your code in the summary template.

Using {get_template_vars} I can see active_hierarchy_path is not set
$items->hierarchy_id is also unset and using {$items|@print_r} I cannot see a hierarchy_id in there at all.

In the var dump
Products = Object
summary =
I can see no action variable

???  I'm really confused now.

Kind regards
Nik

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 8:52 am
by Peciura
Just fixed previous post (summary fragment). I assume array {$items} contains products in summary mode. If it does not work post your summary template

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 9:48 am
by NikNak
Hi again - well nothing changed, so I made a complete fresh install of 1.8.1 with the latest Products module and the default templates.
$items[0]->hierarchy_id does not exist in the array
$items[0]->id does

Code: Select all

Array ( [0] => stdClass Object ( [id] => 3 [product_name] => Item 3 [details] => [price] => 0 [create_date] => 2010-07-29 10:18:44 [modified_date] => 2010-07-29 10:18:44 [taxable] => 1 [status] => published [weight] => 0 [sku] => [alias] => Item-3 [detail_url] => http://##/index.php?mact=Products,cntnt01,details,0&cntnt01parent=1&cntnt01hierarchyid=4&cntnt01returnid=15&cntnt01productid=3&cntnt01returnid=15 [product_name_link] => Item 3 [file_location] => http://##/uploads/Products/product_3 [fields] => Array ( ) ) [1] => stdClass Object ( [id] => 4 [product_name] => Item 4 [details] => [price] => 0 [create_date] => 2010-07-29 10:18:57 [modified_date] => 2010-07-29 10:18:57 [taxable] => 1 [status] => published [weight] => 0 [sku] => [alias] => Item-4 [detail_url] => http://##/index.php?mact=Products,cntnt01,details,0&cntnt01parent=1&cntnt01hierarchyid=4&cntnt01returnid=15&cntnt01productid=4&cntnt01returnid=15 [product_name_link] => Item 4 [file_location] => http://##/uploads/Products/product_4 [fields] => Array ( ) ) )
However - $Products->GetHierarchyPath($items[0]->id) gives no result.
nor does $Products->GetHierarchyPath(3)

Out of curiosity - do you know if the parent parameter does anything, or are you expected to change the hierarchy template to implement this. {Products action="hierarchy" parent="1"} as the entire hierarchy is always shown whatever the parent is set to.

Kind regards

Nik

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 10:12 am
by Peciura
NikNak : check it now.

EDIT: You were right, it my mod to have hierarchy_id for each product in summary template.
Sorry  ::)

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 10:22 am
by NikNak
Now it gets a result - great stuff. Thanks so much. I just don't know how users like me could ever work this out. I have spent a day on this!

But do you have any idea about the hierarchy template showing the entire hierarchy whatever parameter is add using parent="1".  With {Products action="hierarchy" parent="1"} I get:

Hierarchy Data for Things A (1)
Things A (0)
Subthings 1 (2)
Subthings 2 (2)
Things B (0)
Subthings 1 (1)
Subthings 2 (1)

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 11:34 am
by Peciura
I believe usage of  parameter "parent" should be fixed some time, because it is not working as expected and is interfering with module parameter "hierarchyid".

Re: Products 2.8 > how to use hierarchy and categorylist ?

Posted: Thu Jul 29, 2010 12:11 pm
by NikNak
Thanks again Peciura - I'm very grateful for your time

It is a shame there is not more documentation for this great module, as the things I have tried to do (I would have thought) were fairly standard, but have proved frustratingly difficult and time consuming.

PS - In the hierarchy template the code should have been 
{if isset($active_hierarchy_path) and $item.node.id|in_array:$active_hierarchy_path}

Kind regards
Nik