Всем привет!
За окном метёт метель, а я пишу эти строки, в предвкушении, что наконец-то релиз :-) Поверьте, я его ждал еще больше, чем вы все. Слишком много исправлений, слишком много сил и времени потрачено, надеюсь не зря. Было закрыто 67 ваших тикетов на Гитхаб. Ни в одном релизе ранее столько не закрывалось.
Новый шаблон Modern
Благодаря участникам складчины, в комплекте InstantCMS теперь есть новый шаблон, который позже заменит текущий дефолтный. Я не стал выкладывать здесь скриншоты, мы обновили демо сайт, рекомендую ознакомиться с ним.
- полностью на SCSS, включая вендорные стили;
- Bootstrap4;
- поддерживает динамическую схему;
- огромное количество опций шаблона в админке;
- все иконки в SVG формате от Font Awesome Free.
Подчеркну, это не конструктор тем, это просто новый шаблон, где его схема формируется не как раньше жестко сформированным файлом схемы позиций, а динамически. Вы можете создавать ряды и колонки, назначать свои позиции, полностью регулировать вывод. Так же в настройках шаблона в админке вы можете менять всю цветовую гамму шаблона, менять базовые опции SCSS Bootstrap4.
Кроме этого, вы можете делать дочерний шаблон. Теперь это сводится буквально к созданию директории шаблона и созданию файла manifest.php в нём. Необходимо исправить какой-либо файл шаблона Modern? Нет проблем, копируете его согласно структуре в дочерний и изменяете. Zau4man сделал хороший пост на эту тему.
Новый компонент "Конструктор форм"
Теперь в комплекте есть новый компонент "Конструктор форм" с виджетом, полем, поддержкой шорткодов для вставки в поля типов контента и возможностью вставки форм на сторонние сайты.
Возможности компонента мы уже описали в документации.
Другие изменения для администраторов сайтов
- Возможность создавать и редактировать записи типов контента из админки (полезно для простых сайтов, где не требуется многопользовательность);
- Новый раздел в админке: "Проверка деревьев", где проверяются таблицы с вложенными множествами;
- Новый виджет "Поля контента" и опция "Позиция в записи" в настройках полей, где можно указать какие поля где будут выводиться;
- Исправлена проблема с некорректным определением версии MySQL при установке;
- При установке CMS импорт дампов оборачивается в транзакцию;
- Для профилей пользователей теперь можно указывать URL в настройках профиля. Со старых, цифровых URL будет корректный 301 редирект;
- SEO паттерны для профилей теперь корректно работают с любыми полями;
- Исправлена ошибка с валидацией полей типа "Список". Если в дополнениях вы используете зависимые селекты, приведите всё к новому порядку. Пример можно посмотреть в опциях виджета "Список контента";
- Исправлена проблема с сохранением формы создания фильтров типа контента;
- При установке дополнений теперь автоматически очищается кэш Javascript и CSS;
- При установке дополнений теперь автоматически увеличивается абстрактный счётчик, что позволяет скинуть кэш js и css в клиентских браузерах;
- Добавлена возможность указывать своё название вкладки связей. Опция находится в разделе "Заголовки" типа контента;
- Добавлена возможность указывать иконку пункта меню (работает, если шаблон это поддерживает);
- Добавлена возможность отключать изменение таймзоны пользователям;
- Добавлена возможность задавать вручную имя сессионной куки;
- Контроллеры в админке теперь сортируются с учётом их включенности - выключенные внизу;
- При включении опции "Разрешить смену языка пользователями", в аминке появляется соответствующее меню, где можно сразу переключить язык админки;
- Для различных токенов движка в целях безопасности увеличен их размер и метод генерации;
- При выборе нескольких категорий в типах контента, подгружаются свойства от всех выбранных категорий. Так же и выводятся потом на странице;
- Виджет "Фильтр контента" теперь также поддерживает предварительную фильтрацию после выбора каждой из опций фильтра;
- В виджете "Список контента" теперь можно указывать какие поля будут выводиться (включая категорию), для включенных полей можно задавать их опции;
- Виджет "Слайдер контента" теперь выводит и категорию;
- Исправлена ошибка генерации URL записи при включенном только {title} в нем (если {title} имеет числовое значение);
- Добавлена каноникал для фильтров;
- Добавлена возможность копировать пресеты редакторов;
- Исправлена работа опции полей "Обрабатывать специальные шаблоны". Теперь выводятся корректные значения;
- Исправлена работа поле родительской связи в фильтре;
- Добавлена возможность отключения ненужных городов и регионов;
- Все загружаемые файлы изображений в полях теперь фиксируются в базе данных. Удаление изображения в поле теперь сразу удаляет и файл;
- В группах в полях добавлены опции обтекания;
- Возможность отключения стен групп;
- При отключении компонента ленты активности, соответствующая вкладка выключается и на странице группы;
- Добавлена возможность отключать возможность переписки в личных сообщениях, оставляя при этом включенными различные уведомления;
- На страницах фотографий в фотоальбомах добавлена возможность выключать скачивание фото, и в целом показ блока данных о фотографии;
- Добавлены опции показа блока рейтинга: в записи и в списке;
- Добавлена возможность указывать SEO паттерны теперь в тегах, для всех тегов сразу;
- Добавлена поддержка атрибута samesite для куков;
- Для поля "Местоположение" добавлена опция "Автоссылка";
- Для поля "Цвет" добавлена опция прозрачности;
- Поле связи теперь выводит в записи сформированный список контента вместо обычной ссылки;
- Исправлено множество незначительных недочётов в админке;
- Исправлена микроразметка в глубиномерах;
- Исправлено формирование размера шрифта в облаке тегов и в целом логика выборки по параметрам в админке;
- Обновлён редактор Ace;
- Обновлён редактор Tinymce;
- Закрыта очередная порция тикетов (67 штук), которые писали участники сообщества https://github.com/instantsoft/icms2/milestone/20?closed=1
-
149 коммитов с предыдущего релиза https://github.com/instantsoft/icms2/compare/2.13.1...master , изменено около 520 файлов;Множество мелких исправлений и улучшений, которые обсуждались здесь на форуме, diff всё расскажет ;-)
Изменения для разработчиков
- Много рефакторинга кода;
- Продолжение работы по разделению контроллеров, множество жестко прописанной логики вынесено в хуки соответствующих контроллеров: стены, ленты активности и т.д.;
- Компилятор SCSS в комплекте CMS. Вы можете строить свои шаблоны на SCSS (по заданной структуре), движок скомпилирует автоматически при сохранении настроек шаблона;
- Пагинация теперь в шаблоне;
- Изменения в установщике CMS: появилась возможность выбирать шаблон при установке и теперь можно SQL виджетов писать отдельно для каждого шаблона. Полезно разработчикам шаблонов, которые делают "быстрый старт";
- Автозагрузка классов PHP теперь работает и с файлами моделей, больше не нужно инклюдить самостоятельно и более прозрачно наследовать модели любых контроллеров;
- Добавлено множество новых хуков. Их удобно смотреть, включив отладку: используемые и неактивные хуки на странице будут показаны в соответствующих вкладках;
- Выбор дополнительных категорий в типах контента теперь на стандартном поле, учитывайте это в своих дополнениях;
- В шаблонах зависимости теперь указываются не через файл inherit.php, а в новом общем файле manifest.php, где помимо цепочки наследования, указываются свойства шаблона, такие как название, автор, поддержка различных опций и т.п. Как пример, можно посмотреть этот файл в шаблоне modern.
- В настройках виджетов появилась новая опция "Стиль", в которой выбирается стиль контейнера виджета. Доступные стили определяются в файле /templates/ваш_шаблон/widgets/wrapper_styles.php. Пример можно посмотреть в шаблоне modern;
- Множество упрощений в файлах шаблонов, стало существенно удобнее;
- Языковые файлы шаблонов загружаются теперь с учетом наследования;
- Для email вложений теперь можно указывать свои названия;
- Для гридов в админке можно указывать тип фильтра "in", помимо существующих "exact, like, date";
- Для опций полей введено свойство extended_option, которое говорит, что опция доступна, например, в виджете "Список контента". Смотрите как пример виджет "Список контента" и опции полей;
- Добавлена возможность именования шаблонов... прямо в шаблоне. При помощи PHP комментариев. Посмотреть можно в шаблонах списка контента, в виджетах списка контента.
Существующий механизм статичной схемы виджетов продолжит работать без проблем. После обновления, если вы используете шаблон default, вы возможно обратите внимание, что помимо scheme.html, теперь есть scheme.php. Ничего не поменялось, просто сменили расширение в целях подсветки синтаксиса PHP в IDE. Можете удалить scheme.html, если не меняли его. Либо удалить scheme.php. Либо удалить scheme.php, а свой scheme.html переименовать в scheme.php. Так или иначе, ничего не сломается.
Как установить обновление InstantCMS
Важно! Перед установкой обновления убедитесь, что сторонние дополнения поддерживают новую версию InstantCMS! В противном случае вы рискуете окирпичить свой сайт.
Перед началом обновления обязательно сделайте резервную копию своего сайта и дамп базы данных. Обновляться лучше на копии сайта, поднятом локально на ПК или иным подобным способом. Мы не несем никакой ответственности за любые потери данных, произошедшие в результате неправильных действий при обновлении.
- Отключите кеширование в настройках сайта;
- Отключите объединение js и css в настройках сайта;
- Если вы используете свой шаблон и в нем есть файлы, присутствующие в пакете обновления, то обновите их;
- При возникновении "белого экрана" категорически читать здесь;
- Для тех, у кого свой шаблон мы подготовили статью как быть, если в обновлении CMS есть изменения в шаблоне, рекомендуем к прочтению.
Если в вашем шаблоне присутствуют JavaScript файлы аналогичные пути /templates/default/js/ и названиям в дефолтном шаблоне, замените/смержите их из пакета обновления. Не забывайте о сбросе кэша браузера абстрактным счетчиком.
Автоматическая установка
- Включите режим отладки в админке.
- Воспользуйтесь функцией "Проверить обновления" в панели управления InstantCMS 2.
- Система сама обнаружит обновление 2.14.0, предложит скачать его и установить.
- Для установки потребуется указать реквизиты для доступа по FTP.
- Проверьте, что версия InstantCMS изменилась в админке.
- Очистите кэш браузера, увеличьте на единицу абстрактный счётчик в настройках сайта.
- Обновление завершено. Если возникли ошибки при установке пакета, то обновление прошло некорректно, воспользуйтесь ручной установкой.
Ручная установка
Убедитесь, что вы используете InstantCMS 2.13.1 (версию можно посмотреть внизу любой страницы в админке или на главной странице админки в соответствующем блоке).
- Включите режим отладки в админке;
- Загрузите архив с обновлением.
- Перейдите в панель управления сайтом;
- Перейдите в раздел компоненты;
- Нажмите установить пакет дополнения;
- Очистите кеш браузера;
- Сверните окно браузера;
- Все содержимое папки package из архива обновления, скаченного в п.1 загрузите в корень вашего сайта, заменяя файлы;
- Вернитесь в свернутое в п. 7 окно браузера, нажмите F5 на клавиатуре и выберите архив, который вы скачали в п.2;
- На странице «Информация о пакете» нажмите установить;
- На странице ввода реквизитов ftp поставьте чекбокс "Пропустить этот шаг" и нажмите "Установить";
- Выключить режим отладки в админке;
- Обновление завершено. Если при установке пакета возникли ошибки, то обновление установилось некорректно по какой-то причине. В этом случае необходимо смотреть логи PHP на сервере.
Важно! После установки обновления зайдите по FTP на сервер, удалите директорию /templates/admincoreui/ и скопируйте на её место эту же директорию из полного дистрибутива установки InstantCMS 2.14.0.
Заключение
Конечно же, спасибо всем участникам складчины, как за инициативу, так и за поддержку. Спасибо всем, кто тестировал релиз-кандидат. Спасибо за сообщения об ошибках, за готовый код! Спасибо за простую поддержку. Всё это помогает делать InstantCMS лучше, добавляет мотивации к дальнейшей работе над CMS.
Спасибо, что выбираете InstantCMS!
Поддержите проект
Поскольку InstantCMS является open-source проектом, продукт которого поставляется конечным пользователям бесплатно, мы заинтересованы в привлечении спонсоров.
Вы можете стать официальным спонсором или оказать другую поддержку. Вы также здорово поможете, если поставите звезду на GitHub.