Предлагаю начать зиму со знакомства с новым релизом GetSimple Legacy CMS 2024.2, который включает в себя изменения, направленные на повышение удобства и безопасности использования GetSimple Legacy CMS.
Главное изменение, которое заметит пользователь после обновления - улучшенная работа с компонентами.
Компоненты в GetSimple CMS являются основными стандартными элементами, которые доступны и используются в построении возможностей по представлению контента фронтэндом (в контексте разговора о системе управления контентом) веб-сайтов, работающих под её управлением. Однако при концептуальной и практической важности компонентом, взаимодействие с ними, включая создание и редактирование, через графический пользовательский интерфейс панели администрирования, вызывало нарекания со стороны пользователей.
Поэтому изменения, представленные в GetSimple Legacy CMS 2024.2, служат началом исправления, доработки и последующего расширения возможностей использования компонентов.
Изменения в работе с компонентами
Редактор кода компонентов
Использование редактора кода повышает удобство работы с кодом компонентов. Редактор кода CodeMirror включён по умолчанию и применяется для всех сохранённых компонентов. Для вновь созданных компонентов, редактор кода будет применён после сохранения.
Редактор кода компонентов можно отключить стандартным способом - раскомментировать в файле gsconfig.php объявление постоянной define('GSNOHIGHLIGHT', true);
.
Название компонентов и формирование индентификаторов (слагов) компонентов
При создании нового компонента пользователю не обязательно сразу задавать его название. При сохранении компонента без названия, название будет сгенерировано автоматически и будет иметь вид “Component 1733085979”, где число это метка времени, возвращаемая функцией time()
в момент подготовки компонента к сохранению.
Идентификаторы (слаги) компонентов формируются автоматически из названий компонентов. Они могут включать только латинские буквы, цифры, знаки дефиса и подчёркивания.
В оригинальной GetSimple CMS это вызывало проблемы при выборе осмысленных и понятных имён для компонентов. Например, нельзя было использовать компоненты с полностью кириллическими названиями - в этом случае идентификатор (слаг), становился пустой строкой.
Теперь при формировании индентификатор (слага) компонента, название компонента транслитерируется, неподдерживаемые символы заменяются символами дефиса. Обрамляющие дефисы удаляются, повторяющиеся дефисы заменяются одиночными. При этом символы подчёркивания могут использоваться без ограничений.
Например, заголовки компонентов буду преобразованы в следующие идентификаторы (слаги) компонентов:
__Private__
=> __private__
;Component@1.2.1
=> component-1-2-1
;Левая панель. Секция 1
=> levaya-panel-sekciya-1
.
Обновление кода (сниппета) для использования компонентов
При переходе к редактированию заголовка компонента, пример кода для использования компонента (сниппет), не обновляется в живом режиме. Вместо этого выводится сообщение “Save components to update code”. Сниппет с новым идентификатором (слагом) компонента будет обновлён после сохранения компонентов.
Локализация элементов интерфейса работы с компонентами
Для улучшения локализации элементов интерфейса работы с компонентами, в языковой файл следует добавить два ключа с переведёнными строками:
SAVE_COMPONENTS_TO_UPDATE_CODE
- текст сообщения, выводимый вместо кода (сниппета) для использования компонента;COMPONENT_TITLE
- текст для метки поля ввода названия компонента.
Поддержка формата изображений WebP
Формат изображений WebP получил достаточное распространение и поддерживается всеми актуальными версиями веб-браузеров. Поэтому включение поддержки формата WebP в GetSimple Legacy CMS это необходимость, позволяющая пользователю расширить выбор форматов изображений, для удобного использования на своём веб-сайте.
Поддержка формата изображений WebP в GetSimple Legacy CMS доступна сразу после обновления до версии 2024.2, при условии использования версии PHP 5.4 и старше.
С изображениями в формате WebP пользователь может выполнять все действия, доступные для других форматов изображений: загружать их через загрузчик файлов, создавать миниатюры, формировать HTML-коды ссылок для встраивания изображений в HTML-код страниц.
Обработка имён загружаемых файлов и создаваемых директорий
Теперь при загрузке файлов и создании директорий через пользовательский интерфейс панели администрирования, производится автоматическая транслитерация их имён. Пользователю не надо самостоятельно переименовывать файлы перед загрузкой на веб-сайт, а имена для директорий можно вводить на кириллице, не задумываясь об их транслитерации латиницей.
Обновление темы оформления Innovation Theme и отключение плагина Innovation Plugin
Тема оформления Innovation Theme предлагала посетителям возможность поделиться страницами веб-сайта при помощи сервиса addthis.com. В настоящее время сервис прекратил работу, поэтому ссылка на него удалена из шаблона оформления.
Кроме того, в шаблон оформления добавлена логика, скрывающая раздел “Connect”, если при помощи плагина Innovation Plugin не задано ни одного адреса социальной сети или сервиса, связанного с веб-сайтом.
Анализируя веб-сайты пользователей, обращающихся ко мне за помощью, часто вижу оставленный включённым плагин Innovation Plugin. При этом веб-сайты не используют ни тему оформления Innovation Theme, ни другие темы, поддерживающие работу с плагином Innovation Plugin. Причина этого в том, что плагин Innovation Plugin автоматически включается при установке GetSimple CMS 3.3.16, а пользователь не отключает его, так как часто не знает о его существовании или предназначении.
Теперь плагин Innovation Plugin отключён по умолчанию. Для его использования пользователь должен принять решение о необходимости использования плагина и самостоятельно включить его.
Изменения для разработчиков
Если вы разрабатываете или поддерживаете плагины для GetSimple CMS, они будут совместимы с текущей и предыдущими версиями GetSimple Legacy CMS, однако вам следует учесть следующие изменения, сделанные в GetSimple Legacy CMS 2024.2.
Константы вместо переменных
GSFRONTEND
В оригинальной GetSimple CMS для проверки фронтэнда (публичных страниц) и бэкэнда (панели администрирования системы управления контентом) веб-сайта, использовалась глобальная переменная $base
. Значение переменной могло быть изменено в процессе выполнения кода. Например, разработчик плагина мог использовать переменную с именем $base
для хранения данных, что приводило к некоректному определению фронтэнда и бэкэнда с возможностью последующей компроментации данных веб-сайта, ошибкам выполнения кода и прочих побочных эффектах.
Функция is_frontend()
возвращала значение, проверяя переменную $base
, а это значит, что полагаться на полученный из неё результат, нельзя.
Поэтому вместо глобальной переменной $base
для определения фронтэнда и бэкэнда добавлена новая константа GSFRONTEND
со значением типа boolean
. Для фронтэнда константе устанавливается значение true
, для бэкэнда устанавливается значение false
.
Теперь функция is_frontend()
возвращает значение константы GSFRONTEND
, её использование стало безопасным.
GSNAME, GSVERSION, GSURL
Для предотвращения подмены значений переменных, предназначенных для хранения и получения информации о системе управления контентом, следует использовать константы вместо глобальных переменных:
GSNAME
- название системы управления контентом, вместо переменной $site_full_name
;GSVERSION
- версия системы управления контентом, вместо переменной $site_version_no
;GSURL
- адрес официального веб-сайта проекта (в настоящее время - ссылка на репозиторий GitHub), вместо переменной $site_link_back_url
.
Изменение результата работы функции get_site_lang()
Функция get_site_lang()
используется для получения кода языка из глобальной переменной $LANG
для последующего использования в качестве атрибута lang
HTML-документа. В переменной $LANG
хранится код локали, используемой для локализации пользовательского интерфейса панели администрирования, выбранной пользователем из доступных. Например, en_US
или ru_RU
.
При вызове функции с параметром get_site_lang(false)
, функция возвращала полное значение переменной $LANG
, которое не соответствует ожидаемому формату кода языка стандарта ISO 639. Это должно было быть исправлено.
Теперь вызов функции get_site_lang(false)
возвращает код языка, полученный из выбранного пользователем кода локали, соответствующий стандарту ISO 639. Например, en-US
или ru-RU
, вместо en_US
или ru_RU
.
Совместимость с PHP 8.4.1
Так как главная цель проекта это обеспечение работы системы управления контентом на современных версиях PHP, работа GetSimple Legacy CMS 2024.2 проверена на PHP 8.4.1. Проблемы с совместимостью не выявлены.
Это самые важные изменения в релизе GetSimple Legacy CMS 2024.2, о которых следовало рассказать подробно. Полный список изменений доступен в файле CHANGELOG.md.
Чтобы установить копию GetSimple Legacy CMS 2024.2 при помощи git и запустить локальный веб-сайт на встроенном веб-сервере PHP, выполните следующие команды:
git clone https://github.com/dimayakovlev/getsimple-legacy-cms.git --branch v2024.2 getsimple-legacy-cms
cd getsimple-legacy-cms
php -S localhost:8080
Локальный тестовый веб-сайт под управление GetSimple Legacy CMS 2024.2 будет доступен по адресу http://localhost:8080/.