Приведем пример простейшего форума. Наш форум будет состоять всего из одной страницы. Страница устроена так: слева идет список ссылок на темы, справа - обсуждение выбранной темы, состоящее из последовательности сообщений разных участников форума. Участники форума могут создавать как сообщения, так и новые темы.
Корневому блоку назначьте шаблон forum_. Двум остальным блокам нужно назначить шаблоны по умолчанию. Блоку слева будет предложен шаблон forum_topics, а блоку справа — forum_messages:
<?php echo " {$dat['edit']} <table> <tr> <td> <a href='?login'>Вход</a><br> <a href='?user-info&selected-user-id=new'> Регистрация </a><br> $dat[1] </td> <td>$dat[2]</td> </tr> </table> "; ?>
<?php
$types = [
1=>"block template('forum_topics')",
2=>"block template('forum_messages')",
]
?>
<?php # Блок для сообщений $messagesBlock = 3; if (empty($tab)) return; foreach ($tab as $dat) { echo $dat['edit']; echo "<a href='"; echo "?page=$page"; echo "&block=$messagesBlock"; echo "&p[3]={$dat['rec']}'>"; # Выше приведана короткая форма записи # pick-запроса. Стандартная форма - ниже: # echo "&pick[3][eq]={$dat['rec']}'>"; echo "$dat[1]"; echo "</a>"; echo "<br>"; } ?>
<?php
$titles[1] = 'Название темы форума';
$types[1] = 'varchar(255)';
$types[2] = 'int'; # ID пользователя
$params['multi-record'] = true;
# Поле для идентификатора пользователя.
$params['user-id-field'] = 2;
#...должно быть скрыто от редактирования
$fields['hidden'] = [2];
# Запретить участникам изменять названия тем
$params['editor-of-records']['forbid-old-recs-editing'] = true;
?>
<?php foreach ($tab as $dat) { # Сообщение echo "{$dat['edit']}$dat[1]"; # Извлекаем имя участника $sql = "SELECT * FROM "; $sql .= Blox::info('db','prefix'); $sql .= "users WHERE `user-id`=$dat[2]"; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); echo "<br>("; echo $row['personalname']; echo " "; echo $row['familyname']; echo ")<br><br>"; } ?>
<?php
# Этот блок
$messagesBlock = 3;
$titles[1] = 'Ваше сообщение';
$types[1] = 'varchar(255)';
$types[2] = 'int'; # ID пользователя
$types[3] = 'int'; # ID темы
$params['multi-record'] = true;
# Сохранение идентификатора темы
$defaults[3] =
$_SESSION['pick'][$messagesBlock][3]['eq'];
# Поле для идентификатора пользователя
$params['user-id-field'] = 2;
# Поля 2 и 3 скрыть от редактирования
$fields['hidden'] = [2,3];
# К полю 3 обязательно должен быть запрос
# (т.е. для нужно щелкать по теме)
$params['pick']['key-fields'] = [3];
?>
После регистрации участник форума в обоих блоках увидит кнопки для начала ввода новых записей (как в списке тем, так и в ленте сообщений). После создания записей, авторы будут видеть также кнопки редактирования созданных записей, но только на протяжении текущей сессии.