Вышла новая версия OkayCMS 3.1.0
Вышла OkayCMS 3.1.0
Изменений было довольно много, в основном технического характера. Но на данный момент мы сделали 80% от того, что мы хотели от модульности. В ближайшую неделю мы сделаем объемную, но не слишком сложную работу по модульности и параллельно готовим документацию, чтобы разработчикам сайта было понятно, как теперь стоит делать модули для новой версии.
А пока я поверхностно, простым языком постараюсь объяснить что было сделано.
Сделана модульность способов доставки
Для наглядного примера мы также сделали модуль Новой Почты. Смотря на него, можно по аналогии понять как работают модули доставки. Делая модульность доставки мы также переделали ajax в корзине, чтобы менялся не весь HTML, а только необходимые нам элементы.
Сделана, так называемая нами, "модульность шорткодов".
Это возможность выводить определенный функционал в дизайне сайта с помощью вставки шорткода в определенном месте. Для примеров реализации этого мы сделали модуль "Быстрый заказ" (заказ в 1 клик), а также переделали баннеры. Теперь баннеры, это отдельный модуль с большим функционалом, чем ранее. Об этом стоит рассказать отдельно.
Модуль "Баннеры"
Во-первых, настройки для групп баннеров вынесены в админ. панель. Теперь не нужно за каждым чихом звать программистов и лезть в код.
Во-вторых, теперь баннеры вставляются в дизайн одним коротким шорткодом, а не большим куском кода.
В-третьих, сделана возможность получить индивидуальный шорткод для группы баннеров и выводить эту группу по тексту в описании товара, категории, бренда, записи в блоге или просто на странице.
В-четвертых, сделаны варианты отображения текста на баннере.
Модульность блоков в админ. панели.
Была сделана возможность добавлять блоки модуля в разные места в админ панели. Для этого, были размечены страницы в админ. панели и в нужное место в админ. панели можно вызвать отображение определенного модуля. Если в config/cofig.php включить режим разработчика (dev_mode = true), то такие места будут подсвечены красным. На данный момент такие места созданы только в товаре и на странице заказа, но в ближайших версиях мы покроем таким функционалом всю систему. Как пример, теперь в списке товаров добавилась функциональная кнопка "Выгрузить в XML"
Модульность конфигов
С выходом текущей версии появилась возможность расширять данные конфигурации, расположенные в файле config/config.php через новые модули системы. Для этого вам необходимо просто создать файл в модуле расположенный по такому же адресу, а именно config/config.php относительно корневой директории вашего модуля. Стоит отметить, что данный функционал работает только для расширения конфигураций, но никак не для модификаций текущего состояния главного config.php вашего проекта. При попытке модификации какого-либо параметра в корневом файле конфигураций будет выброшено исключение с указанием параметра, который вы пытаетесь подвергнуть модификациям.
Индексирование таблиц модулей
Появилась возможность назначать индексы таблицам, которые инициализируются посредством установки модулей. Стоит отметить, что индексирование на данный момент возможно только по одному столбцу, что исключает возможность добавления данным таблицам составные индексы на этапе установки. В ближайших версиях мы планируем реализовать поддержку составных индексов.
Реализован функционал хуков посредством классов типа Extender
Extender это класс посредством которого можно расширить функциональность системы, а именно реализацию определенных методов в указанных классах. Работает это следующим образом. Вы выбираете метод класса, который хотите расширить. Затем проверяете, есть ли в конце реализации данного метода вызов Extender-а (например: ExtenderFacade::execute(s_METHOD__, $returnData, func_get_args()). Допустим это метод получения объекта корзины Okay\Core\Cart::get(). После этого вы создаете класс внутри вашего модуля который будет модифицировать результат работы Okay\Core\Cart::get(). Назовем этот метод Okay\Modules\Vendor\ModuleName\CartExtension::initCustomDiscount($returnCart). В качестве первого аргумента созданный метод принимает результат работы Okay\Core\Cart::get(), после чего модифицирует его нужным вам способом и на выход отправляет измененный объект. В нашем случае это будет начисленная скидка. После чего мы регистрируем данный метод в Init/Init.php вашего модуля в методе init() и теперь после работы метода Okay\Core\Cart::get() отработает зарегистрированный нами метод. Данных методов может быть больше одного и отрабатывать они будут в приоритетах модулей в списке админ панели.
Расширение меню администратора из модулей
У модуля появилась возможность создавать собственные пункты меню в админ панели слева. Пример реализации вы можете увидеть в модулях OkayCMS\FAQ и OkayCMS\Banners. Если у корневого пункта не задано изображение, то на его место подставляется первая буква названия модуля.
Расширение настроек работы с товарами не в наличии
Добавлен в раздел Настройки - Настройки каталога следующий селект:
Отсутствующие товары : Отображаем стандартно / Перемещаем в конец списка / Скрываем в каталоге
Если выбран первый вариант - ничего не делаем.
Если выбран второй вариант - в клиентской части в каталоге сначала отображаем товары, которые есть в наличии (количество больше 0), а затем товары не в наличии.
Если выбран третий вариант - скрываем такие товары из списка в каталоге, но оставляем доступными по прямой ссылки.
Отсутствующие товары - это те товары у которых у всех вариантов количество 0 или отрицательное. Если хотя-бы у одного варианта товара задано количество больше нуля, это значит что такой товар есть в наличии.
Перемещены в конец списка товары будут только в клиентской части. В админ. панели сортировка будет такая-же, как была.
Товары, скрытые для отображения в каталоге будут доступны для клиентов и поисковых систем при переходе по прямой ссылке.
Добавили раздел "Обучение"
Добавили раздел обучение, где собраны инструкции для базовых работ на сайте. Данный раздел будет полезен для тех, кто впервые работает с OkayCMS и позволит снять нагрузку с веб-мастеров по обучению пользователей работе с системой. Информация в разделе будет обновляться и добавляться со временем.
Прочие вещи, которые были сделаны в новой версии
Улучшили показатели по PageSpeed, особенно для десктоп версии. Но это не предел, будет ещё работать над этим.
Заменили шрифтовые иконки materialdesignicons на более легковесные
Добавили отображение просмотренных товаров
Исправили неправильную ссылку на страницу покупателя из заказа (прблема описанная здесь )
Исправили ситуацию, когда указанный телефон не отображался в настройках дизайна, но показывался на сайте
Исправили ситуацию, когда между ссылками на соц. сети добавлялась пустая строка что вело к некорректному отображению ссылок на сайте
Исправили длину поля IP в БД чтобы не было проблем с IPv6 адресами
Исправили проблему с очисткой каталога, описанную здесь
Переделали загрузку изображений товара, убрали старый код.
Исправили работу рейтинга
Исправили работу модуля оплаты ЯндексКасса, подверстали кнопку перехода к оплате
Исправили работу модуля оплаты PayKeeper
Сделали корректную отправку статусов заказа на почту
Переделали ajax в корзине, чтобы менялся не весь HTML, а только необходимые нам элементы
Исправили несколько переводов к шаблонам
Исправили проверку PHP версии в установщике
Исправили работа выключения сайта через админ. панель
Исправили пару замечаний по работе TinyMCE с изображениями и видео
Скачать новую версию можно по ссылке архив с изменениями по сравнению с 3.0.3 по ссылке
Изменения из файла config/config.php нужно перенести вручную, а не заменой файла
Файл в папке 1DB_changes - это запрос в БД