UWAGA: Strona zawiera materiały archiwalne. Większość artykułów dotyczy Joomla! 1.0
Start
Jak utworzyć tabele z kilkoma wierszami i kolumnami Drukuj Email
Ten problem może się pojawić gdy tworzysz listę zawierającą więcej niż jedną kolumnę. Na początku zadanie to może się wydawac trudne ale jeśli dobrze zrozumiałeś wszystko zobaczysz że jest to proste zadanie. Na początek spójrzmy na strukturę szablonu:
 
001 <table border="1" cellpadding="10" cellspacing="0">
002       <!-- template for table row - ⇒ 
003       <patTemplate:tmpl name="row">
004             <tr>
005                   <!-- template for table cell - ⇒ 
006                   <patTemplate:tmpl name="cell">
007                         <td>{real_name} is {superhero}</td>
008                   </patTemplate:tmpl>
009             </tr>
010       </patTemplate:tmpl>
011 </table>

Jak zauważyłeś są tutaj dwa szablony, jeden powtarzany nazywany "row", drugi nazwany "cell", jest on powtarzany dla każdej komórki każdego wiersza. W tych komórkach zostanie umieszczona treść.

 
01    <?php
02    // data to display
03    $data = array(
04                  array( "real_name""Clark Kent", "superhero""Superman" ),
05                  array( "real_name""Bruce Wayne", "superhero""Batman" ),
06                  array( "real_name""Kyle Rayner", "superhero""Green Lantern" ),
07                  array( "real_name""Wally West", "superhero""The Flash" ),
08                  array( "real_name""Linda Danvers", "superhero""Supergirl" ),
09                 );
10    // number of columns per row
11    $cols  = 3;
12       
13    // calculate number of rows
14    $rows    = ceil( count( $data ) / $cols );
15    $counter = 0;
16        
17    // loop for each row
18    for( $i = 0; $i <$rows; $i++ )
19    {
20      // clear cells from last row
21      $tmpl ⇒ clearTemplate( "cell" );
22      
23      // put data for one row in a new array
24      $rowData = array();
25      for( $j = 0; $j <$cols; $j++ )
26      {
27        if( isset( $data[$counter] ) )
28          array_push( $rowData, $data[$counter++] );
29      }
30      // add the data of one row to the cells
31      $tmpl ⇒ addRows( "cell", $rowData );
32      // parse this row and append the data to previously parsed rows
33      $tmpl ⇒ parseTemplate( "row", "a" );
34    }
35    $tmpl ⇒ displayParsedTemplate();
36    ?>

Najważniejszą funkcją jest parseTemplate("row","a"), która przetwarzając szablon dołącza wynik do części już przetworzonej. Umożliwia to przetworzenie kilku wierszy.

Wykorzystaj funkcję array_chunk().

Jeśli masz zainstalowane PHP w wersji 4.2.0 możesz skorzystać z funkcji array_chunk() do rozdzielenia danych z każdego wiersza na tablice.


Uwagi, źródła

Jeżeli masz sugestie odnośnie treści lub chcesz zgłosić poprawki do tego rozdziału, skomentuj go albo umieść wiadomość na forum: Dokumentacja - Propozycje, zmiany, poprawki

Dziękujemy!

Stefan Wajda, Zespół Dokumentacji PCJ

Tłum. Adam Sobkowicz. Na podstawie: help.joomla.org
Licencja: GNU FDL

Zmieniony ( 14.02.2007. )
 
« poprzedni artykuł   następny artykuł »