aimes / module-checkout-designs
aimes/module-checkout-designs
Swap checkout layouts via system configuration, or conditions
Aimes_CheckoutDesigns
Features
Please note: This module is currently still considered a proof of concept.
This module provides the ability to change checkout page designs/layout similar to page specific selectable layouts.
The module currently provides the following functionality:
- Provide a different checkout user experience per store
- Provide a different checkout user experience per customer group
Example

This in turn will allow you to do things such as, but not limited to, the following:
Please note: These are only examples of functionality that this module makes possible. This module itself does not provide any additional functionality or checkout designs and serves only as a base for other modules. For an example module, please see
Aimes_CheckoutDesigns
- AB Testing any checkout changes
- Something broken or users can't checkout with a specific design? Select a different design or the default Magento checkout so that users can still checkout until you can deploy your fixed code.
- Collect different data per design to help determine any issues
- Track the different drop-off points
- Track conversion rates
Any feature requests and/or pull requests are welcomed!
Requirements
This module is compatible with Magento 2.3.x and Magento 2.4.x
Installation
Please install this module via Composer
composer require aimes/module-checkout-designsbin/magento module:enable Aimes_CheckoutDesignsbin/magento setup:upgrade
Usage
All of this is subject to (and very likely to!) change.
Step 1: Define new checkout layout
di.xml
<virtualType name="Vendor\Module\Model\Checkout\Design\MyDesign"
type="Aimes\CheckoutDesigns\Model\CheckoutDesign">
<arguments>
<argument name="code" xsi:type="string">my_design_code</argument>
<argument name="name" xsi:type="string">My Design Name</argument>
<argument name="layoutHandle" xsi:type="string">my_design_layout_handle</argument>
<argument name="layoutProcessors" xsi:type="array">
<item name="defaultProcessor" xsi:type="object">
<!-- Object must implement \Magento\Checkout\Block\Checkout\LayoutProcessorInterface -->
</item>
</argument>
<argument name="configProviders" xsi:type="array">
<item name="defaultProvider" xsi:type="object">
<!-- Object must implement \Magento\Checkout\Model\ConfigProviderInterface -->
</item>
</argument>
</arguments>
</virtualType>
Explanation
- Designs must implement
\Aimes\CheckoutDesigns\Api\CheckoutDesignInterfacecodeis a unique identifier for your designnameis the frontend / human friendly labellayoutHandleis the layout handle that will be included on the page. The above would includemy_design_layout_handle.xmllayoutProcessorsis an array of objects that will only be processed when the associated design is utilised- Items must implement
\Magento\Checkout\Block\Checkout\LayoutProcessorInterface
- Items must implement
configProvidersis an array of objects that will only be processed when the associated design is utilised- Items must implement
\Magento\Checkout\Model\ConfigProviderInterface
- Items must implement
Example code
For working code examples, please refer to Aimes_CheckoutDesigns. This package can also be installed.
Step 2: Add your design to the available options
di.xml
<type name="Aimes\CheckoutDesigns\Model\Config\Source\CheckoutDesigns">
<arguments>
<argument name="designs" xsi:type="array">
<item name="my_design" xsi:type="object">
Vendor\Module\Model\Checkout\Design\MyDesign
</item>
</argument>
</arguments>
</type>
Step 3: Select design
Your design should now show up as an option in the system configuration below:
Sales -> Checkout -> Design / Layout -> Checkout Design
- Select the default design
- Select specific designs per customer groups
Licence
No changelog yet
The vendor hasn't published a changelog. Tagged releases appear in the Versions tab.
| Version | Stability | QA Status | Compatibility | Released |
|---|---|---|---|---|
| 1.1.0 | stable | Fail | Magento 2.4.7-2.4.9 Details | 2022-03-02 16:07:10 |
| 1.0.0 | stable | Not tested | Not yet tested Details | 2021-07-03 11:36:56 |
| 0.1.1 | stable | Not tested | Not yet tested Details | 2021-04-13 21:59:46 |
| 0.1.0 | stable | Not tested | Not yet tested Details | 2021-03-29 20:31:23 |
Requires 1
| Package | Constraint |
|---|---|
| magento/module-checkout | ^100.3 || ^100.4 |
Suggests 1
| Package | Reason |
|---|---|
| aimes/module-checkout-designs-example | Provides code examples to utilise this package |
No QA results yet
QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.
More from Rob Aimes
View vendorTurn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.