文章列表


如何在Magento 2中使用标准方式编写删除SQL查询而不使用模型文件

<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>这是我执行删除SQL查询以向您展示一个演示,该演示如何在不使用Magento 2中的模型文件的情况下删除特定数量的行/记录。</p><p>为此,我使用以下代码在此路径的扩展文件夹中创建了“Index.php”文件。</p><p>app\code\Vendor\Extension\Controller\Deletequery\</p><pre class="brush:bash;toolbar:false">&lt;pre&nbsp;class=&quot;lang:default&nbsp;decode:true&quot;&gt; &lt;?php namespace&nbsp;Vendor\Extension\Controller\Deletequery; use&nbsp;Magento\Framework\App\ResourceConnection; use&nbsp;Magento\Framework\App\Action\Context; class&nbsp;Index&nbsp;extends&nbsp;\Magento\Framework\App\Action\Action { &nbsp;const&nbsp;QUOTE_TABLE&nbsp;=&nbsp;&#39;quote&#39;; &nbsp;private&nbsp;$resourceConnection; &nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context&nbsp;$context, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResourceConnection&nbsp;$resourceConnection) &nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;resourceConnection&nbsp;=&nbsp;$resourceConnection; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;parent::__construct($context); &nbsp;} &nbsp;public&nbsp;function&nbsp;execute() &nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$connection&nbsp;&nbsp;=&nbsp;$this-&gt;resourceConnection-&gt;getConnection(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tableName&nbsp;=&nbsp;$connection-&gt;getTableName(self::QUOTE_TABLE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$quoteId&nbsp;=&nbsp;191; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$whereConditions&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$connection-&gt;quoteInto(&#39;entity_id&nbsp;=&nbsp;?&#39;,&nbsp;$quoteId), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$deleteRows&nbsp;=&nbsp;$connection-&gt;delete($tableName,&nbsp;$whereConditions); &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;Deleted&nbsp;Rows&nbsp;:&nbsp;&quot;.$deleteRows; &nbsp;} } &lt;/pre&gt;</pre><p>就是这样。使用此代码,您可以执行类似的不同SQL操作,而无需创建标准的Magento 2模型文件。</p><p><br/></p>

如何解决安装Magento 2.x后的空白页问题

<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.x后遇到相同的空白页问题,这是一个解决方案。</p><p>要先执行相同的操作,您需要打开位于以下路径的“验证器.php”文件。</p><p>vendor\magento\framework\View\Element\Template\File\Validator.php</p><p>大约在第 133 行左右,你会发现这个函数。</p><p>protected function isPathInDirectories($path, $directories)</p><p>现在在这个函数中找到这个代码。</p><p>$<span style="color: #569cd6;">realPath</span> = $this-&gt;fileDriver-&gt;getRealPath($path)<span style="color: #6a9955;">;</span></p><p>并将其替换为以下代码。</p><p>$<span style="color: #569cd6;">realPath</span> = str_replace(<span style="color: #ce9178;">&#39;</span><span style="color: #d7ba7d;">\\</span><span style="color: #ce9178;">&#39;</span>, <span style="color: #ce9178;">&#39;/&#39;</span>, $this-&gt;fileDriver-&gt;getRealPath($path))<span style="color: #6a9955;">;</span></p><p>就是这样,现在打开命令行界面 (CLI) 并运行以下命令。</p><pre class="brush:bash;toolbar:false">php&nbsp;bin/magento&nbsp;cache:clean php&nbsp;bin/magento&nbsp;cache:flush php&nbsp;bin/magento&nbsp;indexer:reindex php&nbsp;bin/magento&nbsp;setup:upgrade php&nbsp;bin/magento&nbsp;setup:static-content:deploy&nbsp;-f</pre><p>就是这样。现在导航到管理页面,它将开始工作,您的空白页问题现已解决。</p><p><br/></p>

如何在Magento 2中以编程方式更改客户密码

<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是为电子商务CMS打造的之一,以其功能,灵活的代码结构和性能而闻名。它使用 MySQL 作为存储后端,以表格格式存储和检索数据。它存储所有有用信息的位置,例如客户数据,订单数据和配置。</p><p>但是很多时候,您的客户无法在商店前端登录,或者他们忘记了重置详细信息或商店电子邮件不起作用,在这种情况下如何重置客户帐户的密码?如果您是新手,则解决客户的登录问题变得更加困难。但是,如果您是Magento专家,则可以轻松重置密码并恢复其登录的一些技巧。因此,我们再次使用了一个小型PHP脚本,您可以使用该脚本快速重置客户帐户密码。</p><p>只需使用以下代码在Magento根目录中创建一个“change_password.php”文件。不要忘记指定要在代码中设置的客户 ID 和密码。</p><pre class="brush:bash;toolbar:false">&lt;?php use&nbsp;Magento\Framework\AppInterface; try&nbsp;{ &nbsp;require_once&nbsp;__DIR__&nbsp;.&nbsp;&#39;/app/bootstrap.php&#39;; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(\Exception&nbsp;$e)&nbsp;{ &nbsp;echo&nbsp;&#39;Autoload&nbsp;error:&nbsp;&#39;&nbsp;.&nbsp;$e-&gt;getMessage(); &nbsp;exit(1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;$bootstrap&nbsp;=&nbsp;\Magento\Framework\App\Bootstrap::create(BP,&nbsp;$_SERVER); &nbsp;$objectManager&nbsp;=&nbsp;$bootstrap-&gt;getObjectManager(); &nbsp;$appState&nbsp;=&nbsp;$objectManager-&gt;get(&#39;\Magento\Framework\App\State&#39;); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerRepositoryInterface&nbsp;=&nbsp;$objectManager-&gt;get(&#39;\Magento\Customer\Api\CustomerRepositoryInterface&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerRegistry&nbsp;=&nbsp;$objectManager-&gt;get(&#39;\Magento\Customer\Model\CustomerRegistry&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$encryptor&nbsp;=&nbsp;$objectManager-&gt;get(&#39;\Magento\Framework\Encryption\EncryptorInterface&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$appState-&gt;setAreaCode(&#39;frontend&#39;); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerId&nbsp;=&nbsp;1;&nbsp;//&nbsp;here&nbsp;assign&nbsp;your&nbsp;customer&nbsp;id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$password&nbsp;=&nbsp;&quot;custom_password&quot;;&nbsp;//&nbsp;set&nbsp;your&nbsp;custom&nbsp;password &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customer&nbsp;=&nbsp;$customerRepositoryInterface-&gt;getById($customerId);&nbsp;//&nbsp;_customerRepositoryInterface&nbsp;is&nbsp;an&nbsp;instance&nbsp;of&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Customer\Api\CustomerRepositoryInterface &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerSecure&nbsp;=&nbsp;$customerRegistry-&gt;retrieveSecureData($customerId);&nbsp;//&nbsp;_customerRegistry&nbsp;is&nbsp;an&nbsp;instance&nbsp;of&nbsp;\Magento\Customer\Model\CustomerRegistry &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerSecure-&gt;setRpToken(null); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerSecure-&gt;setRpTokenCreatedAt(null); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerSecure-&gt;setPasswordHash($encryptor-&gt;getHash($password,&nbsp;true));&nbsp;//&nbsp;here&nbsp;_encryptor&nbsp;is&nbsp;an&nbsp;instance&nbsp;of&nbsp;\Magento\Framework\Encryption\EncryptorInterface &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$customerRepositoryInterface-&gt;save($customer); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#39;Successfully&nbsp;Changes&nbsp;Your&nbsp;Password.&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(\Exception&nbsp;$e){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print_r($e-&gt;getMessage()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</pre><p>就是这样。成功执行脚本后,您的客户将能够使用定义的密码登录其帐户。在这种紧急情况下,使用PHP脚本重置密码成为开发人员的救星。</p><p><br/></p>

如何在不使用Magento 2中的模型文件的情况下创建更新查询

<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中有一定的编码标准。根据这些标准,开发人员必须创建一个模型文件才能执行任何SQL查询。对于电子商务商店来说,这是一个近乎完美的平台中的一个忙碌的困境。</p><p>但是,如果可以在不使用模型文件的情况下执行这些SQL查询,该怎么办?相信我,这是可能的。今天的博客也是关于同样的。在这里,我将向您展示如何执行更新查询。在下面的代码中显示了更新,它显示了如何在不使用模态文件的情况下执行任意次数的更新。那么,让我们开始吧...??</p><p>最初,为了执行它,您需要在我的扩展文件夹中创建一个“Index.php”文件,该文件位于下面定义的路径中。</p><p>app\code\Vendor\Extension\Controller\Deletequery\</p><p>创建文件夹后,您需要应用以下代码才能执行更新操作。</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Controller\Updatequery;&nbsp; use&nbsp;Magento\Framework\App\ResourceConnection;&nbsp; use&nbsp;Magento\Framework\App\Action\Context;&nbsp; class&nbsp;Index&nbsp;extends&nbsp;\Magento\Framework\App\Action\Action&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;QUOTE_TABLE&nbsp;=&nbsp;&#39;[TABLE_NAME]&#39;; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;$resourceConnection; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct(&nbsp;Context&nbsp;$context,&nbsp;ResourceConnection&nbsp;$resourceConnection)&nbsp;{&nbsp;$this-&gt;resourceConnection&nbsp;=&nbsp;$resourceConnection; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;parent::__construct($context); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;execute() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$connection&nbsp;&nbsp;=&nbsp;$this-&gt;resourceConnection-&gt;getConnection(); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data&nbsp;=&nbsp;[&quot;field1&quot;=&gt;3,&quot;field2&quot;=&gt;15];&nbsp;//&nbsp;you&nbsp;can&nbsp;use&nbsp;as&nbsp;per&nbsp;your&nbsp;requirement &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$id&nbsp;=&nbsp;1; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$where&nbsp;=&nbsp;[&#39;entity_id&nbsp;=&nbsp;?&#39;&nbsp;=&gt;&nbsp;(int)$id]; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tableName&nbsp;=&nbsp;$connection-&gt;getTableName(self::QUOTE_TABLE); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$updatedRows=$connection-&gt;update($tableName,&nbsp;$data,&nbsp;$where); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;Updated&nbsp;Rows&nbsp;:&nbsp;&quot;.$updatedRows; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>就是这样。借助此代码,您可以执行多个 SQL 更新操作,而无需创建模型文件。不创建标准的Magento 2模型文件在您的开发阶段会非常有用。</p><p><br/></p>

如何在Magento 2中创建自定义销售规则条件

<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>但是,如果要创建自定义购物车规则以触发特定代码以响应该事件。要执行相同的操作,您必须创建自定义扩展以满足您的业务需求,因为我们从未建议修改核心文件。让我们以设置购物车页面的城市字段的自定义销售规则为例。您还可以为不同的事件创建自定义购物车规则。</p><p>首先要做同样的事情,我们需要在 etc 文件夹中创建“events.xml”文件,并在该文件中添加粘贴下面的代码。</p><p>app\code\Vendor\Extension\etc\events.xml</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &nbsp; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp; xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:Event/etc/events.xsd&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;event&nbsp;name=&quot;salesrule_rule_condition_combine&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;observer&nbsp;name=&quot;customer_rule&quot;&nbsp; instance=&quot;Vendor\Extension\Observer\Shippingcityconditionobserver&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/event&gt; &lt;/config&gt;</pre><p>现在,我们在观察者文件夹中创建“Shippingcityconditionobserver.php”。</p><p>app\code\Vendor\Extension\Observer\Shippingcityconditionobserver.php</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Observer; &nbsp; class&nbsp;Shippingcityconditionobserver&nbsp;implements&nbsp;\Magento\Framework\Event\ObserverInterface { &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;execute(\Magento\Framework\Event\Observer&nbsp;$observer) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$additional&nbsp;=&nbsp;$observer-&gt;getAdditional(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conditions&nbsp;=&nbsp;(array)&nbsp;$additional-&gt;getConditions(); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$conditions&nbsp;=&nbsp;array_merge_recursive($conditions,&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;getCustomerFirstOrderCondition() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$additional-&gt;setConditions($conditions); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;getCustomerFirstOrderCondition() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;label&#39;=&gt;&nbsp;__(&#39;Shipping&nbsp;city&#39;), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;value&#39;=&gt;&nbsp;\Vendor\Extension\Model\Rule\Condition\Shippingcity::class &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>在以下路径再创建一个文件“di.xml”文件。</p><p>app\code\Vendor\Extension\etc\di.xml</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp; xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:ObjectManager/etc/config.xsd&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;type&nbsp;name=&quot;Vendor\Extension\Model\Rule\Condition\Shippingcity&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;arguments&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;argument&nbsp;name=&quot;data&quot;&nbsp;xsi:type=&quot;array&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&nbsp;name=&quot;form_name&quot;&nbsp;xsi:type=&quot;string&quot;&gt;sales_rule_form&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/argument&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/arguments&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/type&gt; &lt;/config&gt;</pre><p>最后,在此位置再创建一个名为“Shippingcity.php”的文件。</p><p>app\code\Vendor\Extension\Model\Rule\Condition\Shippingcity.php</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Model\Rule\Condition; class&nbsp;Shippingcity&nbsp;extends&nbsp;\Magento\Rule\Model\Condition\AbstractCondition { &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_checkoutSession; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Rule\Model\Condition\Context&nbsp;$context, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Checkout\Model\Session&nbsp;$checkoutSession, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;$data&nbsp;=&nbsp;[] &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($context,&nbsp;$data); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_checkoutSession&nbsp;=&nbsp;$checkoutSession; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; public&nbsp;function&nbsp;loadAttributeOptions() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;setAttributeOption([ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;shipping_city&#39;&nbsp;=&gt;&nbsp;__(&#39;Shipping&nbsp;city&#39;) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getInputType() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&#39;select&#39;;&nbsp;&nbsp;//&nbsp;input&nbsp;type&nbsp;for&nbsp;admin&nbsp;condition &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getValueElementType() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&#39;text&#39;; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;validate(\Magento\Framework\Model\AbstractModel&nbsp;$model) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$city&nbsp;=&nbsp;$this-&gt;_checkoutSession-&gt;getQuote()-&gt;getShippingAddress()-&gt;getCity(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$model-&gt;setData(&#39;shipping_city&#39;,&nbsp;$city);&nbsp;&nbsp;//&nbsp;validation&nbsp;value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;parent::validate($model); &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>只需清除缓存,您将在管理后端找到一个选项。您还可以使用上面的代码来创建不同类型的自定义运输规则。</p><p><br/></p>

如何在Magento 2中创建自定义页面布局

<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默认提供1列,2列-左,2列-右,3列。</p><p>但在某些情况下,您需要开发自定义页面布局,而不是使用默认页面布局来满足自定义要求。对于主页或您希望的任何特定页面,您可以更改页面设计以满足您的要求并提高页面性能。</p><p>我们可以通过一些编码知识在Magento本身中实现这一目标。您需要按照下面描述的步骤使用编码创建自定义页面布局。</p><p>例如,如果要创建custom_column布局,则需要关注两个基本文件,</p><p>layout.xml</p><p>page_layout/custom_column.xml</p><p>让我们从第一步开始,找到布局.xml文件,</p><p>app\code\Vendor\Extension\view\layout.xml</p><p>使用下面描述的代码创建自定义布局:</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;UTF-8&quot;?&gt; &nbsp; &lt;page_layouts&nbsp;xmlns:xsi=&quot;http://&nbsp;www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View/&nbsp;PageLayout/etc/layouts.xsd&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;layout&nbsp;id=&quot;&nbsp;custom_column&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&nbsp;translate=&quot;true&quot;&gt;Custom&nbsp;layout&lt;/label&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/layout&gt; &nbsp; &lt;/page_layouts&gt;</pre><p>使用此代码,将在管理面板中创建自定义布局文件。</p><p>page_layout/custom_column.xml</p><p>在以下位置找到page_layout/custom_column.xml文件,</p><p>app\code\Vendor\Extension\view\page_layout\custom_column.xml</p><p>使用以下代码创建文件,以管理使用上述代码创建的页面布局设计:</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &nbsp; &lt;layout&nbsp;xmlns:xsi=&quot;http://www.&nbsp;w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View/&nbsp;Layout/etc/page_layout.xsd&quot;&gt; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;update&nbsp;handle=&quot;1column&quot;/&gt; &nbsp; &nbsp;&nbsp;&nbsp;&lt;referenceContainer&nbsp;name=&quot;page.wrapper&quot;&nbsp;htmlClass=&quot;page-wrapper&nbsp;page-layout-1column&nbsp;layout-custom-column&quot;/&gt; &nbsp; &lt;/layout&gt;</pre><p>使用这些代码创建自定义页面布局文件后,您需要做的第一件事就是清除缓存。您的自定义页面布局将自动添加到页面布局列表中。</p><p>因此,在这篇文章中,我们了解到使用这些代码,您将能够为您的自定义主题或要求创建新的自定义页面布局,以便您可以获得更好的前端视图。此外,您还可以自定义布局以帮助提高页面性能。按照上述步骤操作,您就可以开始了。</p><p><br/></p>

如何在Magento 2中创建新产品时设置自定义默认数量

<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>按照下面描述的步骤在Magento2.3中创建新产品时设置自定义默认数量。</p><p>您要做的第一件事是创建一个文件app\code\Vendor\Extension\etc\adminhtml\di.xml</p><p>创建文件后,使用以下代码修改默认数量</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &nbsp; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:ObjectManager/etc/config.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;virtualType&nbsp;name=&quot;Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;arguments&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;argument&nbsp;name=&quot;modifiers&quot;&nbsp;xsi:type=&quot;array&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&nbsp;name=&quot;defaultQtyModifier&quot;&nbsp;xsi:type=&quot;array&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&nbsp;name=&quot;class&quot;&nbsp;xsi:type=&quot;string&quot;&gt;VENDOR\EXTENSION\Ui\DataProvider\Product\Form\Modifier\DefaultQtyModifier&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&nbsp;name=&quot;sortOrder&quot;&nbsp;xsi:type=&quot;number&quot;&gt;200&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/argument&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/arguments&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/virtualType&gt; &lt;/config&gt;</pre><p>如果您的商店有多个供应商,请为每个供应商执行上述步骤。</p><p>现在,当上述步骤完成后,创建一个文件,app\code\Vendor\Extension\Ui\DataProvider\Product\Form\Modifier\DefaultQtyModifier.php</p><p>现在,创建文件后,使用以下代码将新产品的自定义默认数量设置为您喜欢的任何数字</p><pre class="brush:bash;toolbar:false">&lt;?php &nbsp; namespace&nbsp;Vendor\Extension\Ui\DataProvider\Product\Form\Modifier; &nbsp; use&nbsp;Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier; use&nbsp;Magento\Catalog\Model\Locator\LocatorInterface; &nbsp; class&nbsp;DefaultQtyModifier&nbsp;extends&nbsp;AbstractModifier { &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LocatorInterface&nbsp;$locator &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;locator&nbsp;=&nbsp;$locator; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;modifyData(array&nbsp;$data) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$model&nbsp;=&nbsp;$this-&gt;locator-&gt;getProduct(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$modelId&nbsp;=&nbsp;$model-&gt;getId(); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!isset($data[$modelId][self::DATA_SOURCE_DEFAULT][&#39;quantity_and_stock_status&#39;][&#39;qty&#39;]))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data[$modelId][self::DATA_SOURCE_DEFAULT][&#39;quantity_and_stock_status&#39;][&#39;qty&#39;]&nbsp;=&nbsp;25; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$data; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;modifyMeta(array&nbsp;$meta) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$meta; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>在这里,您可以定义自定义数量编号,而不是 25,并且可以为不同的用户组设置不同的自定义数量。对于批发用户,数量可以设置为 50 或 100。</p><p>因此,在本文中,您已经学习了在默认Magento 2.3中创建新产品时如何设置自定义默认数量。使用所描述的代码,您可以将数量设置为您喜欢的任何数字。</p><p><br/></p>

如何在Magento 2中向结帐中的地址字段添加自定义验证

<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>在给定路径处创建一个文件,</p><p>app\code\Vendor\Extension\etc\frontend\di.xml</p><p>创建文件后,使用以下代码创建自定义验证,</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:ObjectManager/etc/config.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&lt;type&nbsp;name=&quot;Magento\Checkout\Block\Checkout\LayoutProcessor&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&nbsp;name=&quot;custom-validation-street-address&quot;&nbsp;type=&quot;Vendor\Extension\Model\Checkout\Layoutprocessorplugin&quot;/&gt; &nbsp;&nbsp;&nbsp;&lt;/type&gt; &lt;/config&gt;</pre><p>如果您的商店支持多供应商功能,请为每个供应商执行上述步骤。</p><p>在给定路径处创建另一个文件,</p><p>app\code\Vendor\Extension\Model\Checkout\Layoutprocessorplugin.php</p><p>创建文件后,使用以下代码应用自定义验证,</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Model\Checkout; class&nbsp;Layoutprocessorplugin { &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;afterProcess( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Checkout\Block\Checkout\LayoutProcessor&nbsp;$subject, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array&nbsp;&nbsp;$jsLayout &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$jsLayout[&#39;components&#39;][&#39;checkout&#39;][&#39;children&#39;][&#39;steps&#39;][&#39;children&#39;][&#39;shipping-step&#39;][&#39;children&#39;] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#39;billingAddress&#39;][&#39;children&#39;][&#39;shipping-address-fieldset&#39;][&#39;children&#39;][&#39;street&#39;]&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;component&#39;&nbsp;=&gt;&nbsp;&#39;Magento_Ui/js/form/components/group&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;label&#39;&nbsp;=&gt;&nbsp;__(&#39;Street&nbsp;Address&#39;), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;required&#39;&nbsp;=&gt;&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;dataScope&#39;&nbsp;=&gt;&nbsp;&#39;billingAddress.street&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;provider&#39;&nbsp;=&gt;&nbsp;&#39;checkoutProvider&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;sortOrder&#39;&nbsp;=&gt;&nbsp;10, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;type&#39;&nbsp;=&gt;&nbsp;&#39;group&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;additionalClasses&#39;&nbsp;=&gt;&nbsp;&#39;street&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;children&#39;&nbsp;=&gt;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;component&#39;&nbsp;=&gt;&nbsp;&#39;Magento_Ui/js/form/element/abstract&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;config&#39;&nbsp;=&gt;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;customScope&#39;&nbsp;=&gt;&nbsp;&#39;billingAddress&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;template&#39;&nbsp;=&gt;&nbsp;&#39;ui/form/field&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;elementTmpl&#39;&nbsp;=&gt;&nbsp;&#39;ui/form/element/input&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;dataScope&#39;&nbsp;=&gt;&nbsp;&#39;0&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;provider&#39;&nbsp;=&gt;&nbsp;&#39;checkoutProvider&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;validation&#39;&nbsp;=&gt;&nbsp;[&#39;required-entry&nbsp;validate-alphanum-with-spaces&#39;&nbsp;=&gt;&nbsp;true,&nbsp;&quot;min_text_length&quot;&nbsp;=&gt;&nbsp;5,&nbsp;&quot;max_text_length&quot;&nbsp;=&gt;&nbsp;255], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;component&#39;&nbsp;=&gt;&nbsp;&#39;Magento_Ui/js/form/element/abstract&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;config&#39;&nbsp;=&gt;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;customScope&#39;&nbsp;=&gt;&nbsp;&#39;shippingAddress&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;template&#39;&nbsp;=&gt;&nbsp;&#39;ui/form/field&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;elementTmpl&#39;&nbsp;=&gt;&nbsp;&#39;ui/form/element/input&#39; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;dataScope&#39;&nbsp;=&gt;&nbsp;&#39;1&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;provider&#39;&nbsp;=&gt;&nbsp;&#39;checkoutProvider&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;validation&#39;&nbsp;=&gt;&nbsp;[&#39;required-entry&nbsp;validate-alphanum-with-spaces&#39;&nbsp;=&gt;&nbsp;true,&nbsp;&quot;min_text_length&quot;&nbsp;=&gt;&nbsp;5,&nbsp;&quot;max_text_length&quot;&nbsp;=&gt;&nbsp;255], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$jsLayout; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>应用代码后,清除缓存并刷新它。自定义验证现在将开始工作。所以今天,我们了解到如何在Magento 2平台结帐时将自定义验证添加到地址字段。使用此处描述的代码,您将能够在结帐中设置自定义验证地址字段。此外,安装自定义结帐字段,这有助于商店管理员通过添加额外字段来自定义结帐页面。</p><p><br/></p>

Magento 2:如何在客户列表中添加新列(字段)

<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>介绍</p><p>很多时候,我们需要在客户网格中添加自定义/新列。因此,在此博客中,我们将帮助您实现您的要求。我们将学习如何在Magento 2的客户网格中添加新列。我相信你们都非常了解如何创建一个简单的模块,因此我们将首先按照以下步骤在Magento 2的客户网格中添加一个新的/自定义表。</p><p>客户网格的重要性</p><p>在客户网格的重要性中,我们可以说,在在线购物期间,客户在您的Magento 2网上商店注册,必须填写某些字段,例如电子邮件,手机号码,名字,姓氏。如果客户希望提供一些额外的信息。为此,我们需要在注册表中添加一些额外的字段。</p><p>在本博客中,我们将包括如何在Magento 2的客户网格中添加新的/自定义表,我将向您解释如何执行以及它的实际工作原理。</p><p>让我们从如何配置开始:</p><p>注意:客户网格从表中获取用于列出和筛选的数据customer_grid_flat。</p><p>步骤1:为此,请在app\code\Vendor\Extension\view\adminhtml\ui_component中创建customer_listing.xml文件</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;UTF-8&quot;?&gt; &lt;listing&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:module:Magento_Ui:etc/ui_configuration.xsd&quot;&gt; &lt;columns&nbsp;name=&quot;customer_columns&quot;&nbsp;class=&quot;Magento\Customer\Ui\Component\Listing\Columns&quot;&gt; &nbsp; &lt;column&nbsp;name=&quot;custom_column&quot;&nbsp;sortOrder=&quot;90&quot;&nbsp;class=&quot;Vendor\Extension\Ui\Component\Listing\Column\CustomColumn&quot;&gt; &lt;argument&nbsp;name=&quot;data&quot;&nbsp;xsi:type=&quot;array&quot;&gt; &lt;item&nbsp;name=&quot;config&quot;&nbsp;xsi:type=&quot;array&quot;&gt; &lt;item&nbsp;name=&quot;sortable&quot;&nbsp;xsi:type=&quot;boolean&quot;&gt;true&lt;/item&gt; &lt;item&nbsp;name=&quot;filter&quot;&nbsp;xsi:type=&quot;string&quot;&gt;text&lt;/item&gt; &lt;item&nbsp;name=&quot;dataType&quot;&nbsp;xsi:type=&quot;string&quot;&gt;text&lt;/item&gt; &lt;item&nbsp;name=&quot;align&quot;&nbsp;xsi:type=&quot;string&quot;&gt;left&lt;/item&gt; &lt;item&nbsp;name=&quot;label&quot;&nbsp;xsi:type=&quot;string&quot;&nbsp;translate=&quot;true&quot;&gt;Team&lt;/item&gt; &lt;/item&gt; &lt;/argument&gt; &lt;/column&gt; &lt;/columns&gt; &lt;/listing&gt;</pre><p>在这里,我们使用渲染来自定义列值,因此为了实现这一点,我们需要遵循以下给定的步骤,</p><p>步骤2:接下来,在里面创建自定义列.php文件</p><p>app\code\Vendor\Extension\Ui\Component\Listing\Column\ 文件夹,并将给定的以下代码添加到其中:</p><pre class="brush:bash;toolbar:false">&lt;?php &nbsp; namespace&nbsp;Vendor\Extension\Ui\Component\Listing\Column; &nbsp; use&nbsp;Magento\Framework\View\Element\UiComponent\ContextInterface; use&nbsp;Magento\Framework\View\Element\UiComponentFactory; use&nbsp;Magento\Ui\Component\Listing\Columns\Column; use&nbsp;Magento\Framework\Api\SearchCriteriaBuilder; &nbsp; class&nbsp;CustomColumn&nbsp;extends&nbsp;Column { protected&nbsp;$customerFactory; protected&nbsp;$_searchCriteria; &nbsp; &nbsp; public&nbsp;function&nbsp;__construct( ContextInterface&nbsp;$context, UiComponentFactory&nbsp;$uiComponentFactory, SearchCriteriaBuilder&nbsp;$criteria, array&nbsp;$components&nbsp;=&nbsp;[],&nbsp;array&nbsp;$data&nbsp;=&nbsp;[]) { $this-&gt;_searchCriteria&nbsp;=&nbsp;$criteria; parent::__construct($context,&nbsp;$uiComponentFactory,&nbsp;$components,&nbsp;$data); } &nbsp; public&nbsp;function&nbsp;prepareDataSource(array&nbsp;$dataSource) { if&nbsp;(isset($dataSource[&#39;data&#39;][&#39;items&#39;]))&nbsp;{ &nbsp; foreach&nbsp;($dataSource[&#39;data&#39;][&#39;items&#39;]&nbsp;as&nbsp;&amp;&nbsp;$item)&nbsp;{ $item[$this-&gt;getData(&#39;name&#39;)]&nbsp;=&nbsp;“admin&nbsp;-&nbsp;“&nbsp;.&nbsp;$this-&gt;getData(&#39;name&#39;); &nbsp; } } return&nbsp;$dataSource; } }</pre><p>因此,上面给出的简单步骤肯定会帮助您在Magento 2中的客户网格中添加新的/自定义列。</p><p>结论</p><p>现在,没有必要遵循复杂的方法来浪费你的时间。按照上面给出的简单步骤,让您的Magento 2商店变得更好。</p><p><br/></p>

Magento 2:在列表页面上显示相关产品

<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>介绍:</p><p>基本上,“相关”一词本身描述了产品的含义。相关的产品功能将通过增加产品的销售额来增强您的商店。如果任何客户正在浏览一个产品,则会显示与添加到相关产品列表中的产品相关的所有产品。这意味着如果您在梳子购物,则会显示发油或不同类型的梳子以提高商店的销售比例。因此,当需要显示该产品列表页面上的相关产品时,您只需实施以下给定的解决方案。</p><p>让我们实现代码:</p><p>步骤 1:覆盖列表文件,然后仅将此文件添加到扩展中。</p><p>app/code/VENDOR/EXTENSION/view/frontend/template/catalog/product/view.phtml</p><pre class="brush:bash;toolbar:false">$relatedProducts&nbsp;=&nbsp;$product-&gt;getRelatedProducts(); &nbsp; if&nbsp;(!empty($relatedProducts))&nbsp;{ &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#39;Related&nbsp;Products&nbsp;&lt;br&nbsp;/&gt;&#39;;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;($relatedProducts&nbsp;as&nbsp;$relatedProduct)&nbsp;{ &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_product&nbsp;=&nbsp;$objectManager-&gt;create(&#39;Magento\Catalog\Model\Product&#39;)-&gt;load($relatedProduct-&gt;getId()); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$relatedProduct-&gt;getId().&#39;&lt;br/&gt;&#39;; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$_product-&gt;getPrice().&#39;&lt;br/&gt;&#39;; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$_product-&gt;getName().&#39;&lt;br/&gt;&#39;; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$relatedProduct-&gt;getId();&nbsp;//get&nbsp;name &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;&lt;br&gt;&quot;; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; }</pre><p>步骤2:添加具有相关产品列表的产品列表,即可显示相关产品。</p><p>结论</p><p>因此,通过实施上述步骤,您将能够向访问任何特定产品的客户展示相关产品,这将更有助于提高商店的增长和客户体验。所以今天就是这样,我希望它对你有所帮助。</p><p><br/></p>