Magento

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

6
如何在magento 2 Beta中在前端显示会话消息
我想在magento 2模块中显示错误或成功消息。我用类名扩展了前端控制器\Magento\Framework\App\Action\Action。然后我使用以下代码将客户端重定向到主页 $this->messageManager->addError($SomeMessage); $resultRedirect = $this->resultRedirectFactory->create(); $resultRedirect->setPath($base_path); 一切正常,但此行从不打印错误 $this->messageManager->addError($SomeMessage);

2
getConfig函数的运行时间
我测量了页面的运行时间,并注意到函数getBaseCurrencyCode()花费了一秒钟来运行。我所有的缓存均已启用。 我检查了功能,并看到以下命令: $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE) 需要一秒钟。 但是当我使用 Mage::getConfig()->getNode(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); 它需要毫秒 谁能告诉我为什么会发生这种时差? 有什么建议吗? 尽管我已经尝试过为您提供的建议解决方案,但是仍然存在巨大的时间空白。如果您可以尝试测量运行getConfig函数并将其发布到此处所需的时间,我将非常高兴。 我尝试通过用microtime函数包装此代码来测量此函数花费的时间 即在本地路径上:app\code\core\Mage\Core\Model 代替此行: $configValue = $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); 我将其替换为以下代码(与microtime相同的代码): $start = microtime(true); $configValue = $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); $time_elapsed_secs = microtime(true) - $start; echo "function: getConfig() took me: " . $time_elapsed_secs . " sec<br />"; die; 我的输出是: function: getConfig() took me: 1.1326711177826 sec 我很高兴看到您的输出和运行时。

1
安全提醒功能不断涌现……(SUPEE-5344&SUPEE-1533)
我有几个Magento装置,我代表客户进行管理。我们已经修复了漏洞,但警告不断出现。我们刚刚在所有站点上收到了第三条警告。 我们部署了两个不同的版本:1.7.0.2和1.9.1.0。 当我修补1.9版本时,我得到了一些警告,但是我通过对照实际代码检查sh文件中的“ diff”来验证是否已应用补丁。另外,由于1.9.1.0中已经进行了更改,因此我无法应用SUPEE-1533补丁。我在其他地方发现该补丁仅适用于1.9.0.1。我的/app/etc/applied.patches.list中只有SUPEE-5344数字 在1.7.0.2上,这是另一个问题。我确实设法同时应用了两个补丁,但是SUPEE-5344却被称为SUPEE-5345。 警告不断涌现,客户抱怨他们。看来我们没有应用安全补丁,而确实如此。 另外:补丁的命名有点..很不幸。SUPEE-5344和SUPEE-5345以其企业版本命名:EE_1.12.0.2和EE_1.14.1.0,即使我下载了该修补程序的社区版本... 安装补丁时,我是否错过了某些事情?如果我在Applied.patches.list中具有正确的补丁程序名称,警告会停止出现吗?

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事件,其他事件可能会用它来破坏标记。没有。 什么。是的。发生了。这里。 答案 …

6
在Magento的页脚中加载js
<reference name="footer"> <action method="addItem"> <type>skin_js</type> <file>js/fabric/tool/controller_tool.js</file> </action> </reference> 我使用上面的代码将js加载到页脚中。但是Magento抛出错误 无效的方法Mage_Page_Block_Html_Footer :: addItem(Array([0] => skin_js [1] => js / fabric / tool / controller_tool.js)) 我需要在页脚中加载js。如何克服这个问题。


3
性能:在所有产品类型的产品列表list.phtml上添加库存库存水平
TL; DR,要求在类别产品列表页面上显示库存的库存水平,同时考虑到性能符合Magento框架的情况,同时减少查询/存储量。 在阅读Vinai Kopp关于预加载以实现可伸缩性的文章之后。 为了降低性能,在类别产品列表页面(list.phtml)上包含库存库存水平且没有额外的查询/负载的最佳方法是什么? 我知道一些方法: afterLoad()似乎可以很好地与media_gallery包含项一起使用,而无需其他查询,但是我没有成功实现与库存相同的方法。 $attributes = $_product->getTypeInstance(true)->getSetAttributes($_product); $media_gallery = $attributes['media_gallery']; $backend = $media_gallery->getBackend(); $backend->afterLoad($_product); 指示SQL以product_id例如键的方式与集合并行收集所需的数据。但是在框架中寻找更多的手段。 目前,我只是stock_item通过以下方式加载对象: $_product->load('stock_item')->getTotalQty(); 哪个可行,但我注意到添加了更多查询以获取集合中所有产品的库存总计。 ... __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) __EAV_LOAD_MODEL__ (Mage_Catalog_Model_Product, id: stock_item, attributes: NULL) ... 奇怪的是,这有效。魔术发生在Mage_Eav_Model_Entity_Abstract-> load($ object,$ entityId,$ attributes)中。如果$ attributes为空,它将调用loadAllAttribute($ object)。因此$ product-> load('blah')将加载所有缺少的属性,包括'media_gallery'– …

