Если в блоке очень много записей, то их желательно разбивать на части, отображая на страничке только одну часть (pagination).
Чтобы записи блока начали автоматически разбиваться на части, нужно с помощью параметра шаблона $params['part']['limit'] задать максимальное число записей в каждой части.
<?php
$types[1] = 'varchar(100)';
$types[2] = 'varchar(100)';
$types[3] = 'varchar(100)';
$params['part']['limit'] = 10;
$params['multi-record'] = true;
?>
parts.tpl
<?php echo "<table>"; foreach ($tab as $dat) echo " <tr> <td>{$dat['edit']}</td> <td>$dat[1]</td> <td>$dat[2]</td> <td>$dat[3]</td> </tr> "; echo "</table>"; $request = Request::get($block); echo "<br>"; foreach ($request['part']['parts'] as $p) echo "<a href='?page=$page&block=$block&part=$p'>$p</a>"; ?>Для формирования ссылки на ту или иную часть блока служит массив $request['part']['parts'], в котором идет простой перебор от единицы до наибольшего номера части, равного $request['part']['num-of-parts'].
Приведем более полный пример с навигацией между смежными частями и инактивацией ссылки на текущую часть (см. снимок). Для этого понадобится переменная $request['part']['num-of-parts'] (общее число частей).
parts.tpl<?php echo "<table>"; foreach ($tab as $dat) echo " <tr> <td>{$dat['edit']}</td> <td>$dat[1]</td> <td>$dat[2]</td> <td>$dat[3]</td> </tr> "; echo "</table>"; $request = Request::get($block); # prev if ($request['part']['current'] > 1) { $prevpart = $request['part']['current']-1; echo "<a href='?page=$page&block=$block&part=$prevpart'>предыдущая</a>"; } else echo "предыдущая"; # next if ($request['part']['current'] < $request['part']['num-of-parts']) { $nextpart = $request['part']['current']+1; echo "<a href='?page=$page&block=$block&part=$nextpart'>следующая</a>"; } else echo "следующая"; # parts echo "<br>"; foreach ($request['part']['parts'] as $p) { if ($p == $request['part']['current']) echo "$p"; else echo "<a href='?page=$page&block=$block&part=$p'>$p</a>"; } ?>
В принципе, для перебора частей не обязательно использовать массив $request['part']['parts'] – достаточно и переменной $request['part']['num-of-parts'], так как перебор можно осуществлять от 1 до $request['part']['num-of-parts'] с помощью php-оператора for.
Пагинация реализуется при разработке гостевых книг, форумов, каталогов объявлений, страниц комментариев, списков статей и в любых других случаях, когда из общего массива данных, хранящихся в базе данных, желательно выбрать только ее часть, а не выводить все на одной странице.
Сначала показываются первые записи, остальные записи можно прочитать с помощью навигационного блока с нумерацией страниц, кнопками "предыдущая", "первая", "следующая", "последняя".