home    download    manual    awards    faq    bugs    links























Frequently Asked Questions

1. Why are some variables I assigned a value NOT assigned?
2. MagicQoutes are ON. How can I make TemplatePower work?
   

1.

Why are some variables I assigned a value NOT assigned?

 

I think its best to give an example of code where some variables aren't assigned a value, but should be.

book.tpl

[...]

<body>
<table width="550" border="0">
  <tr>
    <td height="58" bgcolor="#CCCCCC">
      <h2>Chapter {chapter_num} {chapter_name}</h2>
    </td>
  </tr>
  <tr>
    <td height="29">
      <h3>{subject}</h3>
    </td>
  </tr>
</table>

<p>
 <!-- START BLOCK : text_row -->
   Chapter Text {number}.<br>
 <!-- END BLOCK : text_row -->
</p>
</body>

[...]


mybook.php

<?php
 include( "./class.TemplatePower.inc.php");

  $tpl = new 
TemplatePower( "./book.tpl" );

  $tpl->prepare();

  $tpl->assign( "chapter_num" , "7." );

  for( $i=1; $i <= 10; $i++ )
  {
       $tpl->newBlock("text_row");
       $tpl->assign("number", $i );
  }

  $tpl->assign( "chapter_name", "Variables" );
  $tpl->assign( "subject"     , "Basics" );

  $tpl->printToScreen();
?>


Problem:

if we execute mybook.php we will see that the variables chapter_num and number are assigned a value, but the variables chapter_name and subject are NOT.

Reason of failure:
The function newBlock is used to create a new "text_row" block. By doing this the currentblock "pointer" is set to "text_row", so TemplatePower assumes that the variables chapter_num and number are children of the block "text_row".

Solution(s):
  1. Assign all variables in a block, before creating children blocks or assigning variables.

      $tpl->assign( "chapter_num" , "7." );
      $tpl->assign( "chapter_name", "Variables" );
      $tpl->assign( "subject"     , "Basics" );


      for( $i=1; $i <= 10; $i++ )
      {
           $tpl->newBlock("text_row");
           $tpl->assign("number", $i );
      }

  2. Use the variablename in combination with the parent-blockname. In this case _ROOT, because its the lowest level. You can write for example the variable number as text_row.number as well.

      $tpl->assign( "chapter_num" , "7." );

      for( $i=1; $i <= 10; $i++ )
      {
           $tpl->newBlock("text_row");
           $tpl->assign("number", $i );
      }

      $tpl->assign( "_ROOT.chapter_name", "Variables" );
      $tpl->assign( "_ROOT.subject"     , "Basics" );


    Ofcourse the variable chapter_num could be written as _ROOT.chapter_num but in this case isn't necessary, because we didn't create a new block and are still in block_ROOT.

  3. Use the function gotoBlock();

    $tpl->assign( "chapter_num" , "7." );

    for( $i=1; $i <= 10; $i++ )
    {
         $tpl->newBlock("text_row");
         $tpl->assign("number", $i );
    }

    $tpl->
    gotoBlock("_ROOT");

    $tpl->assign( "chapter_name", "Variables" );
    $tpl->assign( "subject"     , "Basics" );


2.

MagicQoutes are ON. How can I make TemplatePower work?

 

Just change the following code in your script:

$tpl->printToScreen();

into:

print( stripslashes( $tpl->getOutputContent() ));

   
 

 
CopyRights © 2001-2006 Ron P.J. Velzeboer (rovel999_at_codocad_dot_com). The Netherlands.