Hyvä Commerce
Venta is compatible with the Hyvä Commerce suite (admin theme, CMS Liveview editor, Menu Builder, admin dashboard, AI integrations). Starting with Venta 1.7.2 the theme package suggests hyva-themes/commerce, and this page describes how to install and configure it in a Venta project.
Requirements
- A Hyvä Commerce license. The commerce packages are served through your project's private Packagist instance at
hyva-themes.repo.packagist.com, the same instance that serves your other Hyvä packages. Confirm with Hyvä that Commerce is enabled for your instance before installing. - Venta theme 1.7.x or later.
- The Packagist instance token present in
auth.jsonunderhyva-themes.repo.packagist.com.
Installation
Require the metapackage with a flexible constraint. Do not pin an exact version:
composer require hyva-themes/commerceThis installs around 25 packages. Enable the new modules and run the upgrade:
bin/magento module:enable Hyva_Commerce Hyva_AdminDashboardFramework \
MageOS_ThemeAdminhtmlSwitcher Hyva_Ai Hyva_AiAnthropic Hyva_AiDeepL \
Hyva_AiGemini Hyva_AiOpenAi Hyva_CmsLiveviewEditor Hyva_CmsMagento \
Hyva_CmsGoogleMaps Hyva_CmsBase Hyva_CmsInstanceComponents \
Hyva_CmsMagentoAttributes Hyva_CmsImportExport Hyva_CmsScheduling \
Hyva_CmsMagewire Hyva_AdminDashboardWidgets Hyva_CmsAiTranslations \
Hyva_CmsTemplate Hyva_MenuBuilder Hyva_CommerceCmsTailwindJitBridge \
Hyva_ImageEditor Hyva_AdminDashboardCmsWidgets \
Hyva_AdminDashboardGoogleCruxHistoryWidget Hyva_AdminTheme Hyva_BaseLayoutReset
bin/magento module:disable Hyva_MediaOptimization
bin/magento setup:upgrade
bin/magento hyva:config:generateThe AI provider modules (Hyva_Ai*) stay dormant until API keys are configured under Stores > Configuration > Hyvä AI Providers, so enabling them without keys is safe.
Media optimization
WARNING
Keep Hyva_MediaOptimization disabled unless the project deliberately adopts it as its image pipeline.
The module ships enabled by default and converts images to webp/avif synchronously during page requests. In a Venta project this overlaps the Magebit ImageResizer pipeline, so both would process the same images. It also declares AMQP queue consumers, and on environments without a configured amqp connection the cron consumer runner spawns them every minute and each one dies with an exception. Adopting the module later is a configuration change plus queue setup, nothing needs reinstalling.
Admin theme
Installing Commerce switches the admin panel to the Hyvä Commerce admin theme on the next deploy. The theme chain is Hyva/commerce extending MageOS/m137-admin-theme extending Magento/backend, and the active theme is selected under Stores > Configuration > Advanced > Admin > Admin Design > Active Admin Theme (admin/system_admin_design/active_theme). The Commerce features themselves (Menu Builder, dashboard, CMS editor) come from the modules and work under any of the three themes.
Production deployment
DANGER
In production mode the admin panel renders without CSS and JS after installing Commerce unless static content is deployed for the new admin themes.
Extend the adminhtml static content deploy in your pipeline to cover all three themes:
bin/magento setup:static-content:deploy --area adminhtml \
--theme Magento/backend --theme MageOS/m137-admin-theme --theme Hyva/commerce \
<your locales>CMS Tailwind daemon
The Commerce CMS editor compiles Tailwind CSS when content is saved, which requires the Hyvä CMS Tailwind daemon. Generate the daemon token once per environment and point the compiler at the daemon host in env.php:
bin/magento hyva:cms-tailwind:token'hyva_cms_tailwind' => [
'transport' => 'tcp',
'tcp_host' => '<daemon host>',
'tcp_port' => 3200,
],In a Docker setup use a project-specific hostname for the daemon container. Shared bare hostnames resolve unpredictably when several stacks run on one machine.
INFO
On environments upgrading from an earlier Hyvä CMS version, the first load of the Hyvä CMS configuration section can log a single Failed to unserialize hyva_cms/editor_settings/default_component_classes entry. The value migrates from the old text_class setting in a format the new field cannot parse. Saving the section once rewrites the value and the entry does not repeat.