Questions tagged «magento-1»

有关Magento 1的一般问题(非次要版本)。您可以使用它来区分Magento 2,但是如果特定安装存在问题,请改用适当的magento-1.x标记。

4
Magento样板/空白/骨架/裸色主题开发主题
除了之外,还有人知道一个好的,干净的样板/空白/骨骼/裸主题(自己不确定合适的用词)base/default吗?并不是说它很糟糕,但是有时另一种可能更适合于特定主题的工作。这将相当于Magento。
12 magento-1  theme 

2
如何与翻译局处理翻译?
我想知道与翻译局实现翻译的最佳方法是什么。 基本上,我看到两种方法: 向他们发送CSV文件。 使他们可以访问Magento安装进行内联翻译。 可能发生的问题: CSV文件 许多代理机构更喜欢“专业”文件格式,例如.pot / .po(GetText)。 缺少要翻译的字符串的上下文。 并非在CSV文件(CMS块,CMS页等)中都能找到每个文本。 内联翻译 并非每个代理商都想学习如何使用Magento后端 很难再现可翻译文本的所有情况(例如,错误消息) 我希望翻译在可版本控制的文件中,而不是数据库中。(好的,您可以解决此问题,并将翻译从数据库提取到文件中。) 总而言之,这似乎很耗时且容易出错。我在这里错过明显的东西吗?

3
为自定义模型生成站点地图
我已经开发了一个定制模块,该模块列出了网站上的一系列人员。每个人都有自己的URL(一个定制的Magento控制器,它对Person模型进行基本的CRUD),我需要将这些公共URL馈入Google Sitemap XML文件中。 如果可以的话,我想使用Magento自己的站点地图生成程序和cron。 在Mage_Sitemap_Model_Observer已经拉在所有的网站地图记录sitemaps表,并一个接一个电话他们的generateXml()方法。 $collection = Mage::getModel('sitemap/sitemap')->getCollection(); /* @var $collection Mage_Sitemap_Model_Mysql4_Sitemap_Collection */ foreach ($collection as $sitemap) { /* @var $sitemap Mage_Sitemap_Model_Sitemap */ try { $sitemap->generateXml(); } catch (Exception $e) { $errors[] = $e->getMessage(); } } 我认为我需要在sitemaps表中添加新的Sitemap,然后将其调用以为我的自定义模型记录生成我的(单独的)XML文件。但是,我不知道如何告诉Magento使用我的扩展My_Module_Model_Sitemap而不是just Mage_Sitemap_Model_Sitemap,后者将只给我一个XML文件,列出所有与主站点地图相同的类别,产品和CMS页面。 该sitemaps表有一个sitemap_type列,但据我所知,在Magento代码库中从未引用过该列。 如何覆盖覆盖Mage_Sitemap_Model_Sitemap自有generateXml()方法的同时使用Magento的内置站点地图引擎?还是我必须为自己的目的构建替代站点地图系统?

3
如何在Magento 1中覆盖/重写块类?
注意:这是一个规范问题,旨在全面说明块重写的工作方式,并且可以用作更具体的“如何覆盖块X”或“为什么我的重写不起作用”问题的重复目标。 另请参阅:寻找有关Magento 1替代的规范问题 假设我必须在自定义模块中更改核心块类(更改方法或添加方法)。我该如何逐步进行?

1
选择要基于Magento版本通过Composer安装的文件
在安装者的模块中包含多个版本的代码,并让安装者根据要安装的Magento版本确定要部署的版本,将非常方便。 例如,对于Magento> 1.7,请使用system.xml,其中包括tooltip,嵌套group功能和其他现代功能,但对于较旧版本的Magento,请使用文件的精简版本,其中不包含那些(破坏性)声明。 这种方法也可以用于标准模块结构中的许多其他文件。 对于作曲家部署的选项map,modman或package.xml据我所知,没有一个是有关于目标系统的任何情报。该package.xml选项不太可能更改,但map可以... 在我看来,将有许多扩展程序开发人员将从这种降级方法中受益。有没有人找到解决方法?

