TinyButStrong (TBS)

Logo: TinyButStrong

3. Blöcke mit TBS ausgeben

Wie schon erwähnt werden in vlibTemplate Blöcke "LOOPs" genannt. In Smarty werden die Begriffe "section" und "loop" verwendet. Worum geht es bei einem TBS Block oder einem LOOP? Dieses Konstrukt gleicht einer WHILE-Schleife, die eine bestimmte Anzahl von Daten oder Datensätzen ausgibt. Auch hier gibt es wieder Vorteile gegenüber vlibTemplate, weil TBS in der Lage ist, auch einen beliebigen Array auszugeben ohne ihn speziell aufzubereiten.

PHP-Skript
   require_once 'tbs/tbs_class.php';
   $loop = array('Claus', 'Kelvin', 'Skrol', 'Micheal', 'James', 'Marcus');

   $block = array(
      0 => array('u_id' => 1, 'u_name' => 'Claus'),
      1 => array('u_id' => 2, 'u_name' => 'Kelvin'),
      2 => array('u_id' => 3, 'u_name' => 'Skrol'),
      3 => array('u_id' => 4, 'u_name' => 'Micheal')
   );

   $tmpl = new clsTinyButStrong;
   $tmpl->LoadTemplate('tmpl/loop_block.htm');
   $tmpl->MergeBlock('loop', $loop);
   $tmpl->MergeBlock('block', $block);
   $tmpl->Show();

In vlibTemplate wäre es nicht möglich $loop auszugeben, aber TBS hat die Möglichkeit sowohl einen assoziativen, als auch einen numerischen Index auszugeben. php.net spricht nicht nur von "Index", sondern auch von "Schlüssel". In diesem Tutorial werde ich durchgängig das Wort "Index" verwenden.

Template
   <body>

   <h1>TBS block "loop" is displayed using &lt;div&gt;</h1>
   <div>[loop.key;block=div] - [loop.val]</div>
   
   <h1>TBS block "block" is displayed using &lt;p&gt;</h1>
   <p>User: [block.u_id;block=p] - [block.u_name]</p>

   </body>

Der Block "loop" wird mit "block=div" an den HTML-Tag "<div>" gebunden. Damit weiß TBS, wo der Block beginnt und endet. Der Block wird so oft wiederholt, wie es Elemente im Array gibt. Mit "[loop.key]" wird der Index des Arrays $loop ausgegeben. "[loop.val]" gibt das jeweilige Element (bzw. den Wert) des Arrays aus.
Das Beispiel $block hat neben dem numerischen auch einen assoziativen (String)Index. Wenn ein Array in genau dieser Weise aufgebaut ist, kann im Template der String-Index als Templatevariable ausgegeben werden. Jede Templatevariable muss mit der Bezeichnung des Blocks beginnen (z.B. "[block.u_name]").