Главная страница с уникальным набором полей без добавления дополнительного программного кода

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).

Комментарии: 3

  1. Михаил

    Чтобы работал просмотр, нужно делать редирект вместо генерации 404-ой.

  2. Админ

    Да, верно. Спасибо. Для перенаправления можно подключить к категории page заголовочный файл page.h.php следующего содержания:

    <?php header('Location: /', true, 301); exit;
    

    Если у вас уже используется такой заголовочный файл, но под другим именем, например pages.h.php, и в таблице site_categories имеется поле module, можно указать в этом поле категории page основное имя используемого файла (pages).

    Если в используемом заголовочном файле первый параметр функции header имеет вид 'Location: /'.$p1 или 'Location: /'.$r1['id'], это вполне приемлемо. Также в этом параметре могут находиться записи $_SERVER['HTTPS'] и $_SERVER['HTTP_HOST'].

  3. Админ

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

Отправить комментарий

Ваш адрес E-mail не будет опубликован.