О сборке

Сборка основана на ocStore (а тот — на OpenCart 3.0.3.7). В наследство от ocStore остались нужные SEO фичи (H1, SeoPro для ЧПУ), а плюс полезные модули - при необходимости правите и вперёд. Все ненужные расширения скрыты от глаз в разделе Пользователи/Группы пользователей. OpenCart подходит не только для магазинов, но и для любых бизнес-сайтов благодаря простым и логичным функциональным блокам. Exopencart — шаг вперёд, чтобы платформа из коробки была юзабельной. Вроде получилось. Если несогласны, дайте знать.

Основные отличия от стандартного ocStore

1. Шаблон по умолчанию был полностью переписан. Bulma используется в качестве UI фреймворка по-умолчанию

Любители готовых модулей могут возразить, что это делает несовместимыми большую часть расширений у которых есть UI на стороне каталога. Тут я согласен, но не считаю это проблемой, так как внести правки несложно, если вы достаточно квалифицированы. При этом Bulma по моему нескромному мнению "лучше" Bootstrap, к тому же Bulma это UI фреймворк, то есть никакого JS, что при кастомизации скорее плюс (на мой взгляд).

2. В качестве расширения имеется готовый компилятор Bulma SCSS.

Просто переопределите нужные вам переменные Bulma, нажмите кнопку, и ваша тема готова! Имейте ввиду, что в сборке используется версия bulma 0.9, так как для версии 1.0 нет совместитмого компилятора на php. Ничто не мешает скомпилировать версию 1.0 на стороне, а после просто заменить содержимое файла ui.min.css в папке /catalog/view/theme/default/css.

3. Функционал блога очищен от грязи и теперь работает нормально

В целом спасибо авторам ocStore и за то, что было, хотя это была откровенная халтура. Сейчас блог более или менее причёсан и им можно пользоваться.

4. Добавлены поля для заголовков модулей

По умолчанию OpenCart 3 берет названия для модулей из файла локализации, что сложно назвать удобным и практичным подходом. В exopencart модули, имеющие заголовки (избранные, новинки, акции и др.) дают возможность указывать их на нескольких языках и отображать указанное значение на стороне каталога. Так, например, используя модуль Рекомендуемые (featured), можно легко и быстро выводить произвольные наборы товаров с произвольными заголовками.

5. В настройках системы реализована возможность добавлять произвольные контакты

Нужная фича, которая позволяет указать необходимые ссылки с иконками (или без), а также с HTML классом (для удобства стилизации) и использовать их в любом месте сайта, так как они доступны через $this->config

6. Полностью переработан стандартный механизм заказа (очень громоздкий и неудобный в ocStore/OpenCart 3);

Работа сопоставимая с подвигом Геракла, ибо технически это один из самых сложных участков системы. Стало намного лучше (сам себя не похвалишь, никто не похвалит).

7. Обновлен стиль панели управления

Согласен, что это не самый важный пункт, но я тот ещё эстет, так что хотелось чуть более приятного UI в адмике. Также изменен состав и порядок пунктов главного навигационного меню панели управления. Показалось что "так лучше".

8. Произвольные SEO фразы для каждого поддомена

В настройках системы теперь можно указать произвольные SEO фразы для каждого магазина (поддомена), которые можно использовать для автоматической генерации SEO заголовков страниц и отдельных модулей. Например, у вас есть поддомен saratov.exopencart.ru и вы хотите чтобы заголовок для всех категорий/товаров/статей/модулей на этом поддомене содержал фразу "в Саратове" (или любую другую). Сейчас это не проблема. 

9. Модуль Магазин теперь имеет смысл и цель

Он был сильно доработан и если включен, то рядом с логотипом (в стандартном шаблоне) будет отображаться текущий магазин (текущий город, если делать для каждого города поддомен), при клике на который будет всплывать модальное окно с выбором из всех имеющихся магазинов, с возможностью поиска по магазинам на клиенте. При этом контент модального окна подгружается асинхронно, что слегка увеличивает скорость отклика, а также позволяет не включать в полученный от сервера HTML-код ссылки на разные поддомены. Знакомый SEOшник сказал что это важно. Поверил ему на слово.

10. Изменена страница в режиме обслуживания

По-умолчанию она была совсем грустная (как и весь дефолтный шаблон). Теперь чуть повеселее и посимпатичнее.

