<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"><?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <head> <css src="Magento_Cms::css/custom_css.css" /> </head> </page></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>导航到内容>页面>编辑特定页面>设计</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>
文章列表
<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"><?xml version="1.0" ?> <widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:extention:Magento_Widget:etc/widget.xsd"> <widget class="Vendor\Extention\Block\Customwidget" id="customwidget"> <label>Custom Widget</label> <description>Creating Custom Widget</description> <parameters> <parameter name="customwidgettext" sort_order="10" visible="true" xsi:type="text"> <label>Enter Custom text</label> </parameter> </parameters> </widget> </widgets></pre><p>参数允许向小部件添加不同的字段。</p><p>第2步: 现在,在块内创建一个PHP文件。转到以下路径</p><p>app\code\Vendor\Extensionion\Block\Customwidget.php</p><p>并添加代码如下</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extention\Block; use Magento\Framework\View\Element\Template; use Magento\Widget\Block\BlockInterface; class Customwidget extends Template implements BlockInterface { protected $template = "customwidget.phtml"; }</pre><p>第三步: 现在创建一个 phtml 文件,该文件将 phtml 的数据显示在前端。导航到以下路径</p><p>app\code\Vendor\Extention\view\frontend\templates\customwidget.phtml</p><p>添加以下代码</p><pre class="brush:bash;toolbar:false"><div> <p>This will show the custom text field data inside widget : </p> <span><?php echo $block->getData(‘customwidgettext’);?></span> </div></pre><p>结论:</p><p>通过这种方式,您可以在Magento 2中以编程方式创建小部件。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中自定义维护默认页面的步骤:</p><p>步骤1:导航到Magento 根目录并从终端运行以下命令以在Magento中启用维护模式。</p><pre class="brush:bash;toolbar:false">php bin/magento 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"><!doctype html> <html> <head> <title>Site Maintenance</title> <meta charset="utf-8"/> <meta name="robots" content="noindex"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> body { text-align: center; padding: 20px; font: 20px Helvetica, sans-serif; color: #333; } @media (min-width: 768px){ body{ padding-top: 150px; } } h1 { font-size: 50px; } article { display: block; text-align: left; max-width: 650px; margin: 0 auto; } a { color: #dc8100; text-decoration: none; } a:hover { color: #333; text-decoration: none; } </style> </head> <body> <article> <h1>We&rsquo;ll be back soon!</h1> <div> <p>Sorry for the inconvenience but we&rsquo;re performing some maintenance at the moment. If you need to you can always contact us, otherwise we&rsquo;ll be back online shortly!</p> <p>&mdash; The Team</p> </div> </article> </body> </html></pre><p>您可以根据需要修改上述代码。</p><p>步骤6:现在打开Magento 主页,您的Magento默认维护页面已更改</p><p>结论:</p><p>因此,通过这种方式,您可以更改Magento 2商店维护页面的默认消息。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在重新索引Magento 2时修复无效列数据类型的步骤:</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"> case 'int unsigned': $columnType = 'int'; break; case 'smallint unsigned': $columnType = 'smallint'; break; case 'bigint unsigned': $columnType = 'bigint'; break;</pre><p>所以之前的getDdlTypeByColumnType()函数看起来像这样</p><pre class="brush:bash;toolbar:false">public function getDdlTypeByColumnType($columnType) { switch ($columnType) { case 'char': case 'varchar': $columnType = 'text'; break; case 'tinyint': $columnType = 'smallint'; break; default: break; } return array_search($columnType, $this->_ddlColumnTypes); }</pre><p>现在getDdlTypeByColumnType()函数已更改如下</p><pre class="brush:bash;toolbar:false">public function getDdlTypeByColumnType($columnType) { switch ($columnType) { case 'int unsigned': $columnType = 'int'; break; case 'smallint unsigned': $columnType = 'smallint'; break; case 'bigint unsigned': $columnType = 'bigint'; break; case 'char': case 'varchar': $columnType = 'text'; break; case 'tinyint': $columnType = 'smallint'; break; default: break; } return array_search($columnType, $this->_ddlColumnTypes); }</pre><p>结论:</p><p>因此,这样您就可以在Magento 2中重新索引时摆脱无效的列数据类型。此外,如果您遇到诸如“索引被另一个重新索引进程锁定”之类的错误。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2的目录价格规则表单中添加自定义字段的步骤:</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"><?xml version="1.0"?> <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd"> <table name="catalogrule"> <column xsi:type="varchar" name="custom_field" nullable="false" length="255" comment="Custom Field Catalog Price Rule" /> </table> </schema></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"><?xml version="1.0" encoding="UTF-8"?> <form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <fieldset name="rule_information" sortOrder="10"> <field name="custom_field" formElement="input"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="source" xsi:type="string">sales_rule</item> </item> </argument> <settings> <validation> <rule name="required-entry" xsi:type="boolean">false</rule> </validation> <dataType>text</dataType> <label translate="true">Custom Field</label> <visible>true</visible> <dataScope>custom_field</dataScope> </settings> </field> </fieldset> </form></pre><p>结论:</p><p>因此,通过这种方式,您可以将任何自定义字段添加到Magento 2中的目录价格规则窗体中。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中使用观察器从任何页面中删除块的步骤</p><p>第 1 步:我们需要 在扩展中以以下路径创建一个“events.xml”文件</p><p>app\code\Vendor\Extension\etc\</p><p>然后添加代码,如下所示</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="layout_generate_blocks_after"> <observer name="removeblock" instance="Vendor\Extension\Observer\Removeblock" shared="false" /> </event> </config></pre><p>第2步: 之后,我们需要在扩展名中在以下路径中创建一个“Removeblock.php”文件。</p><p>app\code\Vendor\Extension\Observer\</p><p>现在,附加以下代码</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Observer; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; class Removeblock implements \Magento\Framework\Event\ObserverInterface { public function execute(\Magento\Framework\Event\Observer $observer) { $layout = $observer->getLayout(); $your_condition = 1; // write your conditional logic here if($your_condition == 1) { // you need to modifed block name as per your requirement. $layout->unsetElement('customer-account-navigation-orders-link'); } } }</pre><p>结论:</p><p>通过这种方式,您可以使用Magento 2中的观察器轻松地从任何页面中删除块。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中显示复杂错误和成功消息的步骤:</p><p>步骤1:转到以下路径</p><p>app\code\Vendor\Extension\etc\frontend\di.xml</p><p>并添加以下代码</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Framework\View\Element\Message\MessageConfigurationsPool"> <arguments> <argument name="configurationsMap" xsi:type="array"> <item name="addCustomMessage" xsi:type="array"> <item name="renderer" xsi:type="const">\Magento\Framework\View\Element\Message\Renderer\BlockRenderer::CODE</item> <item name="data" xsi:type="array"> <item name="template" xsi:type="string">Vendor_Extension::messages/addCustomMessage.phtml</item> </item> </item> </item> </argument> </arguments> </type> </config></pre><p>步骤 2:然后移动到以下路径</p><p>app\code\Vendor\Extension\view\frontend\templates\messages\addCustomMessage.phtml</p><p>并添加代码如下</p><pre class="brush:bash;toolbar:false"><?= $block->escapeHtml(__( 'Please <a href="%1">click here</a> to redirect to your account.', $block->getData('url') ), ['a']); ?></pre><p>步骤 3:在控制器操作中添加复杂的成功或错误消息。</p><p><br/></p><pre class="brush:bash;toolbar:false">//Error Message $this->messageManager->addComplexErrorMessage( 'addCustomMessage', [ 'url' => ‘YOUR_URL’, ] ); //Success Message $this->messageManager->addComplexSuccessMessage( 'addCustomMessage', [ 'url' => ‘YOUR_URL’, ] );</pre><p>结论:</p><p>因此,您可以在Magento 2中轻松添加自定义错误和成功消息。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中编码和解码URL的步骤:</p><p>步骤1:您需要插入\Magento\Framework\Url\EncoderInterface类来编码URL,并插入\Magento\Framework\Url\DecoderInterface类来解码URL。这两个类都必须插入到构造中。我将此代码添加到自定义模块的块文件中。</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Block; use Magento\Framework\Url\EncoderInterface; use Magento\Framework\Url\DecoderInterface; class CustomBlock extends \Magento\Framework\View\Element\Template { /** * @var EncoderInterface */ protected $url_Encode; /** * @var DecoderInterface */ protected $url_Decode; /** * @param EncoderInterface $url_Encode * @param DecoderInterface $url_Decode */ public function __construct( EncoderInterface $url_Encode, DecoderInterface $url_Decode) { $this->urlEncode = $url_Encode; $this->urlDecode = $url_Decode; } public function getEncodeUrl($url) { /** * $url = baseurl/mymodule/index * Output : pLzEyNy4wLjAuMS9tMjM0L2hlbGxvd29, */ return $this->urlEncode->encode($url); } public function getDecodeUrl($url) { /** * $url :pLzEyNy4wLjAuMS9tMjM0L2hlbGxvd29, * Output = baseurl/mymodule/index */ return $this->urlDecode->decode($url); } }</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>
<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"><?php namespace Vendor\Extension\Helper; class Data extends \Magento\Framework\App\Helper\AbstractHelper { protected $_productobj; protected $_stockRegistry; public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Catalog\Model\Product $productobj, \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry, ) { $this->_productobj = $productobj; $this->_stockRegistry = $stockRegistry; parent::__construct($context); } public function updateProductStock($productId,$stockData) { $product=$this->_productobj->load($productId); $stockItem=$this->_stockRegistry->getStockItem($productId); $stockItem->setData('is_in_stock',$stockData['is_in_stock']); $stockItem->setData('qty',$stockData['qty']); $stockItem->setData('manage_stock',$stockData['manage_stock']); $stockItem->setData('use_config_notify_stock_qty',1); $stockItem->save(); $product->save(); } }</pre><p>步骤 2:定义帮助程序类并根据您的要求使用它。您需要将产品 ID 作为第一个参数传递,并将数组中的库存数据作为第二个参数传递。下面是一个股票数据数组的示例。</p><p>$<span style="color: #569cd6;">stockData</span> = array(<span style="color: #ce9178;">'is_in_stock'</span>=>1,<span style="color: #ce9178;">'qty'</span>=> 5, <span style="color: #ce9178;">'manage_stock'</span>=> 1)<span style="color: #6a9955;">;</span></p><p>结论:</p><p>就是这样!使用上述方法,您可以轻松地在Magento 2中以编程方式更新产品库存。管理员可以通过获取缺货产品列表并通过缺货通知模块在产品重新入库时通知客户,从而轻松管理缺货产品。</p><p><br/></p>
<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>在Magento 2中设置动态电子邮件主题的步骤:</p><p>步骤 1:在以下路径创建电子邮件模板配置文件</p><p>app\code\Vendor\Extension\etc\email_templates.xml</p><p>然后添加以下代码</p><pre class="brush:bash;toolbar:false"><?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd"> <template id="your_email_template_id" label="Label of your template file" file="email_file.html" type="html" module="Vendor_Extension" area="frontend"/> </config></pre><p>步骤2:现在在以下路径创建电子邮件模板文件</p><p>app\code\Vendor\Extension\view\frontend\email\email_file.html</p><p>现在添加以下代码片段</p><pre class="brush:bash;toolbar:false"><!--@subject {{var subject|raw }}@--> <!--@vars {"var customerName":"Customer Name", "var customerEmail":"Customer Email", "var customerComment":"Comment"} @--> <body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;"> <div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;"> <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%"> <tr> <td align="center" valign="top" style="padding:20px 0 20px 0"> <table bgcolor="FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;"> <tr> <td valign="top" colspan="5"> <h1 style="font-size:22px; font-weight:normal; line-height:22px; margin:0 0 11px 0;">Hello Admin,</h1> </td> </tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">You Have Received New Query As Bellow.<p> </td> </tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">Customer Name : <strong>{{var customerName}}</strong></td> </tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">Customer Email : <strong>{{var customerEmail}}</strong></td> </tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">Customer Comment : <strong>{{var customerComment}}</strong></td> </tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9; text-align:center;"><strong>Thank you.</strong></td> </tr> </table> </td> </tr> </table> </div> </body></pre><p>步骤3:现在模板已准备就绪,我们将编写发送邮件的代码。</p><p>转到控制器文件</p><p>app\code\Vendor\Extension\Controller\Index\Index.php</p><p>添加下面提到的代码</p><pre class="brush:bash;toolbar:false"><?php namespace Vendor\Extension\Controller\Index; use Magento\Framework\App\Action\Context; use Magento\Store\Model\StoreManagerInterface; use Magento\Framework\Mail\Template\TransportBuilder; use Magento\Framework\Translate\Inline\StateInterface; class Index extends \Magento\Framework\App\Action\Action { protected $transportBuilder; protected $storeManager; protected $inlineTranslation; protected $state; public function __construct( Context $context, StoreManagerInterface $storeManager, TransportBuilder $transportBuilder, StateInterface $state) { $this->transportBuilder = $transportBuilder; $this->storeManager = $storeManager; $this->inlineTranslation = $state; parent::__construct($context); } public function execute() { $templateId = 'your_email_template_id'; // template id $fromEmail = 'admin@gmail.com'; // sender Email id $toEmail = 'test.magecomp@gmail.com'; // receiver email id $subject = 'your_dynamic_subject'; // Dynamic subject try { // template variables pass here $templateVars = [ 'subject' => $subject, 'customerName' => 'Test', 'customerEmail' => 'Magecomp', 'customerComment' => 'Test Comment' ]; $storeId = $this->storeManager->getStore()->getId(); $this->inlineTranslation->suspend(); $storeScope = \Magento\Store\Model\ScopeInterface::SCOPE_STORE; $templateOptions = [ 'area' => \Magento\Framework\App\Area::AREA_FRONTEND, 'store' => $storeId ]; $transport = $this->transportBuilder->setTemplateIdentifier($templateId, $storeScope) ->setTemplateOptions($templateOptions) ->setTemplateVars($templateVars) ->setFrom($fromEmail) ->addTo($toEmail) ->getTransport(); $transport->sendMessage(); $this->inlineTranslation->resume(); $this->messageManager->addSuccessMessage(__('Your Email Sent successfully')); $this->_redirect('*/*/'); } catch (\Exception $e) { $this->inlineTranslation->resume(); $this->messageManager->addErrorMessage(__('We can\'t process your request' . $e->getMessage())); $this->_redirect('*/*/'); } } }</pre><p>结论:</p><p>这样,您可以在Magento 2中设置动态电子邮件主题,并提高电子邮件营销活动的打开率。</p><p><br/></p>