This module add the many countries to many stores relation and make it available to the storefront.
Magento 2 Open Source or Commerce edition is required.
Run the following composer command:
composer require opengento/module-country-store
Run the following magento command:
bin/magento setup:upgrade
If you are in production mode, do not forget to recompile and redeploy the static resources.
Define many countries to many stores relation. This configuration will allows Magento to map stores with countries.
The configuration for this module is available in Stores > Configuration > General > Country Store
.
Create a new final class and implements the following interface: Opengento\CountryStore\Api\CountryResolverInterface
.
The method public function getCountry(): CountryInterface
should return the default country depending of the context.
The country code should be compliant to ISO 3166-1 alpha-2 format.
Register the new country resolver in the method factory, Vendor/Module/etc/di.xml
:
<type name="Opengento\CountryStore\Model\Resolver\ResolverFactory">
<arguments>
<argument name="countryResolvers" xsi:type="array">
<item name="customCountryResolver" xsi:type="string">Vendor\Module\Model\Country\Resolver\CustomCountryResolver</item>
</argument>
</arguments>
</type>
If you want the resolver to be available in settings, add it to the resolver list, Vendor/Module/etc/di.xml
:
<virtualType name="Opengento\CountryStore\Model\Config\Source\CountryResolver">
<arguments>
<argument name="options" xsi:type="array">
<item name="customCountryResolver" xsi:type="array">
<item name="label" xsi:type="string" translatable="true">Custom Country Resolver</item>
<item name="value" xsi:type="const">Vendor\Module\Model\Country\Resolver\CustomCountryResolver::RESOLVER_CODE</item>
</item>
</argument>
</arguments>
</virtualType>
The country resolver is ready to use.
Raise a new request to the issue tracker.
This project is licensed under the MIT License - see the LICENSE details.
That's all folks!