Questions tagged «magento-enterprise»

这应该用来表示专门针对在Magento Enterprise Edition平台上运行的网站的问题。它们不必是EE特有的功能。

6
补丁或核心破解
当我在系统升级项目中时,我要做的一件事情就是将客户端系统与全新的Magento安装进行比较。我正在寻找不属于标准Magento的核心hack或其他文件,以确保我能捕捉到以前的自由职业者,承包商,顾问或代理商所做的任何杂物,但对业务至关重要的工作。 补丁总是让我感到困扰的一件事。多年来,Magento发行了“版本间”补丁,通常是为了解决安全问题或更改运输/付款供应商的API。 问题是,从差异的角度来看,补丁与核心黑客是无法区分的,尤其是当您不知道已将哪些补丁(如果有)应用于系统时。 这导致了我的问题。 您如何区分核心hack和补丁?

2
为什么全页缓存禁用块缓存?
我有一个静态部分,该部分包含在每个页面(导航)中,但是生成时间很长。这就是为什么我设置了缓存生存期和静态缓存密钥的原因。 正常工作,直到启用FPC。然后,仍然为新调用的页面再次生成该块,并且不从块缓存中提供该块。 在这行Enterprise_PageCache_Model_Observer: Mage::app() ->getCacheInstance() ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache 这是什么原因呢?对我来说,即使FPC处于打开状态,也仍然可以缓存某些块-因为否则,缓存无法完全提供的页面生成速度会减慢。 其背后的设计决定是什么? 围绕它有什么好的解决方案? 如果我仅删除此块缓存禁令会有害吗?

1
幻影导航装饰器撞击Magento的EE缓存的奇怪情况
准备好一个奇怪的。因此,我正在自定义主要目录导航,以构建一个全状态的UI行为,该行为处理跨设备的多个交互模型(菜单,下拉菜单,模式等)。像你所做地。 这意味着要覆盖此类/方法: app/code/core/Mage/Page/Block/Html/Topmenu.php :: _getHtml() 要产生这样的HTML输出(有些简化): <ul class="nav-list"> <li class="nav-1"> <a data-ui-action="nav-1" href="#">Bazzow</a> <div class="menu"> ... </div> </li> <li class="nav-2"> <a data-ui-action="nav-2" href="#">Bazinga</a> <div class="menu"> ... </div> </li> </ul> 现在,除了data-ui-action属性之外,这非常无聊/标准。那就是JS魔术发生的地方。对具有该属性的元素的任何单击都会更新UI状态。您猜对了,li.nav-X该类(Magento添加)充当了将UI状态绑定到激活元素的钩子。 一切都好吧?打开EE缓存。好吧?错误。 如果您正在查看的页面在Bazinga(aka nav-2)的目录层次结构内,那么突然您将看到以下内容: data-ui-action="nav-2 active" 谁添加了讨厌的active字符串?幻影是谁。 现在,您的UI状态失败,因为数据属性的值不再与<li>该类匹配。寻找幻影。 狩猎 首先,您检查在EE高速缓存下$child->getPositionClass()输出的变量nav-2实际上没有附加其他(大概)类值。它不是。 您检查了Magento的许多装饰器JS脚本之一是否未在导航列表中执行。不是。 也许这实际上是一件奇怪的事情/js/varien/menu.js。但是您已经像往常一样排除了那些核心脚本。 也许这是一些疯狂的内联JS,您永远不会知道模块会从PHP类中渲染出来。在页面源中搜索标记active内<script>。你什么也没找到。 也许这是其他一些疯狂的JS Magento所需要的,但是从外部加载。您在浏览器中禁用了JS,但是幻影仍然存在。 您回到Topmenu.php班级并删除data属性。问题停止了。我勒个去。 您想知道同一元素上的另一个属性是否未正确用引号引起来(嘿,很多类附加在其中发生)。因此,您交换属性的顺序并以各种组合将其删除。没有骰子。如果存在data属性,则幻像也存在。 您想知道不是该 PHP类在做事吗?有一个已调度的page_block_html_topmenu_gethtml_after事件,其他事件可能会用它来破坏标记。没有。 什么。是的。发生了。这里。 答案 …


