<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中更改结帐页面上运输字段顺序的步骤:</p><p>步骤 1:导航到以下路径</p><p>app\code\Vendor\Extension\view\frontend\layout\checkout_index_index.xml</p><p>现在,添加代码,如下所示</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="checkout.root"> <arguments> <argument name="jsLayout" xsi:type="array"> <item name="components" xsi:type="array"> <item name="checkout" xsi:type="array"> <item name="children" xsi:type="array"> <item name="steps" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shipping-step" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shippingAddress" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shipping-address-fieldset" xsi:type="array"> <item name="children" xsi:type="array"> <item name="lastname" xsi:type="array"> <item name="sortOrder" xsi:type="string">18</item> </item> <item name="firstname" xsi:type="array"> <item name="sortOrder" xsi:type="string">20</item> </item> <item name="country_id" xsi:type="array"> <item name="sortOrder" xsi:type="string">25</item> </item> <item name="postcode" xsi:type="array"> <item name="sortOrder" xsi:type="string">80</item> </item> <item name="company" xsi:type="array"> <item name="sortOrder" xsi:type="string">100</item> </item> <item name="telephone" xsi:type="array"> <item name="sortOrder" xsi:type="string">90</item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </argument> </arguments> </referenceBlock> </body> </page></pre><p>步骤 2:运行以下命令</p><pre class="brush:bash;toolbar:false">php bin/magento cache:clean php bin/magento cache:flush</pre><p>运输字段在您的Magento 2商店的结帐页面上重新排序。</p><p><img src="/uploads/images/20230830/5fb2fd0e3b898629264316a168262777.png" title="a.png" alt=""/></p><p>结论:</p><p>这样,您可以在Magento 2的结帐页面上更改运输字段的顺序。</p><p><br/></p>
文章列表
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中使用REST API获取客户订单历史记录的步骤:</p><p>步骤1:在Magento根文件夹中创建getOrderHistory.php脚本文件并添加以下代码</p><pre class="brush:bash;toolbar:false"><?php $userData = array("username" => "admin", "password" => "adminPassword"); $baseUrl = "http://127.0.0.1/magento24/"; // your magento base url $ch = curl_init($baseUrl."/rest/V1/integration/admin/token"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($userData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Content-Lenght: " . strlen(json_encode($userData)))); $token = curl_exec($ch); $ch = curl_init($baseUrl."/rest/V1/orders?searchCriteria[filterGroups][0][filters][0][field]=customer_id&searchCriteria[filterGroups][0][filters][0][value]=your customer id&searchCriteria[filterGroups][0][filters][0][conditionType]=eq"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Bearer " . json_decode($token))); $result = curl_exec($ch); $result = json_decode($result, 1); echo '<pre>'; print_r($result); echo '</pre>'; ?></pre><p>注意 - 您可以在Magento文件系统中的任何位置使用此代码。例如:您也可以在自定义模块中使用它。</p><p>结论:</p><p>通过这种方式,您可以使用Magento 2中的REST API获取客户订单历史记录。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>检查当前URL是否为Magento 2中的主页的步骤:</p><p>步骤 1:在块类中使用以下代码</p><p>app\code\Vendor\Extension\Block\Homepage.php</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Block; class Homepage extends \Magento\Framework\View\Element\Template { protected $logo; public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Theme\Block\Html\Header\Logo $logo, array $data = [] ) { $this->logo = $logo; parent::__construct($context, $data); } // Check if current url is home page or not public function isHomePage() { return $this->logo->isHomePage(); } } ?></pre><p>步骤 2:在模板 (.phtml) 文件中声明函数</p><pre class="brush:bash;toolbar:false">app\code\Vendor\Extension\view\frontend\templates\ homepage.phtml <?php if ($block->isHomePage()) { echo “Hii ! This is Home Page.”; } ?></pre><p>结论:</p><p>这样,您只需检查当前URL是否为Magento 2中的主页。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中获取每个请求的控制器的步骤:</p><p>步骤 1:在以下路径创建文件</p><p>app\code\Vendor\Extension\etc\events.xml</p><p>现在,添加以下代码</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="controller_action_predispatch"> <observer name="custom_observer" instance="Vendor\Extension\Observer\ControllerActionPredispatch" shared="false" /> </event> </config></pre><p>步骤 2:在以下路径创建文件</p><p>app\code\Vendor\Extension\Observer\MyClass\ControllerActionPredispatch.php</p><p>然后,添加下面提到的代码</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Observer; use Magento\Framework\Event\ObserverInterface; class ControllerActionPredispatch implements ObserverInterface { public function execute(\Magento\Framework\Event\Observer $observer) { // insert code here } }</pre><p>结论:</p><p>因此,您可以在Magento 2中轻松获取每个请求的控制器。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中使用REST API按ID获取产品的步骤</p><p>第 1 步:创建rootscript.php脚本文件并添加以下代码</p><pre class="brush:bash;toolbar:false"><?php $baseUrl = " http://yourdomain/"; // your magento base url $userData = array("username" => "admin", "password" => "admin@123"); $ch = curl_init($baseUrl."/rest/V1/integration/admin/token"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($userData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Content-Lenght: " . strlen(json_encode($userData)))); $token = curl_exec($ch); $ch = curl_init($baseUrl."rest/V1/products?searchCriteria[filterGroups][0][filters][0][field]=entity_id&searchCriteria[filterGroups][0][filters][0][value]=Your_Product_ID&searchCriteria[filterGroups][0][filters][0][condition_type]=eq"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Authorization: Bearer " . json_decode($token))); $result = curl_exec($ch); $result = json_decode($result, 1); echo '<pre>'; print_r($result); echo '</pre>'; ?></pre><p>结论:</p><p>通过这种方式,您可以使用Magento 2中的REST API按ID获取产品。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中使用JavaScript设置价格格式的步骤:</p><p>步骤1:您需要使用以下Magento文件</p><p>Magento_Catalog\js\price-utils</p><p>如果你已经创建了一个javascript文件,那么只需添加getFormattedPrice()函数并将 Magento_Catalog\js\price-utils文件定义为js。</p><p>File Path – app\code\Vendor\Extension\view\frontend\web\js\checkpriceformate.js</p><p></p><pre class="brush:bash;toolbar:false">define([ 'ko', 'Magento_Catalog/js/price-utils' ], function ( ko, priceUtils ) { 'use strict'; return { getFormattedPrice: function (price) { var priceFormat = { decimalSymbol: '.', groupLength: 3, groupSymbol: ",", integerRequired: false, pattern: "$%s", precision: 2, requiredPrecision: 2 }; return priceUtils.formatPrice(price, priceFormat); } } });</pre><p>第2步:之后调用所需的getFormattedPrice()函数,并按照以下格式返回价格。</p><p>Price Formate : $12.00</p><p>步骤3:添加此代码后运行以下命令</p><pre class="brush:bash;toolbar:false">php bin/magento setup:upgrade php bin/magento setup:static-content:deploy -f php bin/magento cache:flush</pre><p>结论:</p><p>因此,您可以在Magento 2中借助JavaScript设置价格格式。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中获取产品可售数量的步骤:</p><p>步骤 1:在扩展中创建以下帮助程序文件</p><p>app\code\Vendor\Extension\Helper\Data.php</p><p>然后添加以下代码</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Helper; use Magento\Framework\App\Helper\AbstractHelper; use Magento\Framework\App\Helper\Context; use Magento\InventorySalesAdminUi\Model\GetSalableQuantityDataBySku; class Data extends AbstractHelper { private $getSalableQtyDataBySku; public function __construct( Context $context, GetSalableQuantityDataBySku $getSalableQtyDataBySku ){ $this->getSalableQtyDataBySku = $getSalableQtyDataBySku; parent::__construct($context); } public function getSalableQtyBySku($sku) { $salable = $this->getSalableQuantityDataBySku->execute($sku); return json_encode($salable); } }</pre><p>您将获得以下输出:</p><pre class="brush:bash;toolbar:false">[{"stock_name":"Default Stock","qty":100,"manage_stock":true}]</pre><p>结论:</p><p>就是这样!您可以在Magento 2中轻松获取产品的可售数量。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>当Magento商家尝试升级到Magento 2.4.x时,他们可能会遇到以下错误</p><p>“调用未定义的函数 Magento\Framework\Filesystem\Directory\str_contains() in <...>/magento/vendor/magento/framework/Filesystem/Directory/DenyListPathValidator.php:74”</p><p>导致此错误的原因是 PHP 8 支持 str_contains() 函数,并且 Magento 版本 2.4.3 和 2.3.7-p1 与 PHP 7.4 兼容。但是,此问题将在即将发布的 Magento 2.4.4、2.4.3-p1 和 2.3.7-p2 中修复。</p><p>升级到Magento 2.4.x后,如何修复对未定义函数str_contains()的PHP致命错误调用?</p><p>步骤1:打开终端并从Magento根文件夹运行以下命令。</p><pre class="brush:bash;toolbar:false">composer require symfony/polyfill-php80</pre><p>步骤2:然后,运行Magento安装程序升级命令以验证问题是否已解决</p><pre class="brush:bash;toolbar:false">php bin/magento setup:upgrade</pre><p>结论:</p><p>通过这样做,您可以在升级Magento 2版本后消除PHP致命错误。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中将内容链接添加到顶部菜单的步骤:</p><p>步骤1:转到以下文件路径</p><p>app\code\Vendor\Extension\etc\frontend\events.xml</p><p>现在,添加代码,如下所示</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="page_block_html_topmenu_gethtml_before"> <observer name="vendor_extension_observer" instance="Vendor\Extension\Observer\Topmenu" /> </event> </config></pre><p>步骤2:然后移动到以下文件位置</p><p>app\code\Vendor\Extension\Observer\Topmenu.php</p><p>添加代码,如下所述</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Observer; use Magento\Framework\Event\Observer as EventObserver; use Magento\Framework\Data\Tree\Node; use Magento\Framework\Event\ObserverInterface; class Topmenu implements ObserverInterface { public function execute(EventObserver $observer) { $menu = $observer->getMenu(); $tree = $menu->getTree(); $data = [ 'name' => __('Menu item label link'), 'id' => 'some-unique-id-here', 'url' => 'url goes here', 'is_active' => ‘true’ ]; $node = new Node($data, 'id', $tree, $menu); $menu->addChild($node); return $this; } } ?></pre><p>步骤3:最后,运行以下命令</p><p>php bin/magento cache:flush</p><p>结果:该链接将添加到Magento 2的顶部菜单中。</p><p><img src="/uploads/images/20230830/443dc1d1f75c6b74f0ef6ae6bf3aca29.png" title="a.png" alt="" width="837" height="387"/></p><p>顶部菜单</p><p>结论:</p><p>通过这种方式,您可以轻松地将自定义链接添加到万磁王 2 的顶部菜单。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中按管理产品网格上的多个SKU进行筛选的步骤:</p><p>步骤 1: 在扩展中创建 di.xml 文件</p><p>app\code\Vendor\Extension\etc\di.xml</p><p>现在,添加代码,如下所示</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider" type="Vendor\Extension\Model\ProductDataProvider" /> </config></pre><p>步骤 2:现在在以下路径中创建产品数据提供程序.php文件</p><p>app\code\Vendor\Extension\Model\ProductDataProvider.php</p><p>然后添加代码,如下所述</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Model; class ProductDataProvider extends \Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider { /** * @inheritdoc */ public function addFilter(\Magento\Framework\Api\Filter $filter) { if (isset($this->addFilterStrategies[$filter->getField()])) { $this->addFilterStrategies[$filter->getField()] ->addFilter( $this->getCollection(), $filter->getField(), [$filter->getConditionType() => $filter->getValue()] ); } elseif ($filter->getField() == "sku" && count(explode(",",str_replace("%","",$filter->getValue()))) > 1) { $withComma = explode(",",str_replace("%","",$filter->getValue())); $attrs = array(); foreach ($withComma as $cItem) { $attrs[] = ['attribute' => $filter->getField(), $filter->getConditionType() => '%'.trim($cItem).'%']; } $this->getCollection()->addAttributeToFilter($attrs); } else { parent::addFilter($filter); } } }</pre><p>结论:</p><p>因此,通过这种方式,您可以在Magento 2的管理产品网格上过滤多个SKU。</p><p><br/></p>