 
Пример каталога товаров: ключевые данные хранятся в скрытом поле
Весь каталог будет находиться на одной странице. Страница устроена так: слева идет список категорий товара, справа - данные о товарах в выбранной категории.
Внешнему блоку назначьте шаблон catalog_. Двум остальным блокам нужно назначить шаблоны по умолчанию.
Блоку слева системой будет предложен шаблон catalog_categories, а блоку справа — catalog_goods:
Внешний шаблон (шаблон страницы)
catalog_.tpl | catalog_.tdd |
|
<?php
echo "
{$dat['edit']}
<table>
<tr>
<td>$dat[1]</td>
<td>$dat[2]</td>
</tr>
</table>
";
?>
|
<?php
$types = array (
1=>"block template('catalog_categories')",
2=>"block template('catalog_goods')",
);
?>
|
Шаблон для категорий товара
catalog_categories.tpl | catalog_categories.tdd |
|
<?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['isMultiRec'] = true;
?>
|
Шаблон для данных о товаре
catalog_goods.tpl | catalog_goods.tdd |
|
<?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['isMultiRec'] = true;
# При создании новой записи,
# в поле 3 будет записан идентификатор
# категории товара, который был передан
# из блока с шаблоном catalog_categories
$defaults[3] =
$GLOBALS['pick'][$goodsBlock][3]['eq'];
# Поле 3 скрыть от редактирования
$params['hiddenFields'] = array(3);
# Только при поступлении запроса
# к полю 3, будет произведена выборка
# (т.е. нужно щелкнуть ссылке из списка
# категорий)
$params['pick']['keyFields'] = array(3);
?>
|
Примечания
-
В некоторых шаблонах и дескрипторах необходимо указать номер блока с данными о товаре в переменной $goodsBlock, которая введена для простоты изложения.
Сравните этот пример с аналогичным примером, где номер блока вписывать вручную не нужно.
|