1
消息块未使用主题模板
我正在尝试更改message块的phtml文件。我发现基本主题template/core/messages.phtml并将其复制到我的主题中并进行了更改。我的更改未显示,因此我尝试修改基本文件中的源,但更改仍未应用。 该模板文件在哪里或如何覆盖?


1
Magento 2 EE 2.1中的消息队列配置更改
我一直在查看EE消息队列功能,但似乎还不完整。 在2.1之前的版本中,有一个合理的功能实现,允许您etc/queue.xml按照官方文档中的说明创建一个来定义发布者,主题,使用者和队列:http : //devdocs.magento.com/guides/v2.0/config-guide /mq/config-mq.html。 存在一些限制,例如除非它们与配置中定义的主题匹配,否则无法创建绑定,这限制了灵活性,因为您必须预先定义所有可能的主题。缺少重复的安装脚本也意味着您必须进行一些改动才能使安装程序脚本再次运行。 随着2.1的发布者,话题,消费者和绑定的元素etc/queue.xml已过时且配置之间的分裂etc/queue.xml和etc/communication.xml,因为在这里可以看到:https://github.com/magento/magento2-samples/blob/master/sample- module-sample-message-queue / etc /。仍然可以单独使用已弃用的发布者/主题/消费者/绑定架构,但不能与经修订的代理/队列架构结合使用。 但是,这些都没有出现在官方文档中,并且尚不清楚为什么配置被拆分并且在某些情况下需要重复。更重要的是,现在似乎没有定义绑定的工具,而是使用主题名称作为路由键。反过来,这也使得不可能使用特殊字符来绑定队列。因此,它似乎已经过重构,但功能已丢失。 令人欣慰的是,该magento/module-amqp模块现在使用循环安装程序脚本,因此在运行时会安装队列配置更改magento setup:upgrade。但是,此更改尚未应用于magento/module-mysql-mq模块。 因此,我想知道:a)我是否全部弄错了,实际上有创建绑定的方法,它比看起来更灵活?b)为什么要拆分配置? 附带说明一下,在进行此实验时,我一直在使用RabbitMQ教程中的拓扑示例之一,网址为https://www.rabbitmq.com/tutorials/tutorial-four-php.html: 此不推荐使用的配置在很大程度上实现了拓扑: queue.xml: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/queue.xsd"> <topic name="quick.orange.rabbit" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" /> <topic name="quick.orange.fox" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" /> <topic name="lazy.pink.rabbit" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" /> <topic name="lazy.orange.elephant" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" /> <topic name="lazy.brown.fox" schema="Example\MessageQueue\Api\MessageInterface" publisher="default" /> <consumer name="consumerOne" …



2
将订单转换为报价并加载到当前购物车
我可以成功地将订单转换为报价,但仍然无法将其加载到当前购物车中。我尝试了几种方法,但无济于事。这是最简单的一个: $_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save(); $_quote = Mage::getModel('sales/quote')->load($_quote->getId()); $_quote->setIsActive(true)->save(); 我能够获取报价ID,但报价对象未加载到当前购物车中。 我也试过 $_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save(); $_quote = Mage::getModel('sales/quote')->load($_quote->getId()); if ($_checkoutQuote->getId() != $_quote->getId() && $_quote->getId()) { $_checkoutQuote->merge($_quote)->save(); Mage::getModel('checkout/session') ->setQuote($_checkoutQuote) ->init(); Mage::getSingleton('checkout/session')->getQuote()->setIsActive(true)->save(); } 和类似的方法,但仍未加载报价。非常感谢你!



