Давно искал обновление компонента  Hikashop хотя бы до версии 4.4.4 в свободном доступе (хотя уже есть версия v 4.5.1), чтобы протестировать совместимость с моим "рукописным" шаблоном Helium Gantry5 от Rockettheme. И вот свершилось - нашел и скачал.

Попробовал 2 варианта - установку чистой новой версии Hikashop 4.4.4+  на  чистую Joomla 4.0.6  ( при одновременном установке модернизированного  шаблона Helium Gantry 5.5.7) + и установку обновления Hikashop 4.4.4 на  существующий сайт Joomla 3.10 + (при одновременном обновлении  шаблона Helium  Gantry 5.5.7).

Стандартная установка плагина Example Hikashop 1.1
Пример работы плагина Example Hikashop

 

Внимание, тестирование показало, что Hikashop 4.5.0 с русификатором на любом шаблоне Joomla4+ не корректно работает с PHP 8.0 (8.1) (на последнем этапе - при завершении заполнения заказа - система вылетает - появляется фатальная ошибка и дальнейшие шаги по оплате не возможны) --> причина

Отсутствует спецификатор формата в конце строки

решение ----> используйте на сайте пока версию PHP 7.4 (работает корректно, не использует строгое соответствие)

Количество ошибок при использовании php8 зашкаливает: помимо того что сайт падает (белый экран со множеством ошибок), так при включении режима отладки в Jomla4+ появляются ошибки, о существовании которых даже раньше не задумывался.

Первое, что пришло на ум - может php-код шаблона от Gantry5 Helium (Rockettheme) не подходит для интернет-магазина Hikashop при использовании php8+ (ведь минимальная  версия php для  Gantry5 - это php 7.1.3+, а максимальная не оговорена) или здесь что-то другое. Но "червячок" сомнений говорил - не может быть, ведь разработчики Gantry5 и Hikashop всегда уверяли, что ими произведена адаптация компонентов под php8+. Но все сводилось к одному - при подключении php8 и при нажатии на конечном этапе формирования заказа на кнопку "завершить" система вылетает с "белым экраном" с одними и теми же ошибками или же возникает что-то подобное:

Стек вызовов показывает перечень ошибок 

 

 и т.д.

Остановимся и прочитаем первую строчку массива ошибок - ведь именно этот код послужил причиной ошибки. Заглянем вовнутрь

Первое сомнение закралось, читая комментарии к коду для joomla4+

/** комментарии к коду php

* @начиная с Joomla 1.7.0
*/
 

Начал копать глубже. Оказывается первое отличие от php 7.4, что в php 8+ (как я узнал, погуглив) все записи типа %s должны иметь другой вид ->  % 1$ s (т.е. иметь символы 1$) - здесь (в файле Text.php) это, по крайней мере, соблюдено.

Второе сомнение возникло, что независимо от шаблона для Joomla4+, который используется для Hikashop, такого же типа ошибки возникают и в идущем по умолчанию шаблоне Cassiopea

Кстати, эти ошибки (типа   ОТСУТСТВУЕТ СПЕЦИФИКАТОР ФОРМАТА В КОНЦЕ СТРОКИ ) встречались у многих IT-frontend-разработчиков и раньше, именно при переходе к новым версиям php, начиная от php 5.4+.

Но не с проста первым элементом в перечне ошибок шла ошибка в строке 302 файла  Text.php (Joomla) - отсутствие данных для функции -  как оказалось, все дело было в переопределенной языковой константе ru-RU, которая предлагалась разработчиками Hikashop для установки у себя на шаблоне.

Именно в файле ru_RU (официально идущим в комплекте с компонентом) были допущены "фатальные" ошибки, которые не давали нормально работать русскоязычным пользователям Hikashop.

Не секрет, что браузерный переводчик Яндекса допускает вольную интерпретацию перевода символов и тем более знаков препинания (сам по своему усмотрения расставляет точки и пробелы) - и это все привело к ошибкам перевода и, соответственно, к пропаданию в переводе нескольких символов и знаков типа %s и %1$s или частичной потери символов записи этой связки. А php8 не терпит своеволия и требует точного соответствия.

Произошел конфликт "роботоризированного перевода" используемых констант  и кода  новейшей версии компонентов Hikashop и Joomla и PHP8, в результате которого мы и получили наш "белый экран смерти" сайта.

При дальнейшей отладке, после устранения "фатальных" ошибок, выяснилось, что не все просто и с компонентом DOMPDF 2.1 при использовании PHP8+, который обеспечивает генерацию pdf формата из строчного html-кода (нарушена структура pdf документа - пока разбираюсь). Коротко о проблеме: при использовании изначально для создания документа pdf тэгов <table> и <div> и <p> - все сгенерированные объекты накладываются друг на друга - чего не наблюдается, если использовать только тэг  <table> с различными классами. При PHP7.4 работать можно с любыми тегами. К сожалению, даже автор компонента не может объяснить это (работа под адаптацию PHP8 идет кое-как).

  

Дополнительно JOOMLA 4+ выдает предупреждение и требует (рекомендует) переставить строчки кода для генерации документа dompdf в файле example.php (это плагин оплаты заказа с помощью банковских карт оплаты) в соответствии с инструкцией по размещению обязательных и второстепенных параметров обработчика dompdf, рекомендованных php8 .

Ошибки в Hikashop встречаются редко, но они есть и их надо испралять.

Например, при отправке письма Администратору сайта о новом заказе идет обращение - "Здравствуйте,  , Вы можете получить доступ к подробностям заказа, перейдя по ссылке ниже, после прохождения авторизации на сайте:.........." - при этом нет ни имени , ни логина администратора - ошибка в типовом письме "Уведомление администратору о заказе" стр. 

