Весь каталог будет находиться на одной странице. Страница устроена так: слева идет список категорий товара, справа - данные о товарах в выбранной категории.
Корневому блоку назначьте шаблон catalog_. Двум остальным блокам нужно назначить шаблоны по умолчанию. Блоку слева системой будет предложен шаблон catalog_categories, а блоку справа — catalog_goods:
<?php echo " {$dat['edit']} <table> <tr> <td>$dat[1]</td> <td>$dat[2]</td> </tr> </table> "; ?>
<?php
$types = [
1=>"block template('catalog_categories')",
2=>"block template('catalog_goods')",
];
?>
<?php # Блок для данных о товаре # (с шаблоном catalog_goods) $goodsBlock = 3; if (empty($tab)) return; echo "<ul>"; foreach ($tab as $dat) { echo "<li>"; echo $dat['edit']; echo "<a href='?page=$page"; # Запрос к другому блоку: echo "&block=$goodsBlock"; # Из того блока будут извлечены записи, # данные которых в поле 3 равны номеру # записи текущено блока. # Номер записи здесь играет роль # идентификатора категории. echo "&p[3]={$dat['rec']}'>"; # Выше приведана короткая форма записи # pick-запроса. Стандартная форма - ниже: # echo "&pick[3][eq]={$dat['rec']}'>"; echo $dat[1]; echo "</a>"; echo "</li>"; } echo "</ul>"; ?>
<?php
$titles[1] = 'Категория товара';
$types[1] = 'varchar(255)';
$params['multi-record'] = true;
?>
<?php if (empty($tab)) return; 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] = 'int';# ID категории
$params['multi-record'] = true;
# При создании новой записи,
# в поле 3 будет записан идентификатор
# категории товара, который был передан
# из блока с шаблоном catalog_categories
$defaults[3] =
Request::get($goodsBlock,'pick', 3, 'eq');
# Поле 3 скрыть от редактирования
$fields['hidden'] = [3];
# Только при поступлении запроса
# к полю 3, будет произведена выборка
# (т.е. нужно щелкнуть ссылке из списка
# категорий)
$params['pick']['key-fields'] = [3];
?>