1
如何在Magento中将数据库更改从开发部署到生产
我知道模块具有安装和数据设置脚本,以使DB从开发人员到生产人员都可以移植。 但是在我们的案例中,我们有UI开发人员,他们通过管理界面添加属性和产品,该界面被存储在开发数据库中。 发布之日,我们将无法重复在开发环境中所做的所有步骤,因为这将非常繁琐且耗时。 部署时是否有办法处理此类数据库更改。 现在,我们正在开发数据库和产品数据库之间进行比较,并生成一个SQL,该SQL将在发布日运行。但这没有什么危险,因为开发数据库可能包含测试事务数据,并且如果我们的SQL有任何修改事务表的语句,则最终可以将事务表锁定在生产中。 有这方面的最佳实践吗?我在这里先向您的帮助表示感谢

1
Magento Enterprise-持续的Redis连接错误
Enterprise 1.14.1.0,nginx,php-fpm,solr,redis(2个实例-一个用于fpc,另一个用于其他所有功能) 我们完全处于机智的境地-我们已经对似乎合理的每个配置设置进行了调整,而且这一问题每天都持续存在。任何想法将不胜感激。 我们的网站经历了Redis锁定并倾销此类错误的情况,持续了几分钟,然后一切恢复正常。 a:4:{i:0;s:24:"read error on connection";i:1;s:1196:"#0 /var/www/magento/lib/Credis/Client.php(440): Credis_Client->__call('select', Array) #1 /var/www/magento/lib/Cm/Cache/Backend/Redis.php(117): Credis_Client->select(0) #2 /var/www/magento/lib/Zend/Cache.php(153): Cm_Cache_Backend_Redis->__construct(Array) #3 /var/www/magento/lib/Zend/Cache.php(94): Zend_Cache::_makeBackend('Cm_Cache_Backen...', Array, true, true) #4 /var/www/magento/app/code/local/Extendware/EWCacheBackend/Model/Override/Mage/Core/Cache.php(25): Zend_Cache::factory() #5 /var/www/magento/app/code/core/Mage/Core/Model/Config.php(1348): ExtendwareInternal_EWCacheBackend_Model_Override_Mage_Core_Cache->__construct(Array) #6 /var/www/magento/app/Mage.php(463): Mage_Core_Model_Config->getModelInstance('core/cache', Array) #7 /var/www/magento/app/code/core/Mage/Core/Model/App.php(401): Mage::getModel('core/cache', Array) #8 /var/www/magento/app/code/core/Mage/Core/Model/App.php(295): Mage_Core_Model_App->_initCache(Array) #9 /var/www/magento/app/code/core/Mage/Core/Model/App.php(337): Mage_Core_Model_App->baseInit(Array) #10 /var/www/magento/app/Mage.php(684): Mage_Core_Model_App->run(Array) #11 /var/www/magento/index.php(87): Mage::run('default', 'store') …

2
设置自定义订单状态以完成贝宝网站付款标准付款吗?
我们将Magento EE 1.13.0.2与PayPal网站付款标准付款方式一起使用。不幸的是,无法在后端为PayPal付费订单设置订单状态。 当订单已成功付款(而非部分付款)时,我们需要设置自定义订单状态。修改PayPal订单状态的教程似乎已经过时,错误或丑陋。 根据我的收集: 付款更新将由PayPal IPN处理。 有一种方法Mage_Paypal_Model_Ipn::_registerPaymentCapture()负责“处理完成的付款(全部或部分)”。 在Mage_Paypal_Model_Ipn::_registerTransaction()对PayPal的请求中进行分析,并将付款状态与进行比较Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED。 老实说,我不确定如何处理此信息。我可能会重写Mage_Paypal_Model_Ipn::_registerTransaction()并只添加我的代码: // paid case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED: $this->_registerPaymentCapture(true); // my code here break; 当然,事件观察者(例如订单或订单状态事件之一)会好得多,但是我不确定在通过PayPal完全支付订单时是否存在100%可靠的方式来捕获一次事件。 有任何想法吗? 更新资料 我们选择修改订单状态流程,而无需再修改状态。如果有人想回答这个问题,我将开放一段时间。

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.