KorniloFF-ScriptS ©

Здравствуйте, Гость!

Путь страницы:   > Веб-мастеру > KFF > Структура CMS

Структура CMS

Состав CMS:

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

UPD 09.02.2018

  • 2site - образец директории для размещения под-сайта.
    • index.php - индексный файл корневой директории под-сайта. Не трогать!
    • templates - директория шаблонов под-сайта. Опционально. При отсутствии - CMS ищет шаблоны в одноимённой директории основного сайта.
    • config.php - файл системных и пользовательских настроек под-сайта. Выполняет те же функции, что и config основного сайта.
    • content - директория контента под-сайта.
    • content_images - директория изображений контента под-сайта.
  • core - системная директория с ядром движка CMS. Не рекомендуется туда заглядывать без крайней необходимости. Исключение составляет файл настроек - core/config.php.
    • modules - директория содержит модули движка
    • config.php - файл системных и пользовательских настроек. Отвечает за все настройки сайта, включая почту администратора, мета-теги по умолчанию и многое-многое другое. Редактировать его необходимо, но с осторожностью и сохранив резервную копию для возможности восстановления. Наследует настройки от системного coredefaultconfig.php.
  • content - директория контента сайта. Основная директория, с которой вам предстоит работать. Содержит все файлы, подключаемые в content.php. Может содержать вложенные директории - для структуризации контента.
    • articles - директория подключаемого контента.
    • backup - директория заархивированных (ZIP) резервных копий контента, комментариев пользователей, а также файла структуры сайта.
    • comments - директория комментариев пользователей.
    • content.php - файл структуры сайта. Отвечает за подключение к страницам внешнего контента, за формирование основного меню сайта, за видимость страниц для пользователей и мн.др.
  • content_images - директория для хранения изображений, используемых в контенте сайта. Например, изображений из статей.
  • css - директория стилей CSS и файлов нестандартных шрифтов (fonts).
    • core.css - базовый файл стилей движка. Используется как в оформлении основного сайта, так и всех подсайтов.
  • images - директория изображений движка. Не рекомендуется там хранить пользовательские изображения.
  • js - директория для хранения файлов javascript.
    • addons - директория системных скриптов
    • tools - директория подключаемых библиотек
  • PHP - директория для хранения PHP-файлов. В последних версиях CMS значительно уменьшила своё значение, поскольку многие скрипты были перемещены в модули. Но по-прежнему еще влияет на движок.В дальнейшем будет упразднена.
  • plugins - директория для хранения как встроенных плагинов движка, так и внешних, которые вы можете скачать с официального сайта KFF и разместить в ней.
  • templates - директория шаблонов сайта. Каждый из шаблонов располагается в своей директории.
    • errorpages - директория с шаблонами страниц ошибок. Можете их редактировать на своё усмотрение.
  • userfiles - директория пользовательских файлов. В релизе KFF - практически не используется. Единственно, если переименовать / удалить файл userfiles/downloads/__Debug.txt - будет отключён Debug-Mode. А если открыть его и изменить единственную цифру внутри него - будет изменён параметр error_reporting. 6- вывод всех сообщений об ошибках, включая предупреждения и strict mode. В дальнейшем, при необходимости, эту директорию можно будет использовать для загрузки пользовательских файлов.
  • demo - директория-маркер демо режима. Достаточно её переименовать / удалить, как движок заработает в рабочем режиме. Содержит файлы, используемые в Демо-режиме. В частности - файл настроек.
  • disabled_plugins.txt - файл создаётся / редактируется автоматически в результате работы встроенного менеджера плагинов (Панель управления -> plugins). Но можно его редактировать и вручную. Синтаксис - |||enabled_plugin||| §disabled_plugin§.
  • index.php - индексный файл корневой директории сайта (под-сайта). Не трогать!
  • readme.php - Файл с подсказкой по восстановлению забытого пароля от Панели управления. Для перехода по полезным ссылкам его можно открывать броузером по ссылке - readme.php. Там содержатся необходимые инструкции по действиям для восстановления Админ-доступа к сайту.
  • sitemap.xml - файл автоматически генерируемой XML-карты сайта. Интервал его обновления регулируется настройкой $cf['sitemap']['expires'] в днях.

