oro/storefront-themes
A PHP package for managing storefront themes, offering theme registration and reusable frontend presets. It aims to simplify theme organization for Oro storefronts, though adoption is minimal and documentation is limited, so evaluate compatibility before use.
This is not a Laravel package—it's an OroCommerce (Symfony) storefront theme bundle. There's no service provider, no config/*.php to publish, and no Artisan commands. If you're coming from Laravel, think of it as a Composer-delivered set of view/asset files plus YAML manifest files, not a runtime library.
Minimum steps to evaluate whether it's worth pulling in:
composer require oro/storefront-themes
php bin/console cache:clear
In most OroCommerce installs the themes may already arrive transitively via oro/commerce; check vendor/oro/storefront-themes before adding it explicitly.Resources/themes/<theme_name>/theme.yml for every bundled theme. That YAML is the real "API"—it declares name, label, and parent, and it tells you the inheritance chain you'll extend.The day-to-day workflow is "child theme, not fork." Don't edit vendor/oro/storefront-themes; treat it as a base layer.
1. Create a child theme in your own bundle.
src/Acme/Bundle/StorefrontBundle/Resources/themes/acme_b2b/theme.yml
name: acme_b2b
label: "Acme B2B"
parent: default # one of the themes shipped by oro/storefront-themes
Then extend templates from the parent by copying only the files you actually change.
2. Override layouts per block type. Oro layout overrides are scoped by block type, not global. A file like layouts/default/... only affects the default block type; product_view, checkout, search, etc. each resolve independently. Plan your override tree per block type you care about.
3. Use the templates map in theme.yml to remap block templates to your Twig files—this is cleaner than replacing whole layout files and survives parent-theme updates better.
4. Multi-site / multi-brand pattern. Because themes are assigned per website, this package shines in B2B setups with multiple storefronts: one base parent theme, then N thin child themes (acme_retail, acme_wholesale) that differ only in branding, catalog blocks, and checkout copy. Keep the divergence minimal so upgrades from the parent don't cascade.
5. Integration/CI loop.
composer install
php bin/console cache:clear
php bin/console assets:install --symlink # plus the Oro asset build step for your version
Do this in deploy scripts—not just once locally. Theme resolution and compiled assets are cache-sensitive.
6. Keep customizations in your bundle's theme dir and add the parent theme name to your upgrade notes. When you bump oro/storefront-themes, diff the parent theme's theme.yml and layout tree against what you override.
NOASSERTION. Treat this as a proprietary/enterprise-adjacent artifact (OroCommerce ships under a mix of OSL-3.0 and commercial terms). Confirm redistribution rights before vendoring into your own repo or a client deliverable.parent: doesn't exactly match a registered theme name, you get a missing-theme / fallback situation rather than a loud error. Verify the admin dropdown, not just the YAML.theme.yml frequently require cache:clear and an asset rebuild before anything changes in the browser. If a template override "isn't working," 90% of the time it's cache or a mis-scoped block type.oro:assets:build or the assets:install flow, depending on Oro version). Forgetting this yields an unstyled storefront and people assume the theme is broken.default does not propagate to product_view/checkout; audit which block types render on the pages you're touching.theme.yml schema and layout structure have changed between OroCommerce majors. Pin to the version matching your platform.theme.yml parent, templates remap, and per-block-type layout overrides in your bundle. Avoid: editing vendor files, swapping whole layout files when a partial override suffices, and copying all parent templates "just in case."bin/console debug:twig to confirm which template resolves, inspect var/logs/ for layout resolution errors, and confirm the active theme in admin before touching Twig. In a Laravel mindset: pretend there is no php artisan view:clear safety net—clear the Symfony cache explicitly.How can I help you explore Laravel packages today?