В предыдущем примере ключевое данное записывалось в скрытое поле, причем, автоматически. Однако, есть вариант, когда это ключевое данное можно менять. При этом, конечно, лучше не утруждать пользователя вводом чисел вручную, а давать возможность выбора категории из списка.
В новом примере изменится только последний шаблон (шаблон для данных о товаре). Вместо скрытого поля применим поле типа select (выбор данных из списка).
Если вы уже создали страничку с шаблонами из предыдущего примера, то просто назначьте правому блоку новый шаблон: catalog_goods_select.
<?php if (empty($tab)) return; # Сброс (выборка по умолчанию) echo "<a href='?page=$page'>"; echo "Показать последние</a>"; echo "<table>"; foreach ($tab as $dat) { echo " <tr> <td> {$dat['edit']} $dat[1] </td> <td> $dat[2] </td> </tr>"; } echo "</table>"; ?>
<?php
# Этот блок
$goodsBlock = 3;
$titles[1] = 'Название товара';
$titles[2] = 'Цена';
$types[1] = 'varchar(255)';
$types[2] = 'decimal(6,2)';
$types[3] = "
select
template('catalog_categories')
field(1)
";
$params['multi-record'] = true;
$params['backward'] = true;
$params['part']['limit'] = 10;
# Не обязательно
$defaults[3] =
Request::get($goodsBlock,'pick', 3, 'eq');
?>
В варианте навигации с выбором ключевых данных из списка можно отказаться от обязательного наличия запроса ($params['pick']['key-fields']), так как данное можно назначить вручную. Теперь наш каталог товаров будет работать в несколько ином режиме, а именно, при отсутствии условного запроса, извлекуться все записи блока. Но мы добавили параметры $params['backward'] и $params['part']['limit'], чтобы извлекались только последние десять записей.
Если вы забудете в новой записи назначить товару категорию, то не потеряете эту запись из виду — вы увидите ее в самой верхней записи блока (при условии, что вы не щелкали по категориям).
Для сброса условий выборки в шаблон добавлена ссылка "Показать последние".
Каталог работает в, так называемом, режиме фильтра. То есть, если категория товара не выбрана, то отображаются все записи (в нашем конкретном случае - только последние из любой категории). Если выбрать категорию, то круг товаров сузится.
Запись значения по умолчания (с помощью $defaults) теперь не обязательна, но ее применять все же рекомендуется, для того чтобы при вводе большого количество товара с одной и той же категорией, категорию выбирать не пришлось — она будет выбрана по умолчанию (при условии, что предварительно был сделан клик по категории).
Плюсом варианта с выбором категории из выпадающего списка является то, что категорию можно изменить в любое время.