在 Magento2 中创建多个自定义载体
creating several custom carriers in Magento2
我在编码方面有点新,在 Magento 方面超级新。我按照以下说明创建了一个自定义载体:https://devdocs.magento.com/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.html#create-configuration,它就像一个魅力。
然后,我尝试通过复制和重命名我的 Vendor 文件夹来创建另一个自定义运营商。我还更改了代码中的一些内容:
在registration.php
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Vendor2_CustomShipping',
__DIR__
);
in composer.json
{
"name": "vendor2/custom-shipping",
"description": "Custom shipping module",
"require": {
"php": "~7.2.0||~7.3.0",
"magento/framework": "102.0.*",
"magento/module-backend": "101.0.*",
"magento/module-catalog": "103.0.*",
"magento/module-config": "101.1.*",
"magento/module-directory": "100.3.*",
"magento/module-quote": "101.1.*",
"magento/module-sales": "102.0.*",
"magento/module-sales-rule": "101.1.*",
"magento/module-shipping": "100.3.*",
"magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Vendor2\CustomShipping\": ""
}
},
"version": "1.0.0"
}
在module.xml中:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor2_CustomShipping" >
<sequence>
<module name="Magento_Store"/>
<module name="Magento_Sales"/>
<module name="Magento_Quote"/>
<module name="Magento_SalesRule"/>
</sequence>
</module>
</config>
在config.xml中:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<carriers>
<customshipping>
<active>0</active>
<title>Custom Shipping Title</title>
<name>Custom Shipping Method Name</name>
<shipping_cost>10</shipping_cost>
<sallowspecific>0</sallowspecific>
<sort_order>15</sort_order>
<model>Vendor2\CustomShipping\Model\Carrier\Customshipping</model>
</customshipping>
</carriers>
</default>
</config>
并在 Customshipping.php 中:
namespace Vendor2\CustomShipping\Model\Carrier;
我成功启用了新模块并升级了 magento,但是当我转到我的管理员时,我只能看到一个自定义运营商选项可用。我还尝试删除第一个创建的模块,这使第二个模块出现。我的猜测是存在冲突,但我不知道如何解决。
谢谢
第二种送货方式正在覆盖第一种送货方式。为防止这种情况,需要进行更多更改:
在 etc/adminhtml/system.xml 中将 <group id="customshipping" ...>
更改为 <group id="customshipping2" ...>
.
同样在 etc/config.xml 中将 <customshipping>
更改为 <customshipping2>
.
在 Model/Carrier/Customshipping.php 中将 protected $_code = 'customshipping';
更改为 protected $_code = 'customshipping2';
.
进行这些更改后,您应该能够在 Magento 管理中看到两种新的送货方式。
我在编码方面有点新,在 Magento 方面超级新。我按照以下说明创建了一个自定义载体:https://devdocs.magento.com/guides/v2.4/howdoi/checkout/checkout-add-custom-carrier.html#create-configuration,它就像一个魅力。 然后,我尝试通过复制和重命名我的 Vendor 文件夹来创建另一个自定义运营商。我还更改了代码中的一些内容:
在registration.php
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Vendor2_CustomShipping',
__DIR__
);
in composer.json
{
"name": "vendor2/custom-shipping",
"description": "Custom shipping module",
"require": {
"php": "~7.2.0||~7.3.0",
"magento/framework": "102.0.*",
"magento/module-backend": "101.0.*",
"magento/module-catalog": "103.0.*",
"magento/module-config": "101.1.*",
"magento/module-directory": "100.3.*",
"magento/module-quote": "101.1.*",
"magento/module-sales": "102.0.*",
"magento/module-sales-rule": "101.1.*",
"magento/module-shipping": "100.3.*",
"magento/module-store": "101.0.*"
},
"type": "magento2-module",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Vendor2\CustomShipping\": ""
}
},
"version": "1.0.0"
}
在module.xml中:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor2_CustomShipping" >
<sequence>
<module name="Magento_Store"/>
<module name="Magento_Sales"/>
<module name="Magento_Quote"/>
<module name="Magento_SalesRule"/>
</sequence>
</module>
</config>
在config.xml中:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<carriers>
<customshipping>
<active>0</active>
<title>Custom Shipping Title</title>
<name>Custom Shipping Method Name</name>
<shipping_cost>10</shipping_cost>
<sallowspecific>0</sallowspecific>
<sort_order>15</sort_order>
<model>Vendor2\CustomShipping\Model\Carrier\Customshipping</model>
</customshipping>
</carriers>
</default>
</config>
并在 Customshipping.php 中:
namespace Vendor2\CustomShipping\Model\Carrier;
我成功启用了新模块并升级了 magento,但是当我转到我的管理员时,我只能看到一个自定义运营商选项可用。我还尝试删除第一个创建的模块,这使第二个模块出现。我的猜测是存在冲突,但我不知道如何解决。 谢谢
第二种送货方式正在覆盖第一种送货方式。为防止这种情况,需要进行更多更改:
在 etc/adminhtml/system.xml 中将 <group id="customshipping" ...>
更改为 <group id="customshipping2" ...>
.
同样在 etc/config.xml 中将 <customshipping>
更改为 <customshipping2>
.
在 Model/Carrier/Customshipping.php 中将 protected $_code = 'customshipping';
更改为 protected $_code = 'customshipping2';
.
进行这些更改后,您应该能够在 Magento 管理中看到两种新的送货方式。