filter content / passing values from URL

filter content / passing values from URL

Thursday 11 August 2005 4:43:39 am - 10 replies

Modified on Wednesday 24 August 2005 6:13:47 am by Dominik Stoeppel

Author Message

Dominik Stoeppel

Wednesday 24 August 2005 6:14:59 am

Anyone ?

Kristof Coomans

Wednesday 24 August 2005 11:27:36 pm

There are some errors in your template.

The let tag for defining the variable referencelist should be closed.

There's a section-else for {section show=or($view_parameters.filter)}, but you've already closed this section.

Maybe this solves the problem.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Dominik Stoeppel

Thursday 25 August 2005 4:15:31 am

thx for helping.

I correct the code but nothing changed :(
Debug output don't show any errors.

Marko Žmak

Thursday 25 August 2005 5:44:40 am

Try with attribute ID instead of attribute identifier.

Also make sure your template code is correct. A good idea would be to test just a small piece of your code, the one that you think isn't working.

--
Nothing is impossible. Not if you can imagine it!

Hubert Farnsworth

Kristof Coomans

Thursday 25 August 2005 7:01:26 am

The attribute filter seems to be incorrect.

attribute_filter', array( 'and', array( 'branche', '=', $view_parameters.filter ) ) )

If you specify an attribute identifier, you also have to specify the class identifier in front of it.

I don't know which class you are trying to filter, but let's presume the class identifier is "testclass". The correct attribute filter would be

attribute_filter', array( 'and', array( 'testclass/branche', '=', $view_parameters.filter ) ) )

If that doesn't immediately work, maybe the class "testclass" (or the class attribute "branche") isn't cached yet in the class identifier cache. You can try to clear the class identifier cache through the admin interface.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Dominik Stoeppel

Thursday 25 August 2005 7:39:33 am

thx.

it must be a problem with selection attribute.

I have another attribute year (textline). Using this for testing my filter works.

{section show=or($view_parameters.filter) }
	{let referencelist=fetch( 'content', 'list', hash( 'parent_node_id', 116,
							 'attribute_filter', array( 'and', array( 'referenz/jahr', '=', $view_parameters.filter ) ) ) )} 
                {section var=filterlist loop=$referencelist sequence=array(bglight,bgdark)}
                    {node_view_gui view=line content_node=$filterlist}
                {/section}
		{$view_parameters.filter}
	{/let}
{section-else}
......

Kristof Coomans

Thursday 25 August 2005 10:58:03 pm

I found out that ezselection does not store the text value of the selected option. It stores the option's id. This id is also stored in sort_key_string. The value attribute of an HTML option should contain this id.

<SELECT  name="(filter)" size="1">
    <OPTION value="0">Service</OPTION>
    <OPTION value="1">Industry</OPTION>
    <OPTION value="2">Healthcare</OPTION>
</SELECT>

The order of id's depends on the order you entered your options when creating your content class. It starts counting with 0.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Kristof Coomans

Thursday 25 August 2005 11:20:02 pm

To make the list more dynamic, you could get the class attribute and loop over the options:

{def $classAttributes=fetch( 'class', 'attribute_list', hash( 'class_id', $class_id ) )}
    {foreach $classAttributes as $classAttribute}
        {if $classAttribute.identifier|eq('branche')}
            {def $options=$classAttribute.content.options}
                {foreach $options as $option}
                    <option value="{$option.id}">{$option.name|wash( xhtml )}</option>
                {/foreach}
            {undef $options}
        {/if}
    {/foreach}
{undef $classAttributes}

Replace $class_id with the id of your content class.

You'll have to fetch a list of class attributes because there's no function to fetch a specific class attribute.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Kristof Coomans

Thursday 25 August 2005 11:33:26 pm

I made a mistake in my last post, there seems to be a function to fetch a class attribute in the content module.

See http://ez.no/doc/ez_publish/technical_manual/3_6/reference/modules/content/fetch_functions/class_attribute

{def $classAttribute=fetch( 'content', 'class_attribute', hash( 'attribute_id', $classattribute_id ) )}
    {def $options=$classAttribute.content.options}
        {foreach $options as $option}
            <option value="{$option.id}">{$option.name|wash( xhtml )}</option>
        {/foreach}
    {undef $options}
{undef $classAttribute}

Replace $classattribute_id with the desired class attribute id.

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Dominik Stoeppel

Friday 26 August 2005 2:31:58 am

big thx Kristof.

Dynamic list in the form and filter is working.

Here is the complete template :


<div class="content-view-full">
	<h1>{$node.object.data_map.name.content|wash()}</h1>
	<form action={"content/action"|ezurl} method="post">
		<input type="hidden" name="DestinationURL" value="{$node.url_alias}" />
		<SELECT  name="(filter)" size="1">
		{def $classAttribute=fetch( 'content', 'class_attribute', hash( 'attribute_id', 279 ) )}
    		{def $options=$classAttribute.content.options}
        		{foreach $options as $option}
            		<option value="{$option.id}">{$option.name|wash( xhtml )}</option>
        		{/foreach}
    	{undef $options}
		{undef $classAttribute}
		</SELECT>
		<input type="submit" name="Submit" value="Go" />
	</form>


	{section show=or($view_parameters.filter) }
		{let referencelist=fetch( 'content', 'list', hash( 'parent_node_id', 116,
								 'attribute_filter', array( 'and', array( 'referenz/branche', '=', $view_parameters.filter ) ) ) )} 
	                {section var=filterlist loop=$referencelist sequence=array(bglight,bgdark)}
	                    {node_view_gui view=line content_node=$filterlist}
	                {/section}
			
		{/let}
	{section-else}
		 {let page_limit=10
	     list_items=array()
	     list_count=0}
	     {set list_items=fetch_alias( children, hash( parent_node_id, $node.node_id,
	                                                 offset, $view_parameters.offset,
	                                                 sort_by, $node.sort_array,
	                                                 limit, $page_limit ) )}
	     {set list_count=fetch_alias( children_count, hash( parent_node_id, $node.node_id ) )}
	
		<div class="content-view-children">
                {section var=child loop=$list_items sequence=array(bglight,bgdark)}
                    {node_view_gui view=line content_node=$child}
                {/section}
        </div>

            {include name=navigator
                     uri='design:navigator/google.tpl'
                     page_uri=$node.url_alias
                     item_count=$list_count
                     view_parameters=$view_parameters
                     item_limit=$page_limit}
            {/let}

{/section}

</div>

You must be logged in to post messages in this topic!

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.