Вийшла нова версія 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 - це запит в БД