Пример коллективного блога

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

Наш сайт будет состоять всего из одной страницы. Слева идет меню со списком авторов статей (блоггеров), справа - соответствующий блог, состоящий из ленты статей, идущих в обратном порядке (последняя статья - сверху).

Корневому блоку назначьте шаблон blogs_. Двум остальным блокам нужно назначить шаблоны по умолчанию. Блоку слева будет предложен шаблон blogs_authors, а блоку справа - , справа — blogs_articles.

Корневой шаблон (шаблон страницы)

blogs_.tpl
<?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>
"; ?>
blogs_.tdd
<?php

$types = [
  1=>'block template(blogs_authors)',
  2=>'block template(blogs_articles)'
]
?>

Шаблон со списком ссылок на блоги пользователей

blogs_authors.tpl
<?php
    # Блок, которому назначен шаблоном blogs_articles
    $articlesBlock = 3;
    # Извлекаем данные таблицы users
    $table = Request::getTable(Blox::info('db','prefix').'users', $block);

    echo $dat['edit'];
    echo "<ul>";
    foreach ($table as $data)
    {
        echo "<li>";
            echo "<a href='";
                    echo "?page=1";
                    echo "&block=$articlesBlock";
                    # Запрашиваются записи одного пользователя 
                    echo "&p[4]={$data['user-id']}";
                    # Выше приведана короткая форма записи
                    # pick-запроса. Стандартная форма - ниже:
                    # echo "&pick[4][eq]={$data['user-id']}'";
                    echo "'>";
                echo $data['login'];
            echo "</a>";
        echo "</li>";
    }
    echo "</ul>";
?>

Шаблон для статей блогов

blogs_articles.tpl
<?php
foreach ($tab as $dat)
echo "
    {$dat['edit']}
    <h1>$dat[1]</h1>
    $dat[2]<br>
    <img src='datafiles/$dat[3]'><br>
    <br><br>
";
?>
blogs_articles.tdd
<?php

$titles[1] = 'Заголовок статьи';
$titles[2] = 'Текст';
$titles[3] = 'Фото';

$types[1] = 'varchar(255)';
$types[2] = 'text';
$types[3] = 'file';
$types[4] = 'int(4) unsigned';

$params['multi-record'] = true;
$params['backward'] = true;

# Поле для идентификатора пользователя 
$params['user-id-field'] = 4;
# ...скрыто
$fields['hidden'] = [4];
# ...и на него должен поступать запрос
$params['pick']['key-fields'] = [4];

?>

Автор должен щелкнуть по своей фамилии в левом блоке — в правом блоке появится первая пустая запись с кнопкой для редактирования. После создания записей, авторы будут видеть также кнопки редактирования созданных записей.


Примечания

  • Ниже блока со статьями автора, желательно разместить также и блок для комментариев посетителей (см. Публичные записи).
  • В примере не используется поле для даты записи. Чтобы добавить дату, посмотрите, как задаются значения полей по умолчанию.