Forums / Developer / Easy Template Question

Easy Template Question

Author Message

Clemens T

Friday 27 May 2005 8:05:02 am

Hello all,
I'm currently developing my own Module which lists all folders in a Node (it works fine with 1 directory, but I want to use it with subdirectories as well).

My ViewList looks like:

$ViewList = array();

$ViewList['folderlist'] = array(
    'script' => 'folderlist.php',
    'params' => array () );

Now, when I change this to:

$ViewList = array();

$ViewList['folderlist'] = array(
    'script' => 'folderlist.php',
    'params' => array ('ParentID') );

I could in fact make sure that the template file lists everything in a subdirectory through the ParentID (as node_id), and if none is provided then it lists the default node_id. But, how is this done.

I don't know how to fetch/get the value in my template file. Or do I have to make this choice in folderlist.php and use multiple templates? I'm a bit stuck, besides that, the module system rocks :).

Greets,
Clemens
ps: I've been searching this site, and looked in to several contribs, but I can't find an answer. Thank you

Xavier Dutoit

Friday 27 May 2005 8:44:12 am

Hi,

Good luck, Assuming the nodeid is going to be a param in the url (eg: /myextension/myfunction/42)

Another way is to use named parameters (eg: /myextension/myfunction/(nodeid)/42 )

echo "Have a look at:<br><pre>";
print_r ($Params);
echo"</pre>";

// otherwise, something more useful
include_once( 'kernel/common/template.php' );
$tpl =& templateInit();

if (isset ($Params['Parameters'][0]))
      $tpl->setVariable('nodeid',$Params['Parameters'][0]);

//named parameters

foreach ($Params[UserParameters] as $param => $value)
    $tpl->setVariable( $param, $value );

Then you can use it into the template as any variable.

I guess that's just a test, as otherwise they are easier ways of listing all folders in a node ;)

X+

http://www.sydesy.com

Clemens T

Friday 27 May 2005 9:38:04 am

Wow thanks, I got it to work.. and yes, this is just a basic setup of a module that's going to contain more complex data than I can imagine.

BUT... there is one thing.. This works:

if (isset ($Params['Parameters'][0]))
      $tpl->setVariable('nodeid',$Params['Parameters'][0]);

and in my template I'll just say

{$nodeid}

THAT works.. but as you told me something about 'named parameters'.. I saw the code. and thought, hey that just loops through all the viewparameters and assigns them to the appropriate variables. I think I'm wrong, but don't know why.

I can't get this to work, I think because the UserParamters array is not properly filled? (just a thought).

//named parameters

foreach ($Params[UserParameters] as $param => $value)
    $tpl->setVariable( $param, $value );

Thanks on the quick reply!
Qudos for X.
Greetings,
Clemens

ps: my viewlist is still with
'params' = array( 'nodeid' );

edit: I'm still using {$nodeid} in my template code to get the nodeid..