我正在使用TBS示例代码:
include_once('tbs_class.php');
$TBS = new clsTinyButStrong;
$TBS->LoadTemplate('template.htm');
$list = array('X','Y','Z');
$TBS->MergeBlock('blk', $list);
$TBS->Show();
但不是下面的一列表
<table>
<tr><td>X</td></tr>
<tr><td>Y</td></tr>
<tr><td>Z</td></tr>
</table>
我想获得一个多列(例如4列)表。
到目前为止,我发现的唯一可行代码是:
$number_of_columns = 4;
$number_of_rows = 2;
$number_of_items = $number_of_columns * $number_of_rows;
$output_data = array('1', '2', '3', '4', '5', '6', '7', '8');
$TBS->MergeBlock('col','num',$number_of_columns); // expand columns
$TBS->MergeBlock('od',array_slice($output_data,0,$number_of_items));
和模板
<table border="1">
<tr>[od;block=tr;serial]<td>[od_[col.val;block=td].val;block=td]</td></tr>
</table>
有什么更简单的吗?
答案 0 :(得分:1)
如果您要做的是按顺序显示项目
1 2 3 4
5 6 7 8
9 10 11
然后你可以:
1)就像你的例子一样,使用TBS中的串行模式。这是该参数的目的,您的示例非常简单。
2)更改数据源$output_data
中的项目,以便每行有一条记录。
脚本:
$data = array(
array(1, 2, 3, 4),
array(5, 6, 7, 8),
array(9, 10, 11),
);
$TBS->MergeBlock('od', $data);
模板:
<table>
<tr>
<td>[id.0;block=tr]</td>
<td>[id.1;noerr]</td>
<td>[id.2;noerr]</td>
<td>[id.3;noerr]</td>
</tr>
</table>
3)不要更改数据,而是更改HTML模板。
使用具有固定宽度的<div>
而不是表格。在此div中,使用位于行中的实体,例如<span>
,其宽度是<div>
的四分之一。然后,每个<span>
将按顺序显示,每4 <span>
换行。
$output_data = array('1', '2', '3', '4', '5', '6', '7', '8');
$TBS->MergeBlock('od', $output_data);