 
Пример коллективного блога
Приведем пример простейшего сайта, в котором неограниченное число пользователей может вести свои блоги.
Основное содержимое блога — это регулярно добавляемые не длинные записи временной значимости (содержащие текст и изображение), отсортированные в обратном хронологическом порядке.
Наш сайт будет состоять всего из одной страницы.
Слева идет меню со списком авторов статей (блоггеров), справа - соответствующий блог, состоящий из ленты статей, идущих в обратном порядке (последняя статья - сверху).
Внешнему блоку назначьте шаблон blogs_.
Двум остальным блокам нужно назначить шаблоны по умолчанию.
Блоку слева будет предложен шаблон blogs_authors, а блоку справа - , справа — blogs_articles.
Внешний шаблон (шаблон страницы)
blogs_.tpl | blogs_.tdd |
|
<?php echo "
{$dat['edit']}
<table>
<tr>
<td>
<a href='?login'>Вход</a><br>
<a href='?userParams&selectedUserId=new'>
Регистрация
</a><br>
$dat[1] <!--Список авторов-->
</td>
<td>$dat[2]</td> <!--Статьи блога-->
</tr>
</table>
"; ?>
|
<?php
$types = array
(
1=>'block template(blogs_authors)',
2=>'block template(blogs_articles)'
)
?>
|
Шаблон со списком ссылок на блоги пользователей
blogs_authors.tpl
<?php
# Блок, которому назначен шаблоном blogs_articles
$articlesBlock = 3;
# Извлекаем данные таблицы users
$table = getTable('users', $block, $limit, $backward);
echo $dat['edit'];
echo "<ul>";
foreach ($table as $data)
{
echo "<li>";
echo "<a href='";
echo "?page=1";
echo "&block=$articlesBlock";
# Запрашиваются записи одного пользователя
echo "&p[4]={$data['userId']}";
# Выше приведана короткая форма записи
# pick-запроса. Стандартная форма - ниже:
# echo "&pick[4][eq]={$data['userId']}'";
echo "'>";
echo $data['login'];
echo "</a>";
echo "</li>";
}
echo "</ul>";
?>
Шаблон для статей блогов
blogs_articles.tpl | blogs_articles.tdd |
|
<?php
foreach ($tab as $dat)
echo "
{$dat['edit']}
<h1>$dat[1]</h1>
$dat[2]<br>
<img src='dataFiles/$dat[3]'><br>
<br><br>
";
?>
|
<?php
$titles[1] = 'Заголовок статьи';
$titles[2] = 'Текст';
$titles[3] = 'Фото';
$types[1] = 'varchar(255)';
$types[2] = 'text';
$types[3] = 'file';
$types[4] = 'int(4) unsigned';
$params['isMultiRec'] = true;
$params['backward'] = true;
# Поле для идентификатора пользователя
$params['userIdField'] = 4;
# ...скрыто
$params['hiddenFields'] = array(4);
# ...и на него должен поступать запрос
$params['pick']['keyFields'] = array(4);
?>
|
Автор должен щелкнуть по своей фамилии в левом блоке — в правом блоке появится первая пустая запись с кнопкой для редактирования.
После создания записей, авторы будут видеть также кнопки редактирования созданных записей.
Примечания
- Ниже блока со статьями автора, желательно разместить также и блок для комментариев посетителей (см. Публичные записи).
- В примере не используется поле для даты записи. Чтобы добавить дату, посмотрите, как задаются значения полей по умолчанию.
|