Magento

Magento电子商务平台用户的问答

2
在Magento 2中更新主题父级的正确方法
在Magento 2中,您可以在主题theme.xml文件中指定父主题。 <theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Config/etc/theme.xsd"> <title>Theme Title</title> <parent>Package/base-theme</parent> <media> <preview_image>media/preview.jpg</preview_image> </media> </theme> Magento第一次看到主题时,它将使用此值parent_id在theme表中设置a 。这是主题父级所在位置的真相来源。 但是,如果您在将主题添加到系统后尝试更改此值,则Magento无法更新该parent_id列,并且实例化的Magento\Theme\Model\Theme对象仍将具有原始父主题。(即使您清除了缓存。) 我可以通过手动更改parent_id值来解决此问题-好像是hack。parent_idMagento的核心代码通常在哪里设置,哪些用户操作会触发此操作?即有没有办法告诉Magento“请重新加载这个主题”

1
如何在Magento 2中调试布局文件处理?
根据有关布局文件处理的magento 2主题规范: Magento应用程序按以下顺序处理布局文件: 1 /从模块收集所有布局文件。该顺序由来自app / etc / config.php的模块列表中的模块顺序确定。 2. /确定继承主题[,...,]的顺序 3. /从上一个祖先到当前迭代一个主题序列: 一种。将所有扩展主题布局文件添加到列表中。 b。替换列表中被覆盖的布局文件。 4. /合并列表中的所有布局文件。 如何为该过程的每个步骤调试和查看布局文件?

