Forums / Developer / posibility to undef any variable

"Please Note:
  • At the specific request of Ibexa we are changing this projects name to "Exponential" or "Exponential (CMS)" effective as of August, 11th 2025.
  • This project is not associated with the original eZ Publish software or its original developer, eZ Systems or Ibexa".

posibility to undef any variable

Author Message

Marko Žmak

Wednesday 28 September 2005 3:31:22 am

With the new template syntax, the new 'undef' operator was defined. I found it most usefull, but there are still some things that could e improved. With the 'undef' operator I can unset only variables created by the 'def' operator. But it would be nice to have the possiblity to unset a variable regardless of how it was created. Here's an example where this could be usefull...

I often include some of my commonly used templates like this:

{include uri='util/mytemplate.tpl' text='some_tetxt' name='My name'}

And I often include them in many different places in the same template. The parameters text, and name in most cases are the same so I wan't that I don't have to write the values every time but instead when I call the template like this:

{include uri='util/mytemplate.tpl'}

that the dafault values are used. I have obtained this bi putting:

{if not(is_set($name))} {def $name='my_default_name'} {/if}

in the beginning of 'util/mytemplate.tpl' and putting:

{undef $name}

at the end of 'util/mytemplate.tpl'. The 'undef' at the end is needed so that the variables don't stay defined when 'util/mytemplate.tpl' is included the next time.

But this doesn't work when the template is invoked with the parameters because 'undef' doesn't unset the variables defined as parameters to 'include' command.

I didn't find any other way to do this except defining variables explicitly with 'def' like this:

{def $text='some_tetxt' $name='My name'}
{include uri='util/mytemplate.tpl' }

which is not very practical, and slows down work.

Someone could say that this can be obtained by using the 'default' operator but it can't. Because when I call the 'util/mytemplate.tpl' for the first time in a template the parameters defined with the 'include' operators stay defined.

I would like to hear opnions from someone in the eZ crew about this.

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

Hubert Farnsworth