2
Magento1:如何在新扩展的系统XML中设置依赖项
我想修改第三方扩展,并想用新扩展覆盖其功能。但是我主要担心的是,如果我的Magento文件夹中未启用或存在第3方扩展名怎么办?我想在system.xml或config.xml中使用ifconfig设置依赖关系,但是我不确定在扩展级别如何检查文件夹中是否存在扩展名。TIA。 编辑:感谢@Sander Mangel的依赖关系答案。现在让我更加清楚。 我可以使用app / etc / modules / MyNameSpace_MyModule.xml轻松设置依赖项,但是当我的第三方扩展名从系统中删除时,会生成错误报告,并且其显示的“模块“ MyNameSpace_MyModule”需要模块“ 3rdPartyExtension”并停止进一步执行,原因是生成了异常,但是如果我想进一步执行而不生成异常怎么办?如果不存在不停止magento的情况下不存在3rdpartyextension,那么MyExtension就不会生效。这就是为什么我要问有没有像我们对布局文件所做的那样的设施检查,在此处注意ifconfig。 <reference name="sales.order.print"> <action method="setTemplate" ifconfig="3rdparty/config"> <template>mytemplate.phtml</template> </action> </reference> 第二编辑:感谢Zyava。我做了我想要的,但是说如果我出于测试目的删除了我的第三方扩展,以查看会发生什么。.我如下创建了system.xml <config> <sections> <payment> <groups> <3rdparty extension translate="label" module="payment"> <label>3rd Party</label> <frontend_type>text</frontend_type> <sort_order>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <disallowedcustomergroups translate="label comment"> <label>Disallowed Customer Groups</label> <frontend_type>multiselect</frontend_type> <sort_order>120</sort_order> <source_model>adminhtml/system_config_source_customer_group</source_model> <config_path>mymodule/disallowed_customer_groups</config_path> <comment><![CDATA[Press control and …

3
找出产品所属的类别
我在后端打开了一个产品,但是当我切换到“类别”选项卡时,类别树已完全折叠。我将不得不扩展所有类别,以查看产品所属的类别。 如何快速(在后端)查看产品所属的类别?


1
管理员配置:根据选定的多选值显示字段
我想显示基于选定的multiselect输入的字段...如果仅选择一个值,则下面的代码将起作用。如果我选择了多个值,则它仅显示一个字段(首先从源模型中选择) <enabled> <label>Enabled</label> ... <source_model>adminhtml/system_config_source_enabledisable</source_model> </enabled> <!-- this gives three options - shop, ebay, amazon --> <channels> ... <frontend_type>multiselect</frontend_type> <source_model>module/system_config_source_channels</source_model> <depends> <enabled>1</enabled> </depends> </channels> <mail_template_shop> ... <depends> <enabled>1</enabled> <channels>shop</channels> </depends> </mail_template_shop> <mail_template_ebay> ... <depends> <enabled>1</enabled> <channels>ebay</channels> </depends> </mail_template_ebay> 相关代码: app / code / core / Mage / Adminhtml / Block …

3
心电图合规性:怎么办?
也有一些是像coding standard为Magento的1,称为ECG其中有大量的事情,应避免或不应该使用的方法。 让我们尝试创建一个列表,其中包含在代码中引发“错误”或“警告”的所有情况。 您将在下面找到所有可能的警告的列表。我会定期更新此帖子,并链接到给定和推荐的答案。 注意:请尽量避免重复的答案;) 下载:https : //github.com/magento-ecg/coding-standard 心电图闻 班级 的MySQL4 Mysql4类已过时。 重写资源模型时如何处理不推荐使用的“ Mysql4”类 将资源文件夹从Mysql4更改为Resource时,Magento 1.9模块奇怪地断开 对象实例化 在Magento中不建议使用直接对象实例化(类%s)。 protected $disallowedClassPrefixes = array( 'Mage_', 'Enterprise_', ); ... 的PHP 去 不鼓励使用goto。 ... 命名空间 未指定“'。$ exceptionClassName。'”类的命名空间。 ... 私人班级成员 检测到私人班级成员。 ... Var 检测到私人班级成员。 ... 性能 收款计数 不必要地加载了Magento数据集合。请改用getSize()方法。 如何检查集合中是否有物品? 全部提取 对于大型数据集,fetchAll()可能会使内存效率低下。 ... GetFirstItem getFirstItem()不会将集合加载的结果限制为一个项目。 GetFirstItem- …

3
Magento 1:性能优化以删除实体
我目前正在尝试改进有关性能的几个模块。 你们中有些人可能知道集合方法的用法,walk()这对于避免直接遍历产品非常有用。 最重要的是,感谢@Vinai,我们也可以使用collection delete()方法。 但是我注意到Magento 1本机文件并不总是使用这些方法中的任何一种进行删除。 一个我见过的最糟糕的代码是massDelete()从方法app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php,其中产品在删除之前的循环加载。 foreach ($productIds as $productId) { $product = Mage::getSingleton('catalog/product')->load($productId); Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product)); $product->delete(); } 因此,我进行了一些性能测试,添加了一些日志记录调用,以检查删除100个产品所花费的时间和内存使用情况。 测试1:walk方法 我用以下代码替换了上面粘贴的原始代码: $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('entity_id') ->addIdFilter($productIds) ->walk('delete'); 在我糟糕的开发服务器上的结果如下(基于10个测试的平均值): 原始代码:19.97秒,已使用15.84MB 自定义代码:17.12秒,已使用15.45MB 因此,对于100种产品的删除,我的自定义代码加快了3秒,而占用的内存少了0.4MB。 测试2:使用收集delete()方法 我用以下代码替换了原始代码: $collection = Mage::getResourceModel('catalog/product_collection') ->addAttributeToSelect('entity_id') ->addIdFilter($productIds) ->delete(); 和记吹这里的结果: 原始代码:19.97秒,已使用15.84MB 自定义代码:1.24秒,已使用6.34MB 因此,对于100种产品的删除,我的自定义代码加快了18秒,而占用的内存减少了9MB。 如评论中所述,该方法似乎不会触发Magento事件(加载后,删除后),也不会触发索引/缓存刷新。 题 所以我的问题是:Magento核心团队为什么没有使用walk('delete')or事件更好的收集delete()方法而不是循环加载产品(我们都知道这是非常非常糟糕的做法)吗? 主要目标是在开发模块时要注意这些关键点:在某些特殊情况下,不能使用walk/收集delete()方法吗? …

2
如何从自定义模块覆盖核心模板文件?
我想覆盖两个文件。即销售订单的view.phtml和print.phtml。 (路径:app/design/frontend/base/default/template/sales/order/) 我正在创建一个模块,在其中要创建路径,app/design/frontend/base/default/template/<My Module Name>/sales/order/以免内核view.phtml和print.phtml文件被覆盖。 因此,请指导我如何完成这项任务。



4
如何过滤不在类别中的产品?
这是我的代码: $catIds = array(7,8,9); $collection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect("*"); ->addAttributeToFilter('category_ids', array('nin' => $catIds)); 我想获取所有不在类别ID列表中的产品,但是我的代码未提供预期的结果。请给我指路,谢谢。

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.