 
Доукомплектовывание последней части
Эта статья посвящена еще одному варианту решения проблемы незаполненной последней части при обратной выборке.
Суть метода заключается в том, что вместо того, чтобы расформировывать последнюю часть, ее, наоборот, доукомплектовывают записями из предпоследней части.
Может быть этот метод покажется несколько экзотическим, но если вам нужно, чтобы во всех частях, в том числе в последней записи, всегда находилось одно и то же число записей, этот метод будет как нельзя кстати.
Как и в предыдущем методе в дескриптор нужно ввести два параметра:
$params['part']['numbering'] = 'desc'
$params['part']['redistribution'] = -1;
На этот раз параметру redistribution присваивается значение -1, что означает, что из предпоследней части берутся записи для комплектования последней части до положенного числа, заданного параметром limit.
Порядок обратной выборки по частям
- Нарезка на части производится также, как и при прямой выборке.
- В последней части, которая должна открываться по умолчанию, показываются не оставшиеся записи, а полный набор записей. Недостающие записи берутся из предпоследней части.
- При переходе с последней части на предпоследнюю (т.е. следующую), заимствованные записи будут показаны заново.
Однако, эти записи можно отметить, как уже показанные. Для этого можно воспользоваться переменной $dat['shown'], которая указывает на то, что запись была заимствована последней частью.
Пользователь может посмотреть предпоследнюю часть раньше последней, например, при переходе по прямой ссылке. В этом случае, переменная $dat['shown'] появится только в записях последней части, и с ее помощью можно отметить те записи, которые были показаны в предпоследней части.
При обратной выборке по частям могут быть переданы следующие переменные:
$dat['complementary'] | Запись показывается в последней части в качестве дополнительной. Эту переменную можно использовать для закрытия записи от индексации роботами. |
$dat['shown'] |
Запись показывается в предпоследней части, причем, эта запись уже показывалась в последней части для дополнения до полного набора записей.
Или, запись показывается в последней части в качестве дополнительной, причем, эта запись уже показывалась в предпоследней части.
|
Ниже приведен код шаблона, в котором заимствованные записи с помощью класса shown будут отображены серым цветом.
example.tpl
<?php
echo "<table>";
foreach ($tab as $dat)
{
echo "<tr"; if ($dat['shown']) echo " class='shown'"; echo ">";
echo "
<td>{$dat['edit']}</td>
<td>$dat[1]</td>
<td>$dat[2]</td>
<td>$dat[3]</td>
";
echo "</tr>";
}
echo "</table>";
?>
example.css
tr.shown td {color: gray}
example.tdd
<?php
$types[1] = 'varchar(100)';
$types[2] = 'varchar(100)';
$types[3] = 'varchar(100)';
$params['isMultiRec'] = true;
$params['part']['limit'] = 10;
$params['backward'] = true;
$params['part']['numbering'] = 'desc'
$params['part']['redistribution'] = -1;
?>
|