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

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;

Т.е. нужно разместить полный шаблон указанного выше формата в файле .h.php и установить бит 5 поля bits, при этом бит 4 можно очистить.

Для работы со значениями полей таблицы можно использовать обычные ссылки вида $page['имя поля'], либо их прототипы вида $r1['имя поля']. Также есть возможность работать непосредственно со значениями полей пустой категории, а не пустого объекта, по ссылкам вида $r0['имя поля'].

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

<?php error(404);

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

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

  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'].

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

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