G-Drive позволяет использовать станицы с уникальными наборами полей для хранения содержимого. Для создания подобной страницы, доступной по адресу /page, нужно создать одноименную запись в таблице site_categories (поместить в поле id значение page), установив в поле bits режим разрешений 3, и создать соответствующую таблицу объектов site_page с необходимым набором полей и пустым объектом для хранения содержимого. У главной страницы уникальный набор полей задается аналогично: у пустой категории устанавливается режим разрешений 3 и создается таблица объектов с пустым объектом, содержащая в своем имени только префикс (site_).
В Gency ни пустую категорию, ни пустой объект этой категории (даже по прямой ссылке) просмотреть невозможно. В первом случае адрес будет совпадать с адресом одной из страниц списка категорий, например /?p=1, во втором – с адресом страницы выхода /, при этом риска случайного выхода из панели нет. Решением данной проблемы могло бы стать использование непустой категории вместо пустой с добавлением к главной странице сайта дополнительного программного кода для выбора данных из таблицы, связанной с непустой категорией, однако есть способ не добавлять программный код. Для этого тоже нужно создать непустую категорию, но не создавать для нее таблицу объектов, а создать представление, связывающее данную категорию с таблицей объектов пустой категории (site_):
CREATE ALGORITHM=MERGE VIEW `site_page` AS SELECT * FROM `site_`
Единственным недостатком описанного способа является отображение пустой категории в списке категорий панели. Я планирую устранить этот недостаток в ближайшее время, а пока вы можете исключить отображение пустой категории при помощи редактирования шаблона списка категорий или использовать для пустой категории подходящую пиктограмму.
Для упрощения адресов загружаемых файлов и удобства их загрузки можно указать категорию page в качестве основной категории панели.
Для формирования главной страницы с полностью уникальной разметкой можно использовать один из способов, предложенных в статье G-Drive. Быстрый старт, например можно разместить полный шаблон в заголовочном файле и добавить в его конец код завершения приложения (команду exit):
<!DOCTYPE html> <html> ... </html><?php exit;
Для работы со значениями полей таблицы можно использовать обычные ссылки вида $page['имя поля'], либо их прототипы вида $r1['имя поля']. Также есть возможность работать непосредственно со значениями полей пустой категории, а не пустого объекта, по ссылкам вида $r0['имя поля'].
Чтобы запретить отображение точной копии главной страницы по адресу /page, можно подключить к категории page заголовочный файл page.h.php следующего содержания:
<?php error(404);
Если у вас уже используется такой заголовочный файл, но под другим именем, например 404.h.php, и в таблице site_categories имеется поле module, можно указать в этом поле категории page основное имя используемого файла (404).
Чтобы работал просмотр, нужно делать редирект вместо генерации 404-ой.
Да, верно. Спасибо. Для перенаправления можно подключить к категории page заголовочный файл page.h.php следующего содержания:
Если у вас уже используется такой заголовочный файл, но под другим именем, например pages.h.php, и в таблице site_categories имеется поле module, можно указать в этом поле категории page основное имя используемого файла (pages).
Если в используемом заголовочном файле первый параметр функции header имеет вид
'Location: /'.$p1
или'Location: /'.$r1['id']
, это вполне приемлемо. Также в этом параметре могут находиться записи $_SERVER['HTTPS'] и $_SERVER['HTTP_HOST'].Пустой объект пустой категории теперь можно редактировать и сохранять по адресу / панели. Отдельная страница (подтверждения) выхода упразднена. При этом никто не запрещает разместить форму выхода на странице редактирования объекта, особенно если вы не используете общую для всех страниц форму выхода.