'HI_CUSTOMER' => JText::sprintf('HI_CUSTOMER',$userInfos->name ),//@$mail->to_name - не работает;

необходимо заменить идущий по умолчанию параметр @$mail->to_name на $userInfos->name или $userInfos->email.

Теперь о CSS.

Первое, что бросилось в глаза - и для этого опять пришлось корректировать действующий шаблон под Hikashop (либо отменять модернизацию) - это внешне изменились сами кнопки перехода по товарам внутри категории товаров (появились иконки с текстом назад и далее) + появилась навигация картинок на поле карточки товара (кнопки назад-вперед, их раньше не было), Если вы раньше не дорабатывали шаблон  default_style, то кнопки перехода вас возможно порадуют - они стали больше по размеру, но вот навигация картинок встала коряво - даже в шаблоне по умолчанию кнопки располагаются прямо на картинке, что ни есть ХОРОШО (см. ниже справа).

                       

За кнопки вперед-назад (при наличии нескольких изображенией) отвечает включенный параметр Thumbnails slider for product page (правда его можно не использовать)

  

Вылечить баг можно с помощью кода css - найти и закомментировать стр. 2762 (в моем случае), исправить также баг в стиле в файле по умолчанию frontend_default.css

 

Кроме этого, возможно появится баг мини-изображениях под картинкой товара - широкие поля у параметра width

меняем код  - изменяем в стр. 619 в соответствии с шаблоном параметр width: 30px

 В итоге получаем вполне завершенный вид

Для поддержки старой версии кнопок перехода в административной панели Hikasop (на вкладке "НАСТРОЙКИ ИЗОБРАЖЕНИЯ") можно изменить код php в шаблоне  файла product/show.php строки (стр. 43 и стр.53).

Если код PHP в Hikashop 4.4.0 выглядел раньше так - и это был <span> 

 

То в Hikashop 4.4.4 код изменился - теперь это элемент html < i > внутри < div >

produkt_show_next.jpg

Или же поменять стили некоторых class-ов в стандартном файле custom.scss или в файле шаблона Hikashop - frontend_style.ccs .

В новой версии поменялись не только коды php, но и class-ы, div-ы, i-ы и  span-ы во всех шаблонах php - и это заставило дополнительно проанализировать коды   и исправить "баги" при замене старой версии Hikashop (ведь всё подтягивается и под PHP8)  .

Разработчик компонента Hikashop и ранее планировал  осуществлять замену стандартных кнопок шаблона с классом .hikabtn на модифицированные, например на hikabtn_new и давал возможность модернизировать вид корзины (Cart) простой замены стиля путем  дополнением записи суффикса модуля  благодаря задействованному алгоритму в стандартном шаблоне php

  или же тоже самое 

Добиться такого результата в Хикашопе можно, как всегда, 2 стандартными методами - копанием в коде php (как правило удалением аттрибутов текста в <span>-ах) или же изменением свойств css задействованных классов (display: none) 

Cтандартный стиль шаблона Hikashop обеспечивается установкой параметров css в следующие положения

   

Параметры можно изменить радикально - и пользователь интернет магазина в этом случае увидит совершенно другой стиль на сайте:

На данный момент (январь 2022 года) на моем сайте tehnoklimat21.ru  пока установлена версия Hikashop 4.4.0 / Joomla 3.10+ и  Helium 5.4.37 и для "красивости" в старой версии 4.4.0 были модифицированы файлы:

address / address_template.php - порядок и состав параметров покупателя

checkout / after_end.php - сообщения после успешной оплаты

checkout / login.php  - размеры заголовков

checkout / show_block_login.php

product / listing_price.php - стилизация карточки товара (размеры букв и цифр, цвет) 

checkout / show_block_cart.php 

и др. файлы

Полный переход на Joomla 4+ не осуществляю, пока мешает отсталость многих компонетов для Joomla - но мои попытки Вы можете посмотреть на другом сайте - техноклимат21.рф

Анализ старой и новой версии Hikashop показал, что в старой версии Hikashop 4.4.0 не работали суффиксы , установленные в HikasHop Content Module внутри tab -ов, например, вымышленный brand-ms2 не читался системой - а в новой всё прекрасно работает.

Кстати, классы для модулей Hikashop я использую на сайте такие - brands-ms, box-ms, animated-pane-ms - они "взяты" с шаблонов JM Modern Monster и Kids Monster и адаптированы для Helium .

Cовершенно не хотят устанавливаться старые стилевые модели корзин, прекрасно работающие в Hikashop 4.4.0 - если раньше это были три модуля разных стилей:

        

На Hikashop 4.4.4 пока работает только один стиль - доработкой внешнего вида других Cart Module ещё  занимаюсь ... работы хватает.

Нельзя не упомянуть о новой фишке отображения image в категории товара - hover_x_img_title - она обеспечивает анимацию картинки при навидении мышкой на карточку товара (вращение, увеличение и т.п.) и замену её другими вариатами  image (вид спереди, сбоку, сзади и т.д.) по умолчанию

При этом не рекомендуется выставлять размеры изображения в px на вкладке Hikashop Option - иначе  нарушается отображение картинок

Сам вариант отображения класса hikashop_img_hidden  в HTML есть, а вот готового описания пока еще нет -  его придется придумывать и писать самим (нет ни в одном шаблоне Hikashop как по умолчанию, так и custom style).

Вообще, многое со временем забывается - как и что делал 2-3 года назад, чтобы добиться тех результатов - уже не помню, поэтому и пишу для себя такие шпаргалки Hikashop, чтобы не забыть

 

Статья в редактировании....