Файл content.php

Ниже я приведу образец файла content.php из ДЕМО-версии KFF и на его примере попробуем разобраться, как сформировать нужную структуру сайта и меню.

Теперь рассмотрим подробнее. Начнем с кода первой страницы сайта "О сайте":

...
О сайте

// Пример подключения внешней страницы из папки articles:
#EVL# $seo= ["Стартовая страница сайта"]; $kff['getPHP']($cf['folders']['content'] . 'О_сайте.htm'); #
...

//== Пояснения:
//== Синтаксис подключения соблюдать в точности, включая начальный и заключительный
//== 	комментирующие диезы - #. Исполняемый код должен заключаться в конструкцию
//==	#EVL# ...CODE without linebreaks... #

//== Глобальный массив $seo может заключать в себя 2 строковых значения.
//== $seo[0] передаёт своё значение мета-тегу description
//== $seo[1] передаёт своё значение мета-тегу keywords
//== Оба значения должны соответствовать синтаксису соответствующих мета-тегов.

//== $output - глобальная переменная, содержащая в себе весь обработанный HTML-код, предназначенный для отправки клиенту.
//== $kff['getPHP']() - моя пользовательская функция, позволяющая подключить внешний файл контента к странице
//== 	с возможностью исполнения внутненнего РНР-кода.
//== Принимает 2 аргумента:
//== Обязательный 1 строковый аргумент - путь к файлу.
//== Опциональный 2 аргумент, если есть - подключает к странице комментарии.

//== $cf['folders']['content'] - конфигурационная переменная (определена в файле config.php),
//== 	отвечающая за расположение папки с подключаемым контентом. По умолчанию - папка content/articles

Использование глобального массива $seo будет подробнее рассмотрено в статье Управление Мета-данными.

$cf['folders']['content'] - значение этой переменной также можно установить из /?editConfig - Folders -> Content. Отвечает за расположение основной директории подключаемого контента. Эта директория может содержать поддиректории.

Тег <ml1...n> - аббревиатура от "menu level" - придуман мной. Но это никак не влияет на валидность сайта, поскольку сам файл content.php не выдаётся клиенту, а парсится движком. Если вы посмотрите исходный код моего сайта, то подобных тегов там не встретите, т.к. они все заменены перед отправкой клиенту на валидные теги заголовков.

Страницей сайта движок считает участок кода между двумя парными <ml1...n>, в которых заключено название страницы. Оно же будет выведено как пункт меню. Цифра в теге означает уровень вложенности страницы в общей структуре сайта.


<ml1> Название 1 страницы </ml1>
	

HTML-код первой страницы. Это страница 1 уровня вложенности в структуре сайта.

<ml1> Название 2 страницы </ml1>

HTML-код второй страницы. Это страница тоже 1 уровня вложенности в структуре сайта.

<ml2> Название 3 страницы </ml2>

HTML-код третьей страницы. Однако эта страница будет уже 2 уровня вложенности в структуре сайта.

В основном меню сайта она появится при переходе на 2 страницу.

Далее количество уровней может продолжаться до значения, определенного в настройках - Menu->Levels.

<ml1> Название 4 страницы </ml1>

HTML-код четвёртой страницы. Это вновь страница 1 уровня вложенности в структуре сайта.

И т.д., и т.п., etc.

Функция $kff['getPHP']()

Функция $kff['getPHP'](string $pathFile[, bool $includeComments]) принимает два аргумента: путь к подключаемому файлу (обязательный)) и подключение модуля Комментарии (сравнение с NULL, опциональный). В случае, если пути  $pathFile не соответствует реального файла, будет выброшено исключение. Функция возвращает PHP-код подключаемого контента, а при наличии второго аргимента - и код модуля Комментарии.

