ecommpro / module-custom-currency
为 Magento 2 定制的货币
README
- 没有关键的重写。
- 添加您想要的任意数量的货币。
- 自定义默认货币,如 USD 或 EUR。
- 自定义精度(小数位数)。
- 预加载通用货币 Point 以及一些顶级加密货币,如 Bitcoin (BTC) 或 Ethereum (ETH)。
安装
composer require ecommpro/module-custom-currency
执行以下命令
php bin/magento module:enable EcommPro_CustomCurrency
php bin/magento setup:upgrade
访问 Magento 2 管理面板并配置该模块。
用户指南
描述
EcommPro 自定义货币允许您直接从 Magento 管理员创建和编辑新货币。管理这些货币的选项,如小数精度、符号(图像、表情符号或文本)、位置等。建议用于加密货币。
关于 货币,Magento 2 有所欠缺。
货币系统高度依赖于 PHP intl ICU 扩展。
这并不坏。Intl 扩展已经过战斗测试并且功能强大。
但它只覆盖官方法定货币。
那么使用自定义货币,如 points 呢?或者关于日益流行的 加密货币,如 Bitcoin (BTC)、Tron (TRX)、Ripple (XRP) 等呢?
目前 Magento 2 核心没有提供解决方案。
我们创建了一个模块来管理 自定义货币,预加载了一些有用的数据,如 points 货币和一些最受欢迎的加密货币。
我们决定将其发布在 GitHub 上作为开源。
https://github.com/ecommpro/custom-currency
我们希望这对您有所帮助。
我可以用 EcommPro 自定义货币做什么?
- 创建您需要的任意数量的硬币。
- 启用、禁用或删除硬币。
- 给它们一个代码,一个单数和复数名称。
- 设置小数精度,非常适合加密货币。
- 设置符号位置(在价格之前或之后)。
- 管理货币符号作为文本、表情符号或图像。
模块指南
您可以从侧边菜单轻松访问模块选项,商店 > 货币 > EcommPro 自定义货币
。
您可以从 Magento 网格轻松列出和管理新货币。
使用各种可能选项自定义您的硬币,如小数位数、位置、名称或符号。
从 Magento 硬币配置部分选择您的新硬币。
转到列表或产品列表,您将看到新货币的实际应用。
您可以从管理员页面或通过依赖注入 XML 添加自己的货币。
管理员页面
访问 商店 > 配置 > EcommPro > 自定义货币
并在文本框中添加您想要的货币,用空行分隔,格式为
{code}
{singular}
{plural}
示例
XMPL
Examplium
Exampliums
DOGE
DogeCoin
DogeCoins
依赖注入 XML
如果您希望在安装时使货币可用,则应选择此方法。
将货币作为 EcommPro\CustomCurrency\Model\Config
对象构造函数的数组数组参数添加
<type name="EcommPro\CustomCurrency\Model\Config"> <arguments> <argument name="currencies" xsi:type="array"> <item name="XMPL" xsi:type="array"> <item name="code" xsi:type="string">XMPL</item> <item name="singular" xsi:type="string">Examplium</item> <item name="plural" xsi:type="string">Exampliums</item> </item> <item name="DOGE" xsi:type="array"> <item name="code" xsi:type="string">DOGE</item> <item name="singular" xsi:type="string">DogeCoin</item> <item name="plural" xsi:type="string">DogeCoins</item> </item> </argument> </arguments> </type>
内部
此模块基于以下观察结果
- 如果之前已加载,则 Magento 类加载器不会加载类。
- Magento 不检查由
Magento\Framework\Locale\Bundle\CurrencyBundle
返回的 PHP ResourceBundle 的类型,而只是将其作为数组使用,因为它实现了数组访问和迭代。 - 在magento核心文件中,
Magento\Framework\Locale\Bundle\CurrencyBundle
总是通过构造函数使用new
实例化:(new CurrencyBundle())
grep -hr CurrencyBundle vendor/*
use Magento\Framework\Locale\Bundle\CurrencyBundle; $currencies = (new CurrencyBundle())->get($this->localeResolver->getLocale())['Currencies']; use Magento\Framework\Locale\Bundle\CurrencyBundle as CurrencyBundle; $allCurrencies = (new CurrencyBundle())->get( class CurrencyBundle extends DataBundle use Magento\Framework\Locale\Bundle\CurrencyBundle; $currencies = (new CurrencyBundle())->get($this->localeResolver->getLocale())['Currencies'] ?: []; $currencyBundle = new \Magento\Framework\Locale\Bundle\CurrencyBundle(); use Magento\Framework\Locale\Bundle\CurrencyBundle; $currencies = (new CurrencyBundle())->get(Resolver::DEFAULT_LOCALE)['Currencies'];
因此,关键思想是加载我们自己的 Magento\Framework\Locale\Bundle\CurrencyBundle
版本(一个非常简单的类),覆盖 get
方法,并返回一个修改后的数组,模仿原始的 ResourceBundle
。
帮助和信息
如果您需要帮助或专业的服务,您可以通过以下表单发送电子邮件来获得支持: https://ecomm.pro/en/contact-us/