Jump to content

Archived

This topic is now archived and is closed to further replies.

weboz

Loop in .tpl PHP script {help}

Recommended Posts

Hallo, i'm desperate.. I have tried 5 forums without anyone to answer me, so trying this as last tryout :)

 

Please read the note in the code <!-- -->, need to echo <ul> without looping.

 

Need help with this code:

{foreach $categories_array as $category}

<!-- need a code to print <ul class="cat1" without looping-->

<li class="cat1 {$class}" style="margin-left:10px;"><a href="{$category.href}">{$category.name}</a></li>
  
                  {elseif $category.spacing == '2'}
                
<!-- need a code to print<ul class="ul-cat2" without looping -->

                   <li class="cat2 {$class}" style="margin-left:{0+$category.spacing*10}px;" ><a href="{$category.href}">{$category.name}</a></li>
        
                        {else}
                        <li class="cat0-sub {$class}" style="margin-left:{0+$category.spacing*10}px;" ><a href="{$category.href}">{$category.name}</a></li>
                        {/if}
{/foreach}

Share this post


Link to post
Share on other sites

How do you expect to not loop from within a loop?

Share this post


Link to post
Share on other sites

try

print ('<ul class="cat1"> or what ever);

 

I'm pretty sure this will loop. Need to find a method to stop <ul> from looping for each <li>.

Share this post


Link to post
Share on other sites

You'll need to correctly set up your array and do multiple loop levels.  Consider:

 

Array(

[0]=>[category1]

    Array([0]=>item1 [1]=>item2 [2]=>item3] )

[1]=>[category2]

    Array([0]=>item1 [1]=>item2 [2]=>item3] )

)

 

Now, you have a multidimensional array and can

 

foreach( $array as $category )
echo '<ul>';
    foreach( $category as $key=>$item )
    echo "<li>{$item}</li>";

 

dump the array for a more explicit answer

Share this post


Link to post
Share on other sites

I haven't worked with .tpl files before, but I know a whole lot of programming languages. Not a single one of them will let you have an elseif without an if before it. If your if is outside of the foreach then this code will never work.

 

You need to re-think your logic. If you provide a little more of the file and a good explanation of what you are trying to accomplish, I'm sure someone here can point you in the right direction.

Share this post


Link to post
Share on other sites

I haven't worked with .tpl files before, but I know a whole lot of programming languages. Not a single one of them will let you have an elseif without an if before it. If your if is outside of the foreach then this code will never work.

 

You need to re-think your logic. If you provide a little more of the file and a good explanation of what you are trying to accomplish, I'm sure someone here can point you in the right direction.

 

Yeah i know, looks like i skipped a line when i copied the code snip.

As for better information, i do not have any more information, because the system provider for this system will not let me see more of the codes.

So this is what i have to work with. Going to insert a drop-out menu, and for this i need <ul> to be printet correctly.

{foreach $categories_array as $category}

{if $category.spacing == '1'}

<li class="cat1 {$class}" style="margin-left:10px;"><a href="{$category.href}">{$category.name}</a></li>
  
                  {elseif $category.spacing == '2'}
                


                   <li class="cat2 {$class}" style="margin-left:{0+$category.spacing*10}px;" ><a href="{$category.href}">{$category.name}</a></li>
        
                        {else}
                        <li class="cat0-sub {$class}" style="margin-left:{0+$category.spacing*10}px;" ><a href="{$category.href}">{$category.name}</a></li>
                        {/if}
{/foreach}  

Share this post


Link to post
Share on other sites

Using logic code in .tpl file is not recommended. It's a good practice to provide one more layer of separation of responsibility. Create a controller or view class that handles php code processing, the .tpl file is better off simply outputting html elements and assigned php variables.

Share this post


Link to post
Share on other sites

Using logic code in .tpl file is not recommended.

 

You have to have some logic in it. He is using smarty for his .tpl. View logic, does require some logic to not duplicate code and even build stuff dynamically. You are on the right track, but that statement is just wrong.

 

Now if he was doing Business Logic in the view Logic, ok. But looping through data and displaying it conditionally is OK to do and is needed, unless you feel like making 500 files and duplicating a ton of code.

 

 

And...

 

try

print ('<ul class="cat1"> or what ever);

 

What?

 

*premiso shakes his head slowly.

 

And...

 

I haven't worked with .tpl files before

 

It is just Smarty, I don't think the .tpl extension really matters just what smarty people tend to use. I am quite partial to .phtml myself :)

Share this post


Link to post
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.