Конфигурирование сайта
Конфигурирование сайта по сути дела сводится к корректировке двух текстовых файлов: коnfig в каталоге системных файлов и vs в каталоге программ. Часть из этих действий могут выполнять только пользователи, имеющие право входа на хостинг, а некоторая часть может выполнена пользователями, имеющими статус не ниже уровня Эксперт. Часть действий по конфигурированию сайта на уровне хостинга уже рассматривалась в статье Создание сайта на основе Системы, как необходимые для запуска сайта на основе Системы. В данной статье эти действия рассматриваются в более систематизированной форме.
Всеобщее и индивидуальное конфигурирование
При выполнении любого запроса к сайту, функционирующему на базе данной системы, выполняются следующие действия по загрузке последовательности конфигурационных файлов в соответствии с их иерархией.
1. Сначала загружаются конфигурационные переменные из файла konfig, размещённого в каталоге программ.
2. Далее загружаются конфигурационные переменные из файла konfig, в каталоге системных файлов сайта. При этом производится замещение одноимённых значений конфигурационных переменных, при котором их базовые значения зменяются на значения, установленные для конкретного сайта.
3. Если система определила, что взаимодействующий с ней пользователь имеет статус Эксперт и выше (см. Общая характеристика возможностей виртуального издательства, ) то производится поиск файла с именем konfig в корневом каталоге файлов данного пользователя и, если он имеется, то производится его загрузка и замещение значений конфигурационных переменных на те, которые указаны в данном файле.
Благодаря трёхуровневому построению системы конфигурирования решаются две задачи.
Во-первых, благодаря файлу конфигурации сайта можно задать общие для всех пользователей сайта важнейшие параметры: главную страницу, корневую книгу, основной порядок оформления страниц сайта, текстовые константы (включая язык) интерфейса, а также некоторые вспомогательные данные. Без конфигурационного файла сайта он попросту не заработает, хотя бы потому, что Система не "знает" какая статья на этом конкретном сайте является образом главной страницы, какая книга (сборник статей) является корневой для начала "блуждания" по его страницам. А если этого нет, то нет и подключения ссылок на регистрацию, авторизацию, а также на выполнение множества других действий. По сути Система - это просто набор скриптов, умеющих обрабатывать статьи, книги, представлять их в виде HTML-страниц, а также выполнять какие-то иные действия. В этом смысле конфигурационный файл является, в первую очередь, носителем сведений о той статье и той книге, от которых начинается процесс структурирования публикаций сайта и выполнения вспомогательных действий.
Во-вторых, благодаря иерархии конфигурационных файлов статусные пользователи (начиная с уровня Эксперт) могут создавать свою личную среду присутствия на сайте. В частности, они могут переопределить для себя лично главную страницу, корневую книгу, способы оформления страниц (включая возможность подключения собственных CSS и JS файлой), сменить формулировки фраз и язык интерфейса.
Важнейшие переменные файла konfig сайта
Важнейшими конфигурационными переменными сайта являются:
gs - определяет файл статьи в каталоге данных пользователей, которая является главной страницей;
ks - определяет статью в каталоге данных пользователей, которая является корневой книгой (сборником);
gm - определяет статью в каталоге данных пользователей, которая является страницей-навигатором;
ss - определяет статью в каталоге данных пользователей, которая является страницей сводной статистики публикаций;
ld - определяет файл макета личных данных.
Переменная gs - определяет файл статьи в каталоге данных пользователей, которая в данном контексте "назначена" главной страницей сайта.
Переменная ks - определяет файл статьи в каталоге данных пользователей, которая в данном контексте "назначена" корневым сборником (книгой);
gm - определяет статью в каталоге данных пользователей, которая является страницей-навигатором по тем или иным действиям с сайтом. За возможностей системы Навигатор является обычной статьёй, содержащей прямые ссылки на те возможности, которые устроитель сайта считает важными для посетителей. Пример "устройства" такой страницы на этом сайте может посмотреть любой авторизованный пользователь, перейдя на главной странице по ссылке со своим идентификатором. Для других сайтов Навигатор можно построить совсем иначе, просто переделав описание статьи и указав имя её файла в переменной gm файла konfig.
ss - определяет статью в каталоге данных пользователей, которая является страницей, представляющей сводную статистику публикаций на данном сайте. Это тоже обычная статья, использующая различные встроенные функции, интерпретируемые и исполняемые при трансформации Системой кода описания статьи в HTML-страницу. Авторизованные пользователи данного сайта могут выйти на неё через Навигатор и посмотреть что выводит эта страница и как написан её код (ссылка Код в подвале страницы).
ld - определяет файл макета личных данных, который по умолчанию становится основой для формирования файла личных данных авторизованного пользователя
Ещё несколько переменных не являются обязательными и нужны, большей частью, расширению Альбом . Они определяют используемые по умолчанию несистемные каталоги, где размещены медиа-файлы и уменьшенные изображения картинок, которые "выставляются" в альбомах.
kk - определяет каталог размещения медиа-файлов, по умолчанию используемый при формировании альбомов;
ki - определяет каталог по умолчанию для поиска уменьшенных изображений картинок.
Пример задания переменных конфигурации сайта.
gs shurem/gs.s
ks shurem/ks.k
gm shurem/gm.s
ss shurem/ss.s
ld shurem/ld.txt
ki db/photo/vp/
kk db/photo/vs/
Для донастройка сайта после его создания в соответствии с рекомендациями статьи Создание сайта на основе Системы минимально следует доопределить переменные gm, ss, ld. Для этого проще всего скопировать код соответствующих статей с этого сайта, создать на его основе свои статьи с тем же кодом и указать имена содержащих их файлов в соответствующих конфигурационных переменных. А дальше эти статьи уже можно править даже не заходя на хостинг.
Модификация оформления страниц
Если в вашем распоряжении имеется код базового файла konfig системы, то не представляет большой сложности изменение HTML-заголовком и подножий формируемых страниц, просто изменив бланки заголовков и подножий страниц, используемых при выводе публикаций и страниц, формируемых служебными скриптами. Описания этих бланков содержатся в следующих переменных:
ns.0 - бланк заголовка страниц, формируемых служебными скриптами;
ks.0 - бланк подножия страниц, формируемых служебными скриптами;
ns.1 - бланк заголовка страниц, формируемых публикациями;
ks.1 - бланк подножия страниц, формируемых публикациями.
Никаких развёрнутых комментариев по этому поводу в документации не будет. Там большей частью стандартный для заголовков и подножий HTML-страниц код. В частности, можно сменить имя подключаемых таблиц стилей. Но, чтобы понимать какой стиль в каком месте система подключает придётся изучать статьи этой документации. Если кто-то мне что-то посоветует по этой части, то с удовольствием воспользуюсь рекомендациями знатоков для изменения базовых конструкций. А уж лично для себя творите, что хотите.
В принципе, каждому действию системы (?~=<код_действия>...) можно сопоставить свои HTML-заголовки/подножия страниц. Для этого в конфигурационном файле надо создать переменные ns.<код_действия> и ks.<код_действия>. Если Система, выполняя определённое действие обнаружит переменные, соответствующие его коду, то к выводимой странице в начале и/или в конце будут пристыкованы соответствующие определения. Она только выполнит заполнение бланка. Если такого определения в конфигураторе нет, то будут использованы стандартные бланки.
Если полазить по страницам этого сайта, то легко можно обратить внимание, что страницы вывода публикаций оформлены довольно таки по-спартански. На большинстве сайтов над публикациями и под ними обычно есть довольно навороченные "шапки" и "подвалы". Этого же результата можно достичь и при использовании данной Системы. За оформление того, что будет выведено над статьёй (книгой) и под ними, "ведают" переменные: np.* и kp.*, соответственно. Соответствующие бланки обрабатываются и выводятся перед и после обрабатываемых стандартным образом описаний секций Содержание (.s) статей и книг. Эти бланки должны описываться уже с помощью языка разметки этих объектов, принятого в системе и описанного в документации (см. Порядок формирования секции Содержание для файлов статьи, Порядок формирования секции Содержание для файлов книги )
Все подобного рода модификации лучше делать на уровне конфигурационного файла сайта или личных конфигураций Экспертов, просто задавая изменения лишь для отдельных переменных конфигурации. Системный файл konfig лучше не трогать, чтобы в случае чего всегда можно было легко откатиться к базовым настройкам.
Смена языковых констант интерфейса
В исходном коде программ Системы явно не используются никакие текстовые конструкции. Все скрипты при выводе сообщений практически всегда запрашивают ту или иную переменную конфигурации. Если тексты каких-то сообщений или выводимых фраз интерфейса по каким-то соображениям не устраивают, то их легко изменить просто поменяв значение соответствующей конфигурационной переменной. Поэтому, если это нужно, то можно просто перевести эти сообщения в файле конфигурации сайта на другой язык и Система заговорит на бусурманщине.
Конфигурирование вычислительной среды
За конфигурирование вычислительной среды отвечает файл vs. Он связывает внешние имена функций, используемых при формировании публикаций с внутренними имена PHP-функций, доступных в системе.
Значащие строки файла имеют формат:
f.<внешнее_имя_функции> <имя_класса>.<имя_PHP_метода_класса> или
f.<внешнее_имя_функции> <имя_PHP_функции>
Встроенные функции могут быть связаны только со статическими методами. Однако вызываемый статический метод может использовать уже всё, что допустимо в PHP. Именно так построены многие существующие расширения.
В принципе одной и той же PHP-функции (методу) можно сопоставить несколько внешних имён. Никаких ограничений на число и тип параметров не предусмотрено. Весь контроль должен быть предусмотрен в самой функции (методе). Имя сопоставляемой функции можно и не указывать. В этом случае внешнее имя должно совпадать с именем соответствующей доступной встроенной в PHP функции.
Например, определение
f.array_sum
свяжет внешнюю функцию array_sum с функцией array_sum PHP. За счёт этой возможности можно подключить к системе какие угодно функции PHP, которые администратор сайта сочтёт возможным предоставить пользователям. На данном сайте этот перечень не слишком велик и они все описаны в данной документации. Главное - должно быть декларировано внешнее имя.
Благодаря такому способу конфигурирования вычислительной среды создание расширений и встраивание расширений не составляет особых проблем. Для этого достаточно написать свой PHP-код и установить его соответствие с внешним именем функции, которая будет использоваться его для формирования фрагментов текстов статей. Далее отладка может производиться уже внутри интерфейса система. Разумеется, абы кто этого сделать не сможет, поскольку разместить PHP-код в каталоге программ и внести правки в файл vs может только вхожий на хостинг администратор.
При возникновении ошибок при исполнении встроенных функций вычислительная среда может выдавать определённые сообщения. Пока возможность их замены на уровне конфигураций экспертов или сайта не предусмотрена.