1
Magento后端404,适用于除两个“网站”配置范围以外的所有范围
在我们的Multisitesite / Multistore(view)Magento 1.9.2.2配置中,必须删除其中一个网站,包括store和storeview。 尽管删除本身进行得很好(我之前已经做过),但如果您将“当前配置范围”更改为除两个网站以外的任何网站,我都会得到一个404的后端。 选择一个新的配置范围会导致请求以下URL(更改了管理路径+密钥): /index.php/mymageadmin/system_config/edit/section/dev/website/<WEBSITE>/key/1221231/ 其中<WEBSITE>等于表中的code字段core_website。 使用mysql查询登录后,我看到可以成功加载的两个网站在选择网站/商店视图方面具有以下查询: SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '4') AND (`path` LIKE 'dev/%') SELECT `core_website`.* FROM `core_website` WHERE (`core_website`.`code`='working_store_code') 其他提供404的网站以相同的第一个查询开始-但是当然有不同的scope_id,但是在第二个查询中,Magento认为它必须寻找一个范围storeview而不是website!它实际上似乎尝试了两次。 SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '3') AND (`path` …


5
Magento2:修改CSS文件的最佳做法
我想修改css文件pub/static/frontend/Magento/luma/en_US/css/styles-l.css。 最初,此文件不存在于pub / static文件夹中,并且存在于 vendor/magento/theme-frontend-blank/web/css/styles-l.less (it's styles-l.less) 当我使用来分配静态内容时php bin/magento setup:static-content:deploy,会在pub / static中创建与之相关的2个文件。 1. pub/static/frontend/Magento/luma/en_US/css/styles-l.less 2. pub/static/frontend/Magento/luma/en_US/css/styles-l.css 我是一名支持开发人员,在开发模块时,我倾向于删除pub / static中存在的任何内容(.htaccess除外)。所以对我来说,直接修改似乎不是最好的选择pub/static/frontend/Magento/luma/en_US/css/styles-l.css。 在这种情况下,修改上述CSS文件的最佳做法是什么? 1.我应该修改pub/static/frontend/Magento/luma/en_US/css/styles-l.less还是 2.我的理解是错误的,因为我可以删除pub/static(在开发过程中)所有内容,因此我应该修改pub/static/frontend/Magento/luma/en_US/css/styles-l.css而不是删除它。


3
Magento 2:同步后端和前端状态/缓存
Magento 2是否有任何系统或抽象来管理后端和前端上的本地存储之间的状态? 我正在尝试通过重定向URL移植用于恢复用户废弃的购物车的功能。以简化形式,URL类似 http://magento.example.com/restore/the/cart?identifier=sdkfjh48v237g5 会根据标识符中的编码quote_id将报价加载到当前用户的购物车中。 在Magento 1中,这相对简单-您只需要使用正确的报价ID更新用户的Checkout会话信息。但是,Magento 2加剧了本地存储的不足。 Magento 2前端javascript应用程序似乎在浏览器的本地存储数据库中缓存信息。这包括有关建造迷你车的信息。这意味着即使最终用户程序员(me)设法在后端更改会话Session ID,微型购物车仍会显示旧的购物车数据。 这只是一个问题的一个示例,该问题源于不了解(或拥有一个)用于管理后端和前端的应用程序状态的API。对于我的特定问题,我的端点渲染了一个包含一些JavaScript的HTML页面,手动清除了本地存储,然后将用户重定向到另一个页面-但这感觉像是一桩骇人的hack。 Magento 2中是否有API用于管理前端和后端之间的数据? 有一种向整个系统发出信号的标准方法,即在后端处理期间,您做了某些事情使得有必要使前端本地存储缓存无效? 有没有一种技术可以将新的RequireJS模块注入到自动运行的页面中,并且可以在其他JavaScript应用程序访问它之前操纵本地存储?

2
Magento 2:不命名插件类`\ Plugin`的后果
在Magento 2中使用未以结尾的插件类会产生任何后果\Plugin吗?该文档表明,这一类应该在名称结尾\Plugin。 插件的类的名称或其虚拟类型。指定此元素时,请使用以下架构:\ Plugin。 但是,有一些不遵循此规则的代码插件。 <!-- #File: app/code/Magento/Weee/etc/frontend/di.xml--> <plugin name="weee-app-action-dispatchController-context-plugin" type="Magento\Weee\Model\App\Action\ContextPlugin"/> 不使用\Plugin您的班级名称会有任何程序上的后果吗?还是仅仅是一个惯例-类似于Magento 1的_Observer类名惯例?
14 magento2  plugin 

2
如何保持.phtml文件的简洁和整洁?
正如其文件扩展名所示,该.phtml文件允许PHP代码与HTML混合。然而,事实上,你可以不应该被看作是一个执照去野外。 为什么我们仍然看到如此多的.phtml文件到处都是PHP?什么是减少.phtml文件中PHP数量的好方法?
14 php  blocks  template  phtml 

1
以编程方式创建发票时给客户发送电子邮件
以编程方式创建发票时,如何使系统通过电子邮件将发票发送给客户? $order=Mage::getModel('sales/order')->load($orderid); $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice(); if (!$invoice->getTotalQty()) { Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.')); } $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE); $invoice->register(); $transactionSave = Mage::getModel('core/resource_transaction') ->addObject($invoice) ->addObject($invoice->getOrder()); $transactionSave->save();

2
“前端控制器达到100个路由器匹配迭代”错误的原因是什么?
作为一个Magento开发人员,我已经无数次面对这个问题,我知道这是一个配置错误问题,当某些模块未加载,它们的路由器也未加载而导致该错误时。大多数情况下,它不执行任何操作即可解决,其他时候,您可以刷新缓存 我已经阅读了许多有关此的文章,试图调试在Magento核心Front控制器中放置一些额外的代码app/code/core/Mage/Core/Controller/Varien/Front.php,但是最后这仅显示缺少的模块路由器,而不是为什么未加载它们。每次发生这种情况时,我都会尝试查看哪些URL给出了错误,但这是无用的信息,与代码跟踪相同。总是一样 也许是由于模块冲突引起的?也许是cron任务做错了什么?也许在旧的Magento版本中有一些错误的代码?问题是从1.7版本开始不会发生此问题(或者如果发生,则完全是零星的)。我发现主流中有一些代码差异,例如 Mage::register('application_params', $params); 在的run()方法中app/code/core/Mage/Core/Model/App.php,或 $this->_shouldSkipProcessModulesUpdates() 签入_initModules()方法... 我想相信应该有明确找到原因的人。有小费吗?

1
如何在Magento EE 1.12中使用数据库作为slow_backend而不是文件?
在Magento EE 1.12.0.0中,无论我对什么配置进行更改,似乎都将app/etc/local.xml继续使用默认文件缓存(通过var/cache/始终填充来证明)。 期望 Memcached用作fast_backend。 数据库用作slow_backend。 根本不使用文件缓存(即var/cache/应始终为空)。 实际产量 Memcached用作fast_backend。 根本不使用数据库。 正在使用文件缓存。 测试程序 将配置更改为app/etc/local.xml。 重新启动Memcached和Apache(出于很好的考虑,它在我的本地dev框中,所以我也可以)。 清除文件缓存(rm -rf var/cache/*)。 刷新首页。 检查文件缓存的内容(ls var/cache)。 感到难过,并通过其他配置更改返回到#1。 配置 我的内容app/etc/local.xml如下: <config> <global> <install> <date><![CDATA[{{actual_data}}]]></date> </install> <crypt> <key><![CDATA[{{actual_data}}]]></key> </crypt> <disable_local_modules>false</disable_local_modules> <resources> <db> <table_prefix><![CDATA[]]></table_prefix> </db> <default_setup> <connection> <host><![CDATA[{{actual_data}}]]></host> <username><![CDATA[{{actual_data}}]]></username> <password><![CDATA[{{actual_data}}]]></password> <dbname><![CDATA[{{actual_data}}]]></dbname> <initStatements><![CDATA[SET NAMES utf8]]></initStatements> <model><![CDATA[mysql4]]></model> <type><![CDATA[pdo_mysql]]></type> <pdoType><![CDATA[]]></pdoType> <active>1</active> </connection> …




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.