Сайт с пользователями одного типа

Рассмотрим концепцию сайта, в котором большое количество пользователей могли бы самостоятельно создавать и редактировать собственные страницы из стандартного набора страниц.

Редакторы собственных записей

Для создания набора таких страниц можно было бы автоматизировать процедуру создания страниц каждым пользователем, но разработчики Blox CMS предлагают более простой путь. Администратор сайта создает только один набор страниц, а каждый зарегистрированный пользователь автоматически становится редактором собственных записей (автором).

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

Запрос условной выборки

А чтобы в блоке отображались записи только одного пользователя, в ссылке на страницу с этим блоком должен присутствовать запрос условной выборки pick, указывающий на идентификатор того или иного пользователя, например: pick[4][eq]=99, где 99 — это идентификатор пользователя, а 4 — это поле для хранения идентификатора.

Список пользователей

Ссылки с запросами выборки, скорее всего, будут создаваться из списка пользователей сайта. Как же в шаблоне извлечь список пользователей? Эти данные не относятся к редактируемым данным, и для их извлечения придется написать запрос к базе данных к таблице users, или воспользоваться универсальной функцией Request::getTable() для извлечения данных любой таблицы:

Список пользователей (.tpl)
<?php

    $articlesPage = 1;
    $articlesBlock = 3;

    $table = getTable('users', 'my-table-id', $limit, $backward);

    echo "<ul>";
    foreach ($table as $data)
        echo "<li><a href='";
        echo "?page=$articlesPage";
        echo "&block=$articlesBlock";
        echo "&pick[4][eq]={$data['user-id']}";
        echo "'>{$data['login']}</a></li>";
    echo "</ul>";

?>
Обратите внимание, на то что в этом шаблоне нет page-данных, то есть никакие новые страницы и блоки не генерируются. Пользовательские страницы и блоки должны быть созданы отдельно обычном способом, а в этом шаблоне нужно только применять их идентификаторы, как $articlesPage и $articlesBlock в данном примере (которые станут известны только после создания соответствующих страниц и блоков).

Примечания