11. Добавлен отдельный модуль для уведомления об использовании cookies.

Устал делать одно и то же на каждом проекта заново, поэтому запилил готовое расширение и включил его в сборку. Модуль позволяет указать произвольный текст уведомления на нескольких языках, отображающийся при первом посещении сайта, текст на кнопке согласия, а также ссылку на статью в которой изложены правила и условия использования сайта.

12. Реализован живой поиск по каталогу

Вместо использования различной степени горбатости "готовых решений", написан с нуля функционал "живого" поиска. Не скажу что он идеален, но он работает и при необходиости его правка не будет неравной схваткой с полётом фантазии разрабочика.

13. В админке, в разделе Файлы для скачивания добавлена возможность поиска по файлам

Столкнулся с задачей поиска файлов на одном из проектов и подумал, что это годная фича, запилил её в сборку.

14. Добавлена возможность указать SEO фразы для блока

Такой возможности не было изначально, так что теперь для блога есть возможность указать произвольные SEO заголовки на нескольких языках.

15. Добавлен функционал ответов на отзывы и комментарии 

Нужная для коммуникации с пользователями фича. Реализована для отзывов о товарах и комментариев для блога.

16. Добавлена возможность указывать размеры изображения логотипа

По-умолчанию был просто путь к изображению, как есть. Работает, но неудобно. Теперь можно указать произвольные размеры, которые будут переданы в разметку, чтобы добавить их в атрибуты width и height.

17. Реализован функционал опционального сжатия CSS и JS файлов

Мастхэв фича, которую умельцы на форумах предлагают в виде модуля. Но опыт использования таких модулей не внушал доверия. Пришлось запилить эту фичу с нуля и включить её в сборку.

18. Реализован функционал опционального создания миниатюр изображений в формате .webp

На дворе 2025 год и сложно встретить браузер который не поддерживает этот формат. А формат этот существенно уменьшает вес изображений, что положительно сказывается на времени загрузки страницы. Замечу что функционал реализован максимально просто и элегантно, прямо в библиотеке Image. Встречал на просторах сети решение в виде модификатора, которые правил библиотеку Response, где переписывал (!!!) расширения файлов изображений прямо в HTML который отдается браузеру. Две недели снились кошмары.

19. В папке storage инициализирован composer

По-умолчнанию в OpenCart не инициализирован composer и это грустно. В exopencart эта проблема решена, теперь можно быстро и легко работать с зависимостями.

20. Добавлен отдельный шаблон страницы для успешного оформления заказа

Прежде использовался шаблон common/success, теперь для этого есть отдельный шаблон, который выглядит чуть симпатичнее и его можно редактировать не боясь что эти изменения затронут отображение сообщений с использованием common/success.

20. Реализованы crop и scale режимы при создании кэшированных миниатюр изображений

Наболевшая тема в OpenCart, если исходники ваших изображений имеют разные пропорции, то при создании миниатюр будут добавлены белые поля. Добавил опциональный аргумент $mode в метод resize, который по-умолчанию 'default', то есть работает как обычно, с белыми полями, а также 'crop', который обрезает изображения в соответствии с переданными размерами и 'scale', который сохраняет пропорции оригинала, но уменьшает изображение пропорционально ширине или высоте переданных размеров.

21. Встроен Telegram-бот с вебхуками

Возможно вы не знали, но OpenCart очень недурное решение для бэкенда Telegram-ботов. Я знаю, поэтому интегрировал библиотеку TelegramBot/Api в библиотеку OpenCart (system/library/exbot.php), что позволяет легко и удобно использовать её из любого контроллера или модели в каталоге и админке. Через панель управления можно легко добавлять и удалять API ключ бота и вебхук для получения обновлений, что не может не радовать.

22. Реализована возможность добавления программного редиректа на произвольный URL для категорий, товаров

Полезная фича при переезде с другой платформы на exopencart, чтобы страницы не выпадали из индекса поисковых систем. Видел решения где перенаправления прописывают в .htaccess, но стыдно даже за то, что это видел, не говоря уже о том, чтобы так делать.


Пока что это всё, но я не останавливаюсь на достигнутом. Продолжение следует...


P. S.

Если вдруг увидели баг, буду вам признателен за создание issue здесь: https://github.com/ex-url/exopencart/issues