Пример каталога товаров:
ключевые данные хранятся в поле типа select

В предыдущем примере ключевое данное записывалось в скрытое поле, причем, автоматически. Однако, есть вариант, когда это ключевое данное можно менять. При этом, конечно, лучше не утруждать пользователя вводом чисел вручную, а давать возможность выбора категории из списка.

В новом примере изменится только последний шаблон (шаблон для данных о товаре). Вместо скрытого поля применим поле типа select (выбор данных из списка).

Если вы уже создали страничку с шаблонами из предыдущего примера, то просто назначьте правому блоку новый шаблон: catalog_goods_select.

atalog_goods_select.tpl
<?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>";

?>
catalog_goods_select.tdd
<?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) теперь не обязательна, но ее применять все же рекомендуется, для того чтобы при вводе большого количество товара с одной и той же категорией, категорию выбирать не пришлось — она будет выбрана по умолчанию (при условии, что предварительно был сделан клик по категории).

Плюсом варианта с выбором категории из выпадающего списка является то, что категорию можно изменить в любое время.