Magento

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

1
Magento 2新的网格系统模板
我一直在Merchant beta 1.0.0版本上浏览新的Magento后端网格系统。 首先,我必须说我印象深刻。 现在,您可以选择要查看的列,可以对其进行重新排序,还可以根据不一定具有列的属性进行过滤。 但这并不重要。 我不了解网格的渲染方式。 通过启用模板路径提示,我看到例如产品网格是通过模板app/code/Magento/Ui/view/base/ui_component/templates/listing/default.xhtml和via块呈现的Magento\Ui\Component\Listing。 我编辑了模板,看到了一些我不理解的东西。 <!-- ko template: getTemplate() --><!-- /ko --> 如果删除此行(并清除缓存,如果启用的话),我将不再有网格。 有人可以解释这ko是什么以及它如何工作吗? 我还在其他模板中找到了这种标记。 app/code/Magento/Ui/view/base/web/templates/grid/controls/columns.html例如。 [更新] 我刚刚找到了一个简单的搜索(duh!),它ko指向以下内容:http : //knockoutjs.com/,但我仍然需要一些说明。

2
Magento2工厂模式相对于Magento 1的优势
Magento 2对非注射剂使用工厂类。 例如产品类别:ProductFactory 例如客户类别:CustomerFactory 我不明白这里的工厂模式是什么? 因为对于与1个工厂类关联的每个类。我在想它有些重复。 为什么我们不应该创建抽象工厂CustomerFactory,ProductFactory等等? 并且例如: 我们可以通过AbstractFactory进行类型检查,而不是ProductFactory在ProductRepository类的构造函数。 因此我们可以避免ProductRepository和之间的紧密耦合ProductFactory 抽象工厂类: namespace Magento\Framework\ObjectManager\Code\Generator; /** * Abstract Factory class */ abstract class AbstractFactory { /** * Object Manager instance * * @var \Magento\Framework\ObjectManagerInterface */ protected $_objectManager = null; /** * Instance name to create * * @var string */ protected $_instanceName …

1
DI和Magento 2上的扩展块
每当我尝试扩展不是\ Magento \ Framework \ View \ Element \ Template的块时,我似乎都难以理解带有块的Magento 2依赖项注入,但最终会出错。 我想创建一个扩展Magento \ Theme \ Block \ Html \ Header \ Logo的非常基本的块类的块 -一切正常,直到我尝试在construct方法中进行依赖注入: <?php namespace Creare\Test\Block\Header; class Logo extends \Magento\Theme\Block\Html\Header\Logo { protected $_creareHelper; public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Creare\Seo\Helper\Data $creareHelper, array $data = [] ) { $this->_creareHelper = $creareHelper; parent::__construct($context, …

3
Magento未将订单确认电子邮件发送给管理员
我无所适从。 今天早上,我配置了cron并根据Aoe_Scheduler的要求,每5分钟发送一次队列中的电子邮件。但是,我没有在我的电子邮件帐户上收到新的订单确认。我已三重检查是否已配置正确的确认地址,并将四重检查了垃圾邮件文件夹,但那里没有电子邮件。 我担心客户也没有收到任何电子邮件。有谁认识到这个问题?我跑了1.9.1(几分钟后又跑了1.9.2)。 编辑:在前端创建帐户或请求新密码确实发送了电子邮件。

2
修改Magento模板的正确方法/方法是什么?
请为我建议正确的方法,当用户单击按钮时,我想在弹出窗口中自定义“给朋友的电子邮件”页面(通过电子邮件发送此产品)。通过启用模板提示,我发现按钮呈现为 frontend / rwd / default / template / catalog / product / view / sharing.phtml 相应的布局文件是catalog.xml(在frontend / rwd / default / layout中) 因此,我local.xml在catalog.xml存在以下代码的同一文件夹中创建了一个文件夹(只是我给了test.phtml而不是sharing.phtml,只是为了“调试”) <?xml version="1.0"?> <layout version="0.1.0"> <default> <catalog-product-view> <reference name="content"> <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml"> <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/> </block> </reference> </catalog-product-view> </default> </layout> 但是什么也没发生,我的意思是我可以在不修改现有主题xml和phtml文件的情况下更改(覆盖)主题的默认设计吗?

5
Magento商店不安全
最近,我接管了Magento商店的管理。昨天,我们收到了一家IT公司发来的电子邮件,说我们的商店不安全。尽管我怀疑电子邮件的合法性,但它确实显示了商店中的最后订单,注册客户的数量和最后添加的产品。 自从我最近成为管理员以来,在实现之后,我不完全知道已采取了哪些安全措施。我肯定知道以下几件事: 管理面板有一个自定义路径 数据通过https发送 管理员密码是由随机的大小写字母组成的字符串 如果这封邮件是合法的,我该如何解决此问题?

4
EE 1.14.2中的CMS块缓存问题
我有一个问题似乎与CMS静态块的缓存有关。 我有一个cms页面,在该页面中,我正在渲染许多cms静态块。CMS页面内容的简化版本如下所示: <div class="cms-block-1">{{block type="cms/block" block_id="banner_home"}}</div> <div class="cms-block-2">{{block type="cms/block" block_id="promo_home_1_1"}}</div> <div class="cms-block-3">{{block type="cms/block" block_id="promo_home_1_2"}}</div> <div class="cms-block-4">{{block type="cms/block" block_id="promo_home_2_1"}}</div> <div class="cms-block-5">{{block type="cms/block" block_id="promo_home_2_2"}}</div> <div class="cms-block-6">{{block type="cms/block" block_id="promo_home_2_3"}}</div> <div class="cms-block-7">{{block type="cms/block" block_id="promo_home_3_1"}}</div> <div class="cms-block-8">{{block type="cms/block" block_id="promo_home_3_2"}}</div> 该页面将在清除块缓存后立即按预期加载,该页面如下所示: <div class="cms-block-1">banner content</div> <div class="cms-block-2">promo_home_1_1 content</div> <div class="cms-block-3">promo_home_1_2 content</div> <div class="cms-block-4">promo_home_2_1 content</div> <div class="cms-block-5">promo_home_2_2 content</div> …


1
使用Zend Framework的SQL模型时的SQL注入漏洞
连接表时,我使用Zend Framework的SQL模型。例如,我修改了我的实际代码,但我想您会明白的: $this->getSelect()->join( array('sections' => $sectionsTableName), 'main_table.banner_id = pages.banner_id', array() ) ->where("sections.section= '$section' OR sections.section = '0' OR (sections.section = '6' AND ? LIKE main_table.url)",$url) ->group('main_table.banner_id'); 该页面加载了ajax,并且$ section参数作为GET参数(www.example.com/controllerName/index/display/3?paremeter1=example&section=www.example2.com)发送。 如果有人执行以下操作,这就是问题所在: www.example.com/controllerName/index/display/3?paremeter1=example&url=(SELECT 3630 FROM(SELECT COUNT(*),CONCAT(0x7170786a71,(SELECT (ELT(3630=3630,1))),0x717a716b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) 这样,用户可以转储整个数据库。不会显示数据,但是SQL仍会执行转储,这可能导致sql重载。 问题: 防止这种情况的最佳方法是什么? 现在,我为以前的客户感到担忧。使用此代码是否可以采取更大的风险措施,例如延迟或更改表?我猜不是因为您不能在SELECT中放入除SELECT之外的任何其他语句,所以DELETE将产生sql语法错误。我对吗? 更新: 我的示例不是对SQL注入的正确说明,因为存在'符号围绕$ sections,因此将无法进行注入。无论如何,当期望整数值并且不过滤整数输入时,这都是可能的。见下面我的评论。


2
按“ updated_at”对购物车项目进行排序
这是我获取购物车物品的方式: $quote = Mage::getModel('checkout/cart')->getQuote(); $items=$quote->getAllitems(); 我想做这样的事情: $items->sortBy('updated_at','desc'); magento正确的方法是什么? 我很想做这样的事情: $productArray=array(); foreach($items as $item){ $product=$item->getProduct(); array_push($productArray,$product); } $productArray = $this->sortArray($productArray); protected sortArray($productArray){ ...sort by updated date; return $sortedArray } 但是,我需要创建一堆dateTime对象才能轻松比较这些值,这似乎在计算上有点麻烦。
15 product  cart  sorting  items 


4
以编程方式将具有不同属性的多个项目添加到购物车
我正在批量添加购物车系统。请注意:我希望它适用于具有自定义选项的简单产品->自定义选项如颜色(红色,绿色,蓝色)或尺寸(XL,M,S) 假设某人要订购以下物品: productA,red颜色qty12 ProductA,green颜色qty18 ProductB XL,数量3 Product C,数量10 因此,我想一次通过代码/以编程方式添加这4个项目。我怎样才能做到这一点?是否可以通过查询字符串或任何控制器或内置函数来实现?不必每次都看到一个查询或一个函数调用...

3
高效的集合调用,筛选和加载
现在,我正在重用foreach循环中嵌套的许多集合。是否可以将这些内容上移几级?目前,Im不得不一遍又一遍地重新加载具有51k +个实体的集合,这大大降低了运行速度。特别是kitinventory集合。 <?php class Codespace_Module_Helper_Item extends other_one{ function functionOne($collection){ ... $data = $collection->getData(); foreach($data as $item){ $this->_functionTwo($item); } ... } function _functionTwo($item){ $model = Mage::getModel('catalog/product'); $id = $model->getIdBySku($item['sku']); $inventoryStatus = Mage::getResourceSingleton('catalog/product')->getAttributeRawValue($id, 'product_inventory_status', 1); $invStatus = $model->getResource()->getAttribute('product_inventory_status')->getSource()->getOptionText($inventoryStatus); if ($invStatus && $id) { if ($invStatus !== 'Z') { $stockItem = Mage::getModel('cataloginventory/stock_item'); $stockItem->setData(array()); …

1
排除订单,总计总计小于0
我们的一位客户要求其订单输入人员能够提交订单总额为负的订单。该应用程序已经允许使用否定订单项,只要其余订单的总数为正即可正常工作。 Magento似乎非常努力地使总数不为负数。查看收集到的总数,Magento会应用一张礼品卡作为倒数。如果我禁用了礼品卡,那么它将应用商店信用(即使信用不存在)。我怀疑这只是一个怪癖(可能是鲱鱼)。 任何人都可以帮助确定Magento将0强制为最大总计的金额,以及我们如何去完成请求?我不想简单地强制设置总数,因为我希望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.