$pathFile может содержать как абсолютный путь к подключаемому файлу, так и конкатенированную строку, состоящую из конфигурационной переменной, отвечающей за путь к директории с подключаемым контентом - $cf['folders']['content'] - плюс имя файла. Если файл находится во вложенной директории, он должен содержать её в своём имени. Например: $cf['folders']['content'] . 'О_сайте.htm' или $cf['folders']['content'] . 'news/Тест 2.htm', где news - вложенная директория. Прошу прощения за такие подробности, но случались вопросы...

$includeComments - необязательный аргумент. Если не задан - равен NULL. Отвечает за подключение комментариев к выводимой странице. Если отсутствует или равен NULL - комментарии не подключаются. При любом другом значении - подключаются. О модуле Комментариев я напишу подробнее, поскольку он тоже обладает большим количеством настроек.

!!! Очень важен синтаксис использования исполняемого кода. Поскольку файл content.php парсится движком как текстовый - исполняемый код внутри него должен быть обрамлён в конструкцию:

#EVL# ...CODE without linebreaks... #

И писаться в 1 строку !!!

Постараюсь пояснить. #EVL# $kff['getPHP']($cf['folders']['content'] . 'О_сайте.htm'); # Решётки (диезы) в данном контексте не являются комментариями(!), а обрамляют исполняемый PHP-код в файле content.php. Это поведение можно изменить в конфигурационных настройках, однако, я настоятельно не рекомендую этого делать, поскольку можно полностью сломать логику движка. Далее, переменная $output, в соответствии со своим именем, принимает в себя выводимый контент страницы.

Все эти правила касаются лишь кода в файле content.php - и только его. Весь PHP-код, находящийся в подключаемых файлах, оформляется строго каноническим образом.

Скрытие страниц из меню и/или карты сайта

Иногда бывает необходимо сделать невидимые страницы, доступные лишь администратору сайта. Это могут быть черновики статей, незаконченные разработки. Конечно, можно вынести такие материалы в подсайт, и закрыть его от индексирования, но удобнее было бы видеть их сразу в общей структуре сайта.

Такая возможность есть. Достаточно разместить под заголовком страницы маркер <p class=warning>Скрытая страница</p>, как страница исчезнет из общего меню и будет доступна лишь администратору. Цвет таких пунктов меню - со скрытыми страницами - изменится.

Можно изменить маркер невидимости в настройках конфига Hidden -> Marker при необходимости. Схематический пример использования скрытой страницы:

...
<ml1> Видимая страница </ml1>
	

Эта страница будет отображена в общем меню сайта и в sitemap.

<ml1> Невидимая страница </ml1> <p class=warning>Скрытая страница</p>

HTML-код второй страницы. Это страница тоже 1 уровня вложенности в структуре сайта.

...

Позже, при удалении строки <p class=warning>Скрытая страница</p>, страница сразу станет доступной для всех пользователей сайта.

Другие параметры, расположенные в разделе Hidden настроек конфигурации, также влияют на отображение скрытых страниц, и прокомментированы в интерфейсе.

Скрытие всего сайта

CMS позволяет в одно движение закрыть доступ к сайту всем пользователям, включая роботов поисковых систем.

Например, идут длительные технические работы, и вы не хотите, чтобы неработающий сайт видели посетители, достаточно зайти в настройки конфигурации, и в параметре Site -> Content_visible удалить значение true (или поставить "0").

После сохранения настроек при попытке зайти на сайт пользователь увидит следующую заглушку:

Технические работы на сайте

А администратор, работающий в таком режиме, будет видеть напоминание:

Сайт в режиме обслуживания

Комментарии к теме ( 0 )

Комментариев пока нет.

Дабавить комментарий