Share » Forums » Developer » simple variable problem

simple variable problem

simple variable problem

Wednesday 21 April 2004 3:31:47 am - 9 replies

Author Message

Alex Jones

Wednesday 21 April 2004 6:27:06 am

Hrrrm, I'm not 100% positive on this, but I think you are trying to call the variable incorrectly. You are setting the variable with:

{set-block name=homepageContent scope=global variable=parentID}
{$Related:item.parent_nodes.0}
{/set-block}

And trying to access it with: <i>$homepageContent:parentID</i>

Try calling it with <i>$parentID</i> only and see if that works. Also, try setting the scope to <i>root</i> instead of global. Here is an example of code that works on my installation, it is a bit different than what you are trying to do, but it may help:

{set-block scope=root variable=KeyCode}
  {let parentnode=fetch('content','node',hash(node_id,$DesignKeys:used.parent_node))}
    {$parentnode.data_map.keycode.data_text}
  {/let}
{/set-block}

{section show=ne($KeyCode,'0')}{$KeyCode} - {/section}

Hope this helps,

Alex

Alex
[ bald_technologist on the IRC channel (irc.freenode.net): #eZpublish ]

<i>When in doubt, clear the cache.</i>

Rinze Cats

Wednesday 21 April 2004 6:52:23 am

Hi alex, thanx for the reply

I will try your code suggestion and change the variable scope to root.
however, the part about the parentid per se is not causing the problem ( i think)
homePageContent.parentid used in the case if functional (although the code might not be ideal. Using the homePageContent namespace makes it simple to access the variables in the rest of the pages code.
the real problem lies in the part

{* ************ *}
{* and now I need to fetch the image and put it in an object variable*}

{let name=homePageContent object=fetch( 'content', 'object', hash( 'object_id', $Related:item.data_map.thumbnail.content.id ))}

the let defined here is not working. If I use the fetch in a set-block, like I do with the other two attributes, it actually returns something like "(ezContentobject) ... "
Can't remember exact, but it looks like it does fetch the object i want. The problem is that a set-block only returns strings, preventing me from actually using the attributes within the object. So I need a working alternative for

set-block name=homepageContent scope=global variable=myobject>
{fetch( 'content', 'object', hash( 'object_id', $Related:item.data_map.thumbnail.content.id ))}
{/set-block}

because this returns the string and I want to place the object in a variable, in my homepageContent namespace.

greetz
rinze

Alex Jones

Wednesday 21 April 2004 9:02:30 am

Hrrrm, I'm not sure about this one. Sorry. Hopefully someone else can help out.

Alex

Alex
[ bald_technologist on the IRC channel (irc.freenode.net): #eZpublish ]

<i>When in doubt, clear the cache.</i>

Dominik Pich

Thursday 22 April 2004 12:41:55 am

a let to init (all) the variable(s) and a set to fetch the real content.

Rinze Cats

Thursday 22 April 2004 1:03:50 am

could you possibly supply a small example to illustrate this? Preferably using a namespace as well. I have already spend hours on somethign as trivial as this ;-)

how do I for instance initialize an object using {let}. Do I have to assign a value of can I just say
<i>{let name=homepageContent myobject}</i>
....
<i>{let myobject = fetch (etc...}</i>

and then use the code by saying:

{$homepageContent:myobject.name}

?

thanx for the help!

Dominik Pich

Thursday 22 April 2004 1:18:48 am

{let name=data var=false}
{set var=fetch(...)}
{$data:var}
{/let}

Alex Jones

Thursday 22 April 2004 6:07:53 am

Oh yeah! I can't believe I missed that. Nice catch Dominik.

Alex

Alex
[ bald_technologist on the IRC channel (irc.freenode.net): #eZpublish ]

<i>When in doubt, clear the cache.</i>

Rinze Cats

Thursday 22 April 2004 7:17:34 am

hi guys,

this solved my problem indeed. i knew it was supposed to be easy! I also implemented some code to check whether an image has been added. If so, fetch it! First I added the 'let' to my section

{section name=Related loop=$current_node.object.related_contentobject_array}
{let myobject=false}

then I added the following logic

{* get the object relation. *}
{* from the related object, extract the image and the alternative text and create an image tag (if exists*}
  {* check if homepage picture is available, if so proces it *}
  {section show=ne($Related:item.data_map.thumbnail.content.id,'')}
  {set myobject=fetch( 'content', 'object', hash( 'object_id', $Related:item.data_map.thumbnail.content.id ))}
  {set-block name=homepageContent scope=global variable=mythumbnail}
  {* check if the object has been set, if so: create the image tag*}
  {section show=ne($Related:myobject,'')}
	<img src="{$Related:myobject.main_node.data_map.image.content.small.url}" alt="{$Related:myobject.main_node.data_map.caption.content.output.output_text}">
  {section-else}
  {/section}
  {/set-block}
  {section-else}
{/section}

then I added
<i>{$homepageContent:mythumbnail}</i> where I want to show the thumbnail.

I guess the conditional part needs some improvement. suggestions are welcome!

thanx again for the help!
rinze

Alex Jones

Thursday 22 April 2004 7:38:49 am

Well, one quick note: you don't need to use those two instances of <i>{section-else}</i> as you are not executing any other code. So you can tighten it up to look like:

{section show=ne($Related:item.data_map.thumbnail.content.id,'')}
  {set myobject=fetch( 'content', 'object', hash( 'object_id', $Related:item.data_map.thumbnail.content.id ))}
  {set-block name=homepageContent scope=global variable=mythumbnail}
    {section show=ne($Related:myobject,'')}
      <img src="{$Related:myobject.main_node.data_map.image.content.small.url}" alt="{$Related:myobject.main_node.data_map.caption.content.output.output_text}">
    {/section}
  {/set-block}
{/section}

Alex

Alex
[ bald_technologist on the IRC channel (irc.freenode.net): #eZpublish ]

<i>When in doubt, clear the cache.</i>

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

36 542 Users on board!

Forums menu