文章列表


如何在Magento 2中使用CSS文件为特定CMS页面应用自定义CSS

<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中使用CSS文件为特定CMS页面应用自定义CSS的步骤:</p><p>第1步: 首先,我们需要在您的主题文件夹中创建一个Magento_Cms文件夹(如果不存在)。</p><p>第2步: 之后在布局文件夹中创建一个XML文件。该文件的格式应如下所示:</p><p>cms_page_view_selectable_pageidentifier_layoutname.xml</p><p>文件的路径如下:</p><p>app\design\frontend\Theme_Name\Magento_Cms\layout\cms_page_view_selectable_faqs_custom.xml</p><p>现在添加以下代码</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;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View/Layout/etc/page_configuration.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;head&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;css&nbsp;src=&quot;Magento_Cms::css/custom_css.css&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt; &lt;/page&gt;</pre><p>步骤3:之后,我们需要在Magento_Cms目录中创建一个css文件“custom_css.css”文件,并在该文件中应用CSS</p><p>app\design\frontend\Theme_Name\Magento_Cms\web\css\</p><p>步骤4: 之后,您的自定义布局名称将显示在管理面板中。</p><p>导航到内容&gt;页面&gt;编辑特定页面&gt;设计</p><p><img src="/uploads/images/20230830/92961bf82e61254e825bb65df4769f5c.png" title="1.png" alt="" width="882" height="317"/></p><p>自定义布局</p><p>从下拉列表中选择布局名称并保存页面。</p><p>结论:</p><p>因此,现在您知道如何使用 Magento 2 中的 CSS 文件为特定 CMS 页面应用自定义 CSS</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>步骤1:要声明自定义小部件,请在以下路径创建小部件.xml文件</p><p>app\code\Vendor\Extensionion\etc\widget.xml</p><p>现在,添加以下代码</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;?&gt; &lt;widgets&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:extention:Magento_Widget:etc/widget.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&lt;widget&nbsp;class=&quot;Vendor\Extention\Block\Customwidget&quot;&nbsp;id=&quot;customwidget&quot;&gt; &nbsp;&lt;label&gt;Custom&nbsp;Widget&lt;/label&gt; &nbsp;&lt;description&gt;Creating&nbsp;Custom&nbsp;Widget&lt;/description&gt; &nbsp;&lt;parameters&gt; &nbsp;&lt;parameter&nbsp;name=&quot;customwidgettext&quot;&nbsp;sort_order=&quot;10&quot;&nbsp;visible=&quot;true&quot;&nbsp;xsi:type=&quot;text&quot;&gt; &nbsp;&lt;label&gt;Enter&nbsp;Custom&nbsp;text&lt;/label&gt; &nbsp;&lt;/parameter&gt; &nbsp;&lt;/parameters&gt; &nbsp;&nbsp;&nbsp;&lt;/widget&gt; &lt;/widgets&gt;</pre><p>参数允许向小部件添加不同的字段。</p><p>第2步: 现在,在块内创建一个PHP文件。转到以下路径</p><p>app\code\Vendor\Extensionion\Block\Customwidget.php</p><p>并添加代码如下</p><pre class="brush:bash;toolbar:false">&lt;?php &nbsp; namespace&nbsp;Vendor\Extention\Block; &nbsp; use&nbsp;Magento\Framework\View\Element\Template; use&nbsp;Magento\Widget\Block\BlockInterface; &nbsp; class&nbsp;Customwidget&nbsp;extends&nbsp;Template&nbsp;implements&nbsp;BlockInterface { &nbsp;protected&nbsp;$template&nbsp;=&nbsp;&quot;customwidget.phtml&quot;; }</pre><p>第三步: 现在创建一个 phtml 文件,该文件将 phtml 的数据显示在前端。导航到以下路径</p><p>app\code\Vendor\Extention\view\frontend\templates\customwidget.phtml</p><p>添加以下代码</p><pre class="brush:bash;toolbar:false">&lt;div&gt; &nbsp;&nbsp;&nbsp;&lt;p&gt;This&nbsp;will&nbsp;show&nbsp;the&nbsp;custom&nbsp;text&nbsp;field&nbsp;data&nbsp;inside&nbsp;widget&nbsp;:&nbsp;&lt;/p&gt; &nbsp;&nbsp;&nbsp;&lt;span&gt;&lt;?php&nbsp;echo&nbsp;$block-&gt;getData(‘customwidgettext’);?&gt;&lt;/span&gt; &lt;/div&gt;</pre><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>在Magento 2中自定义维护默认页面的步骤:</p><p>步骤1:导航到Magento 根目录并从终端运行以下命令以在Magento中启用维护模式。</p><pre class="brush:bash;toolbar:false">php&nbsp;bin/magento&nbsp;maintenance:enable</pre><p>步骤2:启用维护模式后,如果开发人员模式设置为Magento,则主页显示为正在维护中</p><p>对于默认模式和生产模式,它显示为错误日志或报告消息。这会产生糟糕的用户体验,因此您需要自定义页面。</p><p>步骤3:现在要自定义Magento默认维护页面,请从Magento根目录打开.htaccess文件。</p><p>注意:如果您使用的是 Magento版本2.4.x,则需要从Magento的pub目录中打开.htaccess文件。</p><p>步骤4:然后,从.htaccess文件中找到此代码:“index.php”,现在将此代码修改为“maintenance.html”。</p><p>第 5 步: 在 Magento 根目录上创建一个维护.html文件。</p><p>注意:如果您使用的是Magento 版本2.4.x,则需要在Magento的pub目录下创建一个maintenance.html文件。</p><p>现在添加以下代码</p><pre class="brush:bash;toolbar:false">&lt;!doctype&nbsp;html&gt; &lt;html&gt; &nbsp;&nbsp;&lt;head&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Site&nbsp;Maintenance&lt;/title&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset=&quot;utf-8&quot;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;name=&quot;robots&quot;&nbsp;content=&quot;noindex&quot;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;name=&quot;viewport&quot;&nbsp;content=&quot;width=device-width,&nbsp;initial-scale=1.0&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;style&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body&nbsp;{&nbsp;text-align:&nbsp;center;&nbsp;padding:&nbsp;20px;&nbsp;font:&nbsp;20px&nbsp;Helvetica,&nbsp;sans-serif;&nbsp;color:&nbsp;#333;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@media&nbsp;(min-width:&nbsp;768px){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body{&nbsp;padding-top:&nbsp;150px;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h1&nbsp;{&nbsp;font-size:&nbsp;50px;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;article&nbsp;{&nbsp;display:&nbsp;block;&nbsp;text-align:&nbsp;left;&nbsp;max-width:&nbsp;650px;&nbsp;margin:&nbsp;0&nbsp;auto;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;{&nbsp;color:&nbsp;#dc8100;&nbsp;text-decoration:&nbsp;none;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a:hover&nbsp;{&nbsp;color:&nbsp;#333;&nbsp;text-decoration:&nbsp;none;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&lt;/style&gt; &nbsp;&nbsp;&lt;/head&gt; &nbsp;&nbsp;&lt;body&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;article&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;We&amp;rsquo;ll&nbsp;be&nbsp;back&nbsp;soon!&lt;/h1&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;Sorry&nbsp;for&nbsp;the&nbsp;inconvenience&nbsp;but&nbsp;we&amp;rsquo;re&nbsp;performing&nbsp;some&nbsp;maintenance&nbsp;at&nbsp;the&nbsp;moment.&nbsp;If&nbsp;you&nbsp;need&nbsp;to&nbsp;you&nbsp;can&nbsp;always&nbsp;contact&nbsp;us,&nbsp;otherwise&nbsp;we&amp;rsquo;ll&nbsp;be&nbsp;back&nbsp;online&nbsp;shortly!&lt;/p&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&amp;mdash;&nbsp;The&nbsp;Team&lt;/p&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/article&gt; &nbsp;&nbsp;&lt;/body&gt; &lt;/html&gt;</pre><p>您可以根据需要修改上述代码。</p><p>步骤6:现在打开Magento 主页,您的Magento默认维护页面已更改</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>在重新索引Magento 2时修复无效列数据类型的步骤:</p><p>步骤1:转到以下路径</p><p>vendor/magento/module-eav/model/resourceModel/Helper.php</p><p>将以下行插入 getDdlTypeByColumnType() 函数</p><p></p><pre class="brush:bash;toolbar:false">&nbsp;&nbsp;&nbsp;case&nbsp;&#39;int&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;int&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;smallint&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;smallint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;bigint&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;bigint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</pre><p>所以之前的getDdlTypeByColumnType()函数看起来像这样</p><pre class="brush:bash;toolbar:false">public&nbsp;function&nbsp;getDdlTypeByColumnType($columnType) { &nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;($columnType) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;char&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;varchar&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;text&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;tinyint&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;smallint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array_search($columnType,&nbsp;$this-&gt;_ddlColumnTypes); }</pre><p>现在getDdlTypeByColumnType()函数已更改如下</p><pre class="brush:bash;toolbar:false">public&nbsp;function&nbsp;getDdlTypeByColumnType($columnType) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;($columnType) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;int&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;int&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;smallint&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;smallint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;bigint&nbsp;unsigned&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;bigint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;char&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;varchar&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;text&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#39;tinyint&#39;: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$columnType&nbsp;=&nbsp;&#39;smallint&#39;; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array_search($columnType,&nbsp;$this-&gt;_ddlColumnTypes); }</pre><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>在Magento 2的目录价格规则表单中添加自定义字段的步骤:</p><p>步骤 1:在目录规则表中添加自定义字段db_schema.xml。导航到以下路径</p><p>app/code/Vendor/Extension/etc/db_schema.xml</p><p>现在,添加以下代码</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;schema&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;table&nbsp;name=&quot;catalogrule&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;column&nbsp;xsi:type=&quot;varchar&quot;&nbsp;name=&quot;custom_field&quot;&nbsp;nullable=&quot;false&quot;&nbsp;length=&quot;255&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comment=&quot;Custom&nbsp;Field&nbsp;Catalog&nbsp;Price&nbsp;Rule&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&lt;/table&gt; &lt;/schema&gt;</pre><p>第 2 步: 在ui_component中创建catalog_rule_form.xml文件。转到以下路径</p><p>app/code/Vendor/Extension/view/adminhtml/ui_component/catalog_rule_form.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; &lt;form&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;fieldset&nbsp;name=&quot;rule_information&quot;&nbsp;sortOrder=&quot;10&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;field&nbsp;name=&quot;custom_field&quot;&nbsp;formElement=&quot;input&quot;&gt; &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;&lt;item&nbsp;name=&quot;config&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;source&quot;&nbsp;xsi:type=&quot;string&quot;&gt;sales_rule&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/item&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/argument&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;settings&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;validation&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;rule&nbsp;name=&quot;required-entry&quot;&nbsp;xsi:type=&quot;boolean&quot;&gt;false&lt;/rule&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/validation&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dataType&gt;text&lt;/dataType&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label&nbsp;translate=&quot;true&quot;&gt;Custom&nbsp;Field&lt;/label&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;visible&gt;true&lt;/visible&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dataScope&gt;custom_field&lt;/dataScope&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/settings&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/field&gt; &lt;/fieldset&gt; &lt;/form&gt;</pre><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>在Magento 2中使用观察器从任何页面中删除块的步骤</p><p>第 1 步:我们需要 在扩展中以以下路径创建一个“events.xml”文件</p><p>app\code\Vendor\Extension\etc\</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:Event/etc/events.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;event&nbsp;name=&quot;layout_generate_blocks_after&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;observer&nbsp;name=&quot;removeblock&quot;&nbsp;instance=&quot;Vendor\Extension\Observer\Removeblock&quot;&nbsp;shared=&quot;false&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/event&gt; &lt;/config&gt;</pre><p>第2步: 之后,我们需要在扩展名中在以下路径中创建一个“Removeblock.php”文件。</p><p>app\code\Vendor\Extension\Observer\</p><p>现在,附加以下代码</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Observer; &nbsp; use&nbsp;Magento\Framework\Event\Observer; use&nbsp;Magento\Framework\Event\ObserverInterface; &nbsp; class&nbsp;Removeblock&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;$layout&nbsp;=&nbsp;$observer-&gt;getLayout(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$your_condition&nbsp;=&nbsp;1;&nbsp;//&nbsp;write&nbsp;your&nbsp;conditional&nbsp;logic&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($your_condition&nbsp;==&nbsp;1) &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;you&nbsp;need&nbsp;to&nbsp;modifed&nbsp;block&nbsp;name&nbsp;as&nbsp;per&nbsp;your&nbsp;requirement. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$layout-&gt;unsetElement(&#39;customer-account-navigation-orders-link&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><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>在Magento 2中显示复杂错误和成功消息的步骤:</p><p>步骤1:转到以下路径</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:ObjectManager/etc/config.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;type&nbsp;name=&quot;Magento\Framework\View\Element\Message\MessageConfigurationsPool&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;configurationsMap&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;addCustomMessage&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;renderer&quot;&nbsp;xsi:type=&quot;const&quot;&gt;\Magento\Framework\View\Element\Message\Renderer\BlockRenderer::CODE&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;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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;item&nbsp;name=&quot;template&quot;&nbsp;xsi:type=&quot;string&quot;&gt;Vendor_Extension::messages/addCustomMessage.phtml&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&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;&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;/type&gt; &lt;/config&gt;</pre><p>步骤 2:然后移动到以下路径</p><p>app\code\Vendor\Extension\view\frontend\templates\messages\addCustomMessage.phtml</p><p>并添加代码如下</p><pre class="brush:bash;toolbar:false">&lt;?=&nbsp;$block-&gt;escapeHtml(__( &nbsp;&nbsp;&nbsp;&nbsp;&#39;Please&nbsp;&lt;a&nbsp;href=&quot;%1&quot;&gt;click&nbsp;here&lt;/a&gt;&nbsp;to&nbsp;redirect&nbsp;to&nbsp;your&nbsp;account.&#39;, &nbsp;&nbsp;&nbsp;&nbsp;$block-&gt;getData(&#39;url&#39;) ),&nbsp;[&#39;a&#39;]); ?&gt;</pre><p>步骤 3:在控制器操作中添加复杂的成功或错误消息。</p><p><br/></p><pre class="brush:bash;toolbar:false">//Error&nbsp;Message $this-&gt;messageManager-&gt;addComplexErrorMessage( &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;addCustomMessage&#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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;url&#39;&nbsp;=&gt;&nbsp;‘YOUR_URL’, &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; //Success&nbsp;Message $this-&gt;messageManager-&gt;addComplexSuccessMessage( &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;addCustomMessage&#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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;url&#39;&nbsp;=&gt;&nbsp;‘YOUR_URL’, &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;);</pre><p>结论:</p><p>因此,您可以在Magento 2中轻松添加自定义错误和成功消息。</p><p><br/></p>

如何在Magento 2中编码和解码URL

<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中编码和解码URL的步骤:</p><p>步骤1:您需要插入\Magento\Framework\Url\EncoderInterface类来编码URL,并插入\Magento\Framework\Url\DecoderInterface类来解码URL。这两个类都必须插入到构造中。我将此代码添加到自定义模块的块文件中。</p><pre class="brush:bash;toolbar:false">&lt;?php &nbsp; namespace&nbsp;Vendor\Extension\Block; &nbsp; use&nbsp;Magento\Framework\Url\EncoderInterface; use&nbsp;Magento\Framework\Url\DecoderInterface; &nbsp; class&nbsp;CustomBlock&nbsp;extends&nbsp;\Magento\Framework\View\Element\Template { &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;EncoderInterface &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$url_Encode; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@var&nbsp;DecoderInterface &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$url_Decode; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;EncoderInterface&nbsp;$url_Encode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;DecoderInterface&nbsp;$url_Decode &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EncoderInterface&nbsp;$url_Encode, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DecoderInterface&nbsp;$url_Decode) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;urlEncode&nbsp;=&nbsp;$url_Encode; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;urlDecode&nbsp;=&nbsp;$url_Decode; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getEncodeUrl($url) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$url&nbsp;=&nbsp;&nbsp;baseurl/mymodule/index &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Output&nbsp;:&nbsp;pLzEyNy4wLjAuMS9tMjM0L2hlbGxvd29, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;urlEncode-&gt;encode($url); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getDecodeUrl($url) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;$url&nbsp;:pLzEyNy4wLjAuMS9tMjM0L2hlbGxvd29, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Output&nbsp;=&nbsp;&nbsp;baseurl/mymodule/index &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;urlDecode-&gt;decode($url); &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>您需要在 getEncodeUrl() 和 getDecodeUrl() 中传递一个 URL 作为参数来返回 输出。</p><p>输出:</p><p>基本网址:baseurl/mymodule/index</p><p>Encode URL : pLzEyNy4wLjAuMS9tMjM0L2hlbGxvd29</p><p>解码网址:baseurl/mymodule/index</p><p>结论:</p><p>因此,通过这种方式,您可以在Magento 2中编码和解码URL。您还可以在Magento 2中将参数传递给URL。</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>第 1 步:我们需要 在扩展名中以以下路径创建一个“Data.php”文件</p><p>app\code\Vendor\Extension\Helper\</p><p>现在添加代码,如下所示</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Helper; &nbsp; class&nbsp;Data&nbsp;extends&nbsp;\Magento\Framework\App\Helper\AbstractHelper { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_productobj; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$_stockRegistry; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Framework\App\Helper\Context&nbsp;$context, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\Catalog\Model\Product&nbsp;$productobj, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\Magento\CatalogInventory\Api\StockRegistryInterface&nbsp;$stockRegistry, &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_productobj&nbsp;=&nbsp;$productobj; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_stockRegistry&nbsp;=&nbsp;$stockRegistry; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($context); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;updateProductStock($productId,$stockData)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$product=$this-&gt;_productobj-&gt;load($productId);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem=$this-&gt;_stockRegistry-&gt;getStockItem($productId);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem-&gt;setData(&#39;is_in_stock&#39;,$stockData[&#39;is_in_stock&#39;]);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem-&gt;setData(&#39;qty&#39;,$stockData[&#39;qty&#39;]);&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem-&gt;setData(&#39;manage_stock&#39;,$stockData[&#39;manage_stock&#39;]); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem-&gt;setData(&#39;use_config_notify_stock_qty&#39;,1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$stockItem-&gt;save();&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$product-&gt;save();&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>步骤 2:定义帮助程序类并根据您的要求使用它。您需要将产品 ID 作为第一个参数传递,并将数组中的库存数据作为第二个参数传递。下面是一个股票数据数组的示例。</p><p>$<span style="color: #569cd6;">stockData</span> = array(<span style="color: #ce9178;">&#39;is_in_stock&#39;</span>=&gt;1,<span style="color: #ce9178;">&#39;qty&#39;</span>=&gt; 5, <span style="color: #ce9178;">&#39;manage_stock&#39;</span>=&gt; 1)<span style="color: #6a9955;">;</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>在Magento 2中设置动态电子邮件主题的步骤:</p><p>步骤 1:在以下路径创建电子邮件模板配置文件</p><p>app\code\Vendor\Extension\etc\email_templates.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:module:Magento_Email:etc/email_templates.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;template&nbsp;id=&quot;your_email_template_id&quot;&nbsp;label=&quot;Label&nbsp;of&nbsp;your&nbsp;template&nbsp;file&quot;&nbsp;file=&quot;email_file.html&quot;&nbsp;type=&quot;html&quot;&nbsp;module=&quot;Vendor_Extension&quot;&nbsp;area=&quot;frontend&quot;/&gt; &lt;/config&gt;</pre><p>步骤2:现在在以下路径创建电子邮件模板文件</p><p>app\code\Vendor\Extension\view\frontend\email\email_file.html</p><p>现在添加以下代码片段</p><pre class="brush:bash;toolbar:false">&lt;!--@subject&nbsp;{{var&nbsp;subject|raw&nbsp;}}@--&gt; &lt;!--@vars {&quot;var&nbsp;customerName&quot;:&quot;Customer&nbsp;Name&quot;, &quot;var&nbsp;customerEmail&quot;:&quot;Customer&nbsp;Email&quot;, &quot;var&nbsp;customerComment&quot;:&quot;Comment&quot;} @--&gt; &lt;body&nbsp;style=&quot;background:#F6F6F6;&nbsp;font-family:Verdana,&nbsp;Arial,&nbsp;Helvetica,&nbsp;sans-serif;&nbsp;font-size:12px;&nbsp;margin:0;&nbsp;padding:0;&quot;&gt; &lt;div&nbsp;style=&quot;background:#F6F6F6;&nbsp;font-family:Verdana,&nbsp;Arial,&nbsp;Helvetica,&nbsp;sans-serif;&nbsp;font-size:12px;&nbsp;margin:0;&nbsp;padding:0;&quot;&gt; &lt;table&nbsp;cellspacing=&quot;0&quot;&nbsp;cellpadding=&quot;0&quot;&nbsp;border=&quot;0&quot;&nbsp;height=&quot;100%&quot;&nbsp;width=&quot;100%&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;align=&quot;center&quot;&nbsp;valign=&quot;top&quot;&nbsp;style=&quot;padding:20px&nbsp;0&nbsp;20px&nbsp;0&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;table&nbsp;bgcolor=&quot;FFFFFF&quot;&nbsp;cellspacing=&quot;0&quot;&nbsp;cellpadding=&quot;10&quot;&nbsp;border=&quot;0&quot;&nbsp;width=&quot;650&quot;&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;h1&nbsp;style=&quot;font-size:22px;&nbsp;font-weight:normal;&nbsp;line-height:22px;&nbsp;margin:0&nbsp;0&nbsp;11px&nbsp;0;&quot;&gt;Hello&nbsp;Admin,&lt;/h1&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;p&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&nbsp;font-size:12px;&nbsp;line-height:16px;&nbsp;margin:0;&nbsp;padding:13px&nbsp;18px;&nbsp;background:#F9F9F9;&quot;&gt;You&nbsp;Have&nbsp;Received&nbsp;New&nbsp;Query&nbsp;As&nbsp;Bellow.&lt;p&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;p&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&nbsp;font-size:12px;&nbsp;line-height:16px;&nbsp;margin:0;&nbsp;padding:13px&nbsp;18px;&nbsp;background:#F9F9F9;&quot;&gt;Customer&nbsp;Name&nbsp;:&nbsp;&lt;strong&gt;{{var&nbsp;customerName}}&lt;/strong&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;p&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&nbsp;font-size:12px;&nbsp;line-height:16px;&nbsp;margin:0;&nbsp;padding:13px&nbsp;18px;&nbsp;background:#F9F9F9;&quot;&gt;Customer&nbsp;Email&nbsp;:&nbsp;&lt;strong&gt;{{var&nbsp;customerEmail}}&lt;/strong&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;p&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&nbsp;font-size:12px;&nbsp;line-height:16px;&nbsp;margin:0;&nbsp;padding:13px&nbsp;18px;&nbsp;background:#F9F9F9;&quot;&gt;Customer&nbsp;Comment&nbsp;:&nbsp;&lt;strong&gt;{{var&nbsp;customerComment}}&lt;/strong&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;valign=&quot;top&quot;&nbsp;colspan=&quot;5&quot;&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;&lt;p&nbsp;style=&quot;border:1px&nbsp;solid&nbsp;#E0E0E0;&nbsp;font-size:12px;&nbsp;line-height:16px;&nbsp;margin:0;&nbsp;padding:13px&nbsp;18px;&nbsp;background:#F9F9F9;&nbsp;text-align:center;&quot;&gt;&lt;strong&gt;Thank&nbsp;you.&lt;/strong&gt;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/body&gt;</pre><p>步骤3:现在模板已准备就绪,我们将编写发送邮件的代码。</p><p>转到控制器文件</p><p>app\code\Vendor\Extension\Controller\Index\Index.php</p><p>添加下面提到的代码</p><pre class="brush:bash;toolbar:false">&lt;?php namespace&nbsp;Vendor\Extension\Controller\Index; &nbsp; use&nbsp;Magento\Framework\App\Action\Context; use&nbsp;Magento\Store\Model\StoreManagerInterface; use&nbsp;Magento\Framework\Mail\Template\TransportBuilder; use&nbsp;Magento\Framework\Translate\Inline\StateInterface; &nbsp; class&nbsp;Index&nbsp;extends&nbsp;\Magento\Framework\App\Action\Action { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$transportBuilder; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$storeManager; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$inlineTranslation; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$state; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context&nbsp;$context, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StoreManagerInterface&nbsp;$storeManager, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TransportBuilder&nbsp;$transportBuilder, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StateInterface&nbsp;$state) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;transportBuilder&nbsp;=&nbsp;$transportBuilder; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;storeManager&nbsp;=&nbsp;$storeManager; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inlineTranslation&nbsp;=&nbsp;$state; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($context); &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; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$templateId&nbsp;=&nbsp;&#39;your_email_template_id&#39;;&nbsp;//&nbsp;template&nbsp;id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fromEmail&nbsp;=&nbsp;&#39;admin@gmail.com&#39;;&nbsp;&nbsp;//&nbsp;sender&nbsp;Email&nbsp;id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$toEmail&nbsp;=&nbsp;&#39;test.magecomp@gmail.com&#39;;&nbsp;//&nbsp;receiver&nbsp;email&nbsp;id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$subject&nbsp;=&nbsp;&#39;your_dynamic_subject&#39;;&nbsp;//&nbsp;Dynamic&nbsp;subject &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;template&nbsp;variables&nbsp;pass&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$templateVars&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;subject&#39;&nbsp;=&gt;&nbsp;$subject, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;customerName&#39;&nbsp;=&gt;&nbsp;&#39;Test&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;customerEmail&#39;&nbsp;=&gt;&nbsp;&#39;Magecomp&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;customerComment&#39;&nbsp;=&gt;&nbsp;&#39;Test&nbsp;Comment&#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;$storeId&nbsp;=&nbsp;$this-&gt;storeManager-&gt;getStore()-&gt;getId(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inlineTranslation-&gt;suspend(); &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$storeScope&nbsp;=&nbsp;\Magento\Store\Model\ScopeInterface::SCOPE_STORE; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$templateOptions&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;area&#39;&nbsp;=&gt;&nbsp;\Magento\Framework\App\Area::AREA_FRONTEND, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;store&#39;&nbsp;=&gt;&nbsp;$storeId &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;$transport&nbsp;=&nbsp;$this-&gt;transportBuilder-&gt;setTemplateIdentifier($templateId,&nbsp;$storeScope) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;setTemplateOptions($templateOptions) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;setTemplateVars($templateVars) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;setFrom($fromEmail) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;addTo($toEmail) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt;getTransport(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$transport-&gt;sendMessage(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inlineTranslation-&gt;resume(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;messageManager-&gt;addSuccessMessage(__(&#39;Your&nbsp;Email&nbsp;Sent&nbsp;successfully&#39;)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_redirect(&#39;*/*/&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch&nbsp;(\Exception&nbsp;$e) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;inlineTranslation-&gt;resume(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;messageManager-&gt;addErrorMessage(__(&#39;We&nbsp;can\&#39;t&nbsp;process&nbsp;your&nbsp;request&#39;&nbsp;.&nbsp;$e-&gt;getMessage())); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_redirect(&#39;*/*/&#39;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>结论:</p><p>这样,您可以在Magento 2中设置动态电子邮件主题,并提高电子邮件营销活动的打开率。</p><p><br/></p>