文章列表


如何在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>

如何在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>第 1 步:首先,我们需要在扩展名中创建一个“Registration.php”文件,路径如下:</p><p>app\code\Vendor\Extension</p><p></p><pre class="brush:bash;toolbar:false">&lt;?php \Magento\Framework\Component\ComponentRegistrar::register( &nbsp;&nbsp;&nbsp;&nbsp;\Magento\Framework\Component\ComponentRegistrar::MODULE, &nbsp;&nbsp;&nbsp;&nbsp;&#39;Vendor_Extension&#39;, &nbsp;&nbsp;&nbsp;&nbsp;__DIR__ );</pre><p>第 2 步:之后,我们需要在扩展名等文件夹中创建一个“module.xml”文件。</p><p>app\code\Vendor\Extension\etc</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:Module/etc/module.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;module&nbsp;name=&quot;Vendor_Extension&quot;&nbsp;setup_version=&quot;1.0.0&quot;&nbsp;schema_version=&quot;1.0.0&quot;/&gt; &lt;/config&gt;</pre><p>第 3 步:之后,我们需要在 path 文件夹中创建一个“checkout_cart_index.xml”文件以将文件添加到模块中。</p><p>app\code\Vendor\Extension\view\frontend\layout</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;page&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;layout=&quot;1column&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View/Layout/etc/page_configuration.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;referenceContainer&nbsp;name=&quot;checkout.cart.totals.container&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;block&nbsp;class=&quot;Magento\Framework\View\Element\Template&quot;&nbsp;name=&quot;checkout.cart.custom.block&quot;&nbsp;before=&quot;checkout.cart.totals&quot;&nbsp;template=&quot;Vendor_Extension::custom-block.phtml&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/referenceContainer&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt; &lt;/page&gt;</pre><p>第 4 步:最后,在模块的以下路径文件夹中创建“custom-block.phtml”文件。</p><p>app\code\Vendor\Extension\view\frontend\templates</p><p>&lt;?php echo <span style="color: #ce9178;">&quot;Custom Block&quot;</span><span style="color: #6a9955;">; ?&gt;</span></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>基本上,Magento 2生产模式是所有Magento 2网站最有效的模式,因此该网站经过全面优化,运行平稳,提升了最佳的客户体验。主要是生产模式的使用非常安全可靠,原因是如果任何不适当的用户尝试访问 pub/static 文件夹并主动对其进行更改,那么只会在重复版本中进行更改,并且文件将在下一次静态部署期间被覆盖。</p><p>编码步骤</p><p>有两种方法可以检查Magento 2是否在生产模式下运行。</p><p>方法1:(不推荐的方法)</p><p></p><pre class="brush:bash;toolbar:false">$om&nbsp;=&nbsp;\Magento\Framework\App\ObjectManager::getInstance(); /**&nbsp;@return&nbsp;\Magento\Framework\App\State&nbsp;*/ $state&nbsp;=&nbsp;$om-&gt;get(&#39;Magento\Framework\App\State&#39;); /**&nbsp;@var&nbsp;bool&nbsp;$isDeveloperMode&nbsp;*/ $isDeveloperMode&nbsp;=&nbsp;\Magento\Framework\App\State::MODE_DEVELOPER&nbsp;===&nbsp;$state-&gt;getMode();</pre><p>注意: 根据Magento标准,不建议使用对象管理器,我们共享的方式只是为了知识目的。</p><p>方法2:Magento编码标准明智</p><pre class="brush:bash;toolbar:false">protected&nbsp;$_appState; public&nbsp;function&nbsp;__construct(&nbsp;\Magento\Framework\App\State&nbsp;$appState&nbsp;) { &nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_appState&nbsp;=&nbsp;$appState; } public&nbsp;function&nbsp;doSomething()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(&nbsp;$this-&gt;_appState-&gt;getMode()&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\Magento\Framework\App\State::MODE_DEFAULT: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Action&nbsp;for&nbsp;default&nbsp;mode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\Magento\Framework\App\State::MODE_PRODUCTION: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Action&nbsp;for&nbsp;production&nbsp;mode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;\Magento\Framework\App\State::MODE_DEVELOPER: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Action&nbsp;for&nbsp;developer&nbsp;mode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>您可以使用上面给出的任何方法并实现检查Magento 2是否在生产模式下运行。实施后,您将能够成功了解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>步骤1: 首先,我们需要在以下路径创建import.xml文件,</p><p>app\code\Vendor\Extension\etc 并添加以下代码</p><p>&lt;?xml <span style="color: #569cd6;">version</span>=<span style="color: #ce9178;">&quot;1.0&quot;</span>?&gt;</p><p>&lt;config xmlns:<span style="color: #569cd6;">xsi</span>=<span style="color: #ce9178;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> xsi:<span style="color: #569cd6;">noNamespaceSchemaLocation</span>=<span style="color: #ce9178;">&quot;urn:magento:module:Magento_ImportExport:etc/import.xsd&quot;</span>&gt;</p><p>&lt;entityType <span style="color: #569cd6;">entity</span>=<span style="color: #ce9178;">&quot;catalog_product&quot;</span> <span style="color: #569cd6;">name</span>=<span style="color: #ce9178;">&quot;custom_product_type_name&quot;</span> <span style="color: #569cd6;">model</span>=<span style="color: #ce9178;">&quot;Vendor\Extension\Model\Import\Type\Producttype&quot;</span> /&gt;</p><p>&lt;/config&gt;</p><p>第2步: 之后,我们需要在以下路径内创建一个产品类型.php文件。</p><p>app\code\Vendor\Extension\Model\Import\Type 并添加以下代码</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Model\Import\Type;&nbsp; class&nbsp;Producttype&nbsp;extends&nbsp;\Magento\CatalogImportExport\Model\Import\Product\Type\AbstractType { &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;BEFORE_OPTION_VALUE_DELIMITER&nbsp;=&nbsp;&#39;;&#39;;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;PAIR_VALUE_SEPARATOR&nbsp;=&nbsp;&#39;=&#39;;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;VALUE_DYNAMIC&nbsp;=&nbsp;&#39;dynamic&#39;;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;VALUE_FIXED&nbsp;=&nbsp;&#39;fixed&#39;;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;NOT_FIXED_DYNAMIC_ATTRIBUTE&nbsp;=&nbsp;&#39;price_view&#39;;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;SELECTION_PRICE_TYPE_FIXED&nbsp;=&nbsp;0;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;SELECTION_PRICE_TYPE_PERCENT&nbsp;=&nbsp;1;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$connection;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_resource;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_cachedOptions&nbsp;=&nbsp;[];&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_cachedSkus&nbsp;=&nbsp;[];&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_cachedSkuToProducts&nbsp;=&nbsp;[];&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_cachedOptionSelectQuery&nbsp;=&nbsp;[];&nbsp; public&nbsp;function&nbsp;isRowValid(array&nbsp;$rowData,&nbsp;$rowNum,&nbsp;$isNewProduct&nbsp;=&nbsp;true) { &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;parent::isRowValid($rowData,&nbsp;$rowNum,&nbsp;$isNewProduct);&nbsp; } }</pre><p>步骤3: 最后刷新缓存并使用product_type列内的CSV文件中的自定义产品类型开始导入过程。</p><p>通过实施上述代码步骤,您将在Magento 2商店中成功导入自定义产品。</p><p>结语:</p><p>我希望上述解决方案可以帮助您解决在Magento 2商店中导入自定义产品的问题。</p><p><br/></p>

如何在Magento 2中以编程方式清除特定CMS页面的缓存

<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在工作时会使用大量内存,并且需要在一天内多次刷新内存。很多时候,Magento开发人员需要刷新特定cms页面的缓存,因为cms页面上的更改或从cms页面调用另一个phtml文件或此phtml文件中的更改。因此,紧接着您需要刷新缓存,对于该刷新,整个站点缓存是不合适的,因为它会导致站点停机。因此,请练习仅刷新特定的cms页面,并且刷新不会影响整个站点。</p><p>刷新缓存的步骤:</p><p>为此,我们必须创建一个PHP脚本,您需要将其放在已安装的Magento文件夹中的根目录上,然后可以直接在Web浏览器上运行。</p><pre class="brush:bash;toolbar:false">&lt;?php use&nbsp;Magento\Framework\AppInterface; &nbsp; try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;require&nbsp;__DIR__&nbsp;.&nbsp;&#39;/app/bootstrap.php&#39;; &nbsp; }&nbsp;catch&nbsp;(\Exception&nbsp;$e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#39;Autoload&nbsp;error:&nbsp;&#39;&nbsp;.&nbsp;$e-&gt;getMessage(); &nbsp;&nbsp;&nbsp;&nbsp;exit(1); } &nbsp; try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$bootstrap&nbsp;=&nbsp;\Magento\Framework\App\Bootstrap::create(BP,&nbsp;$_SERVER); &nbsp;&nbsp;&nbsp;&nbsp;$objectManager&nbsp;=&nbsp;$bootstrap-&gt;getObjectManager(); &nbsp;&nbsp;&nbsp;&nbsp;$objectManager-&gt;get(&#39;Magento\Framework\App\State&#39;)-&gt;setAreaCode(&#39;frontend&#39;); &nbsp;&nbsp;&nbsp;&nbsp;$fullPageCache&nbsp;=&nbsp;$objectManager-&gt;get(\Magento\PageCache\Model\Cache\Type::class); &nbsp;&nbsp;&nbsp;&nbsp;$fullPageCache-&gt;clean(\Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,&nbsp;array(&#39;cms_p_2&#39;));&nbsp;//&nbsp;Here&nbsp;2&nbsp;is&nbsp;a&nbsp;cms&nbsp;page&nbsp;id&nbsp;here&nbsp;you&nbsp;can&nbsp;pass&nbsp;any&nbsp;cms&nbsp;page&nbsp;id } catch(\Exception&nbsp;$e){ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;Error&nbsp;:&quot;; &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$e-&gt;getMessage(); }</pre><p>因此,通过应用上述内容,您将能够成功刷新特定的CMS页面。</p><p>结语:</p><p>我希望上述刷新特定CMS页面的解决方案对您有所帮助。</p><p><br/></p>