G-Drive. Быстрый старт

G-Drive представляет собой программный каркас, позволяющий выполняться разрозненному коду приложения в едином окружении и берущий на себя выполнение ряда рутинных действий, таких как роутинг и выборка требуемых для запрашиваемой страницы данных из базы данных. Разработчик может добавлять код к отдельным страницам на каждом из следующих четырех этапов:

  1. Выполнение в контексте открытого соединения с базой данных.
  2. Выполнение заголовочного файла.
  3. Выполнение вложенного шаблона в контексте открытого в памяти буфера вывода.
  4. Выполнение общего шаблона, т.е. общего финального обработчика.

Возможность выполнения кода на каждом из первых трех этапов определяется значением соответствующего бита поля bits.

Выполнение кода на последнем этапе происходит независимо от каких-либо дополнительных условий. Если необходимо прервать выполнение приложения до начала выполнения общего шаблона, рекомендуется сделать это внутри заголовочного файла. Изначально в движке используется единый общий шаблон для всех страниц сайта, включая страницы ошибок. Если нужно использовать разные общие шаблоны, следует изменить код движка или код единого общего шаблона, либо использовать полные шаблоны так, как описано ниже:

  • разместить полный шаблон в заголовочном файле и добавить в его конец код завершения приложения (команду exit);
  • разместить полный шаблон в заголовочном файле, оставив в файле общего шаблона только код завершения приложения или полностью очистив его;
  • разместить полный шаблон в файле вложенного шаблона, оставив в файле общего шаблона только код для вывода результата выполнения вложенного шаблона, т.е. значения $page['content'].

Для создания страницы, доступной по адресу /page, нужно создать одноименную запись в таблице site_categories (поместить в поле id значение page), обнулив при этом поле bits. И далее в любом порядке при необходимости создать файл вложенного шаблона page.php с нужным содержимым и установить бит 4 поля bits, создать заголовочный файл page.h.php с нужным содержимым и установить бит 5 поля bits, создать файл для работы «в контексте открытого первичного соединения с базой данных» page.d.php с нужным содержимым и установить бит 6 поля bits.

Для работы со значениями полей таблицы можно использовать ссылки вида $page['имя поля'], например вложенный шаблон страницы может иметь следующий вид:

<h1><?= $page['name'] ?></h1>
<?= $page['content'] ?>

Результат выполнения вложенного шаблона сохраняется в $page['content'], заменяя исходное значение это переменной, и становится доступным для использования в общем шаблоне, например общий шаблон страницы может иметь следующий вид:

<!DOCTYPE html>
<html>
<head>
<title><?= $page['name'] ?> | Site</title>
</head>
<body>
<?= $page['content'] ?>

</body>
</html>

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

  1. Всеволод

    Мне нужно добавить дополнительный общий шаблон, но так чтобы можно было работать с вложенными шаблонами, как и раньше.

    Вы написали, что можно изменить код движка, но как именно? Я могу это сделать и сам, но хотелось бы увидеть ваши рекомендации.

  2. Админ

    Укажите в последней строке кода движка в качестве имени шаблона не 'index.php', а, например, $extra.'index.php' (вместо использования $extra можете определить специальную переменную для этих целей – смотрите начало кода движка и начало функции error) и изменяйте в коде модуля значение переменной $extra, добавляя в нее нужный префикс имени файла альтернативного шаблона.

    Если требуется только один альтернативный шаблон, можно использовать для его подключения установленный бит 7 поля bits. Назначение данного бита не строго регламентировано в описании, к тому же можно совместить его предполагаемое назначение и его использование в качестве селектора шаблона, если вы хотите использовать альтернативный шаблон для какого-то закрытого раздела сайта. Примеры формирования имени шаблона:

    // 0.php или 1.php (если не установлены биты старше 7-го)
    include(PATH.($r0['bits']>>7).'.php');
    
    // 0.php или 128.php
    include(PATH.($r0['bits']&128).'.php');
    
  3. Михаил

    Если вернуться к разговору об использовании полных шаблонов, то в последней строке кода движка вместо 'index.php' можно написать $r0['module'].'.php' и отказаться от использования вложенных шаблонов (можно даже удалить код для работы с вложенными шаблонами, расположенный перед последней строкой кода движка), заменив их полными.

  4. Админ

    Начиная с версии 3.08, для добавления префикса имени файла альтернативного шаблона вместо переменной $extra следует использовать одноименную функцию, например:

    extra('template-prefix','my_');
    

    Эта же функция позволяет получить установленное значение, причем беспокоиться о «неопределенности значения» не нужно, даже если его установка не происходит, например:

    require(PATH.extra('template-prefix').'index.php');
    

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

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