| Tristan Koen
                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Thursday 07 August 2003 3:16:12 pm 
                                                                
                                                                 I am having a problem that is driving me absolutely crazy. If there is anyone out there that can see what I am doing wrong, I would really appreciate it. 
In my code I set a variable{default myVar=47} where 47 is a specific node_id I want to exclude.
 My code then goes: 
{let folder_list=fetch(content, list, hash(parent_node_id, 47, sort_by, array(array(priority))))}{section name=Folder loop=$folder_list}
 <h1>{$Folder:item.name}</h1>
 {let item_list=fetch(content, tree, hash(parent_node_id, $Folder:item.node_id, class_filter_type,exclude, class_filter_array,array(1), sort_by,array(array(published,false()))))} 
{section loop=$Folder:item_list show=ne($:item.node_id,$myVar)}Item node id: {$Folder:item.node_id} <br />
 Latest node id: {$myVar} <br />
 
{/section}{/let}
 
{/section}{/let}
 For some reason, I cannot get the {section show=ne(...)} bit to work. That particular node (it is an article) keeps getting displayed.  I am now getting desperate. Regards, Tristan | 
                                                
                                                                                                                                                        
                                                        | Tristan Koen
                                                                                                                             | Friday 08 August 2003 12:36:49 am 
                                                                 Hi Jan, 
Thanks for the suggestion, but it still doesn't work. There are no debug warnings or errors.
 The cache has been cleared.
 
I have pasted the full source code below:{default latest_item_id=0}
 
{* Fetch the latest article from the tree and assign its node_id to $latest_item_id *}{let latest_article=fetch('content',tree,hash(parent_node_id, 47, sort_by,array(published,false())))}
 {section loop=$latest_article max=1}
 {set latest_item_id=$:item.node_id}
 <h2>{$:item.data_map.title.content}</h2>
 {$:item.data_map.intro.content.output.output_text}
 <p><a href={concat('content/view/full/',$:item.node_id)|ezurl}>[ Read More... ]</a></p>
 {/section}
 {/let}
 
{* Fetch the list of folders contained in the library folder (node_id=47) *}{let folder_list=fetch(content,list,hash(parent_node_id,47,sort_by,array(array(priority))))}
 {section name=Folder loop=$folder_list}
 <h1>{$Folder:item.name}</h1>
 
{* Fetch a list of all articles contained in each library folder. Exclude the article with node_id = $latest_item_id *}{let item_list=fetch(content,tree,hash(parent_node_id,$Folder:item.node_id,class_filter_type,exclude,class_filter_array,array(1),sort_by,array(array(published,false()))))}
 {section loop=$Folder:item_list max=1 show=$:item.node_id|ne($latest_item_id)}
 Latest story id is {$latest_item_id}<br />
 Current story id is {$:item.node_id}<br />
 <h2>{$:item.data_map.title.content}</h2>
 {$:item.data_map.intro.content.output.output_text}
 <p><a href={concat('content/view/full/',$:item.node_id)|ezurl}>[ Read More... ]</a></p>
 {/section}
 <ul>
 {section loop=$Folder:item_list offset=1}
 <li><a href={concat('content/view/full/',$:item.node_id)|ezurl}>{$:item.data_map.title.content}</a></li>
 {/section}
 </ul>
 
{/let}{/section}
 {/let} If anybody can see something wrong here, please PLEASE let me know.  Regards, Tristan | 
                                                                                                    
                                                        | Paul Forsyth
                                                                                                                             | Friday 08 August 2003 1:52:47 am 
                                                                 Using 'show=ne($a,$b)' should work. Can you perform some simple debugging on the values being tested. 
Before your line:{section loop=$Folder:item_list show=ne($Folder:item.node_id,$myVar)}
 Try showing {$Folder:item.node_id} and {$myVar} so you can see the values before they are tested... This may help you see where the code logic is going wrong. paul | 
                                                                                                    
                                                        | Tristan Koen
                                                                                                                             | Friday 08 August 2003 4:21:13 am 
                                                                 Sorry... I posted the wrong version of the code. I was playing with trying different namespaces and left some garbage in. I have corrected the code in the messages above. The change is simple: I should have been comparing $latest_item_id with $:item.node_id instead of with $Folder:item.node_id (in my original code it was $Folder:sectionname:item.node_id but I dropped the section name). 
It appears that the problem lies with variable scope rather than the ne() operator.$:item.node_id appears to be null in the section declaration. It is only assigned within the {section}.
 Is this the correct behaviour? This may be in the docs, but I couldn't find it... Armed with this knowledge, I can make the code work by embedding a separate {section} within my looping {section}. Is there a better way to do this? |