1
Magento SWF XSS漏洞-如何解决?
根据以下网址列出的SWF / Flash漏洞:http: //appcheck-ng.com/unpatched-vulnerabilites-in-magento-e-commerce-platform/ 我已验证的哪一个在Magento 1.9.1.0中仍然存在,解决此问题的最佳方法是什么?阻止或限制对这些SWF文件的访问是否存在任何问题?


4
require_once'app / Mage.php'的安全风险;在Magento的根
我的Magento根目录中有一个文件,require_once 'app/Mage.php';可让我访问Mage::getStoreConfig系统变量。 这会带来安全风险吗?我应该把它放在另一个文件夹中吗? 这是我的文件/twitter.php: <?php require_once 'app/Mage.php'; Mage::app(); $consumer_key = Mage::getStoreConfig("Social/twitterapi/consumer_key"); $consumer_secret = Mage::getStoreConfig("Social/twitterapi/consumer_secret"); $oauth_access_token = Mage::getStoreConfig("Social/twitterapi/access_token"); $oauth_access_token_secret = Mage::getStoreConfig("Social/twitterapi/access_token_secret");
12 security 

1
为什么Magento有股指?
我可能是目光短浅,但是当cataloginventory_stock_status和cataloginventory_stock_status_idx结构相同时,我找不到Magento具有股票指数的原因。 我可以在表级别找到的唯一区别是: 行数变化很小 cataloginventory_stock_status 在索引表上找不到3个外键约束。 我认为将会有一些与锁定有关的原因或某些可能影响结帐但无法找到原因的信息的特定过程。
12 stock  index 

6
Magento 1.9.1 cron_schedule永远不会被选择
我花了将近3天的时间,无法理解并使Magento Cron处理预定的任务。我正在运行Magento 1.9.1.0,最近发现订单电子邮件现在已排队,而不是立即发送。我了解必要性,但无法使系统选择队列。 这是我看到的Cronjob。 这是我的cronjob命令行。 这是在cron_schedule表中创建任务的方式。 由于记录是在cron_schedule表中创建的,因此我认为Cron每5分钟运行一次。如果我通过PhpMyAdmin手动删除这些记录,则记录会在一段时间后自动创建。 但是任务的状态仍然是“待处理”,永远不会完成。不知道我的配置中有什么问题还是我丢失了任何东西。有人可以帮助我如何使计划的任务按时运行。另外,为什么要为一个职务代码创建多个记录? 更新资料 我清理了整个表,然后cron创建了计划的作业。所有作业均处于待处理状态,即使等待超过60分钟也不会运行。Magento 1.9.1中出了点问题 更新11/02:今天,我对该过程进行了更多分析。 我如下编辑了cron.php echo 'iam before mdefault 1'; shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &"); echo 'iam before malways 1'; shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &"); echo 'i returned success'; 我编辑了Mage_Cron_Model_Observer类,如下所示 public function dispatch($observer) { …

2
如何为我的magento网站启用https
我正在使用magento 1.8版。 我已经安装了godaddy的ssl证书,并将基本安全网址指定为https://www.mydomain.com。我也选择了两个选项 Use secure urls in frontend和Use Secure urls in admin。 但是当我尝试使用https时,出现页面未找到错误。并且无法访问我的管理页面。我的网站运行正常。
12 magento-1.8  ssl 

2
如何使用modman在github中管理模块?
我正在尝试使用modman(https://github.com/colinmollenhour/modman)在github中管理我的扩展程序。 首先,我尝试将MagePsycho_Someext扩展名添加为演示。 到目前为止,我已经完成了以下步骤 /var/www/magento-dir/ -> My Magento Installation Dir /var/www/MagePsycho_Extensions/ --> Git Repository Dir cd /var/www/MagePsycho_Extensions/ git clone git@github.com:magepsycho/Someext.git touch modman git commit -am 'Modman file added' git push origin master cd /var/www/magento-dir/ modman init modman clone git@github.com:magepsycho/Someext.git 使用以下文件在/ var / www / magento-dir中开发了扩展名'MagePsycho_Someext' app / etc / modules / …
12 modman 

4
为什么要创建get.php和/或`core / file_storage_database`?
从1.5或1.6版本开始,Magento在根文件夹中有一个名为的文件get.php。使用该core/file_storage_data模型,该文件允许Magento系统所有者直接从数据库中的blob列提供其产品媒体文件,而无需在文件系统上放置映像文件。PHP处理文件发送 #File: get.php function sendFile($file) { if (file_exists($file) || is_readable($file)) { $transfer = new Varien_File_Transfer_Adapter_Http(); $transfer->send($file); exit; } } 这正在进入Magento历史领域,但是为什么开发了此功能?似乎-有点发疯。PHP并不是提供文件的最有效方法,MySQL的Blob存储具有不稳定的历史,甚至稳定的数据库Blob实现也很难在后面使用,而且据我Varien_File_Transfer_Adapter_Http所知这些文件的所有缓存头。 有谁知道为什么Magento开发此功能?它实际上完成了要解决的任何目标/问题吗?有人在用吗?

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.