学习Magento插件开发


30

我从事PHP开发已有13年以上,只要有其他一些流行的项目(如WordPress),就对PHP本身有广泛的了解。我没有Magento的经验。

我现在有一个全职工作,在一家使用Magento的公司工作,我的所有开发工作现在几乎都将在Magento上进行。

第一次看了Magento之后,我的最初想法是,哇,我现在对自己有什么看法?但是后来我中经验丰富的开发人员出现并记住,那只是PHP。

因此,我有一些基本的Magento问题,非常感谢经验丰富的Magento开发人员提供的一些答案...

  1. 在该网站旁,最理想的学习magento开发的地方是什么?
  2. 到目前为止,扩展程序/插件对我还是很困惑。诸如WordPress之类的其他平台允许您将插件放置在其自己的文件夹中,所有文件都位于该文件夹下。从目前为止我所看到的,一个插件可能分散在Magento的多个文件夹中,这是正确的吗?
  3. 我已经了解了如何覆盖核心功能。因此,如果核心文件位于此处,/app/code/core/Mage/SitemapModel/Resource/Catalog则可以通过在此位置创建文件来覆盖它,/app/code/local/Mage/SitemapModel/Resource/Catalog那么它如何与扩展/插件一起使用?如果我创建了一个需要超越核心功能的插件,那么我必须在各处放置文件才能使该扩展正常工作吗?
  4. 您是否希望从magento开始了解其他信息?

感谢您的见解,我知道这是一个多部分的问题,但是我认为任何答案都对自己和其他起步有帮助,如果需要的话,我将制作此公共Wiki。


1
如果在stackexchange上遇到麻烦,那么这个问答将是一个问题!这变成了什么资源:)
McNab

@McNab没有粘性功能,但是投票最多的问题通常排名较高,并且被更多人看到。另外这个页面magento.stackexchange.com/?tab=month正显示出这一问题作为2号现在,这样的排序置顶的,但它说,“月”,所以我不知道多久会保持它的粘性。我同意这已经变成了一种很好的资源,并且我希望它会受到青睐,并在以后易于使用。顺便说一句,请与您的朋友分享这个社区,以便确保它成为一个永久的家并且不会在Beta期
过后

Answers:


24

我将重点关注您的问题的第一部分-“ 我如何学习/从哪里开始?

作为Zend Framework的前开发人员,我对Magento开发的最大帮助就是Magento U在过去两年中带来的在线学习爆炸式增长。除了正式学习之外,我主要通过做来学习,并且我已经“做” Magento已有5年以上了。

一些具体的学习资源:

除了学习工具外,对我而言,最大的学习工具是检查第三方Magento模块。我通读了代码并从中学习。您可以通过从核心模块中学习来做同样的事情。

一些对您的学习过程有帮助的网站:

http://magento-quickies.tumblr.com/

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

一些史诗般的开发人员可以遵循:

阿利斯泰尔·斯特德(Alistair Stead):https//github.com/alistairstead

Fabrizio Branca:https : //github.com/fbrnc/

Vinai Kopp:https//github.com/Vinai

参与社交活动 -与一些“摇滚明星”开发人员见面,并开始在Twitter上关注他们。需要帮助时,与特定的人联系;这个社区非常平易近人。利用社区为您带来好处。

一些Twitter列表:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

https://twitter.com/eHubSystem/magento-imagine-2013

https://twitter.com/GingerWarriorX/magento-peeps

最后- 明年跋涉到Magento Imagine,然后按一下肉身。追踪我们,向我们提问。出去参加当地的聚会。如果您所在的地区不存在聚会,请开始聚会。坚持不懈。不要让您缺乏知识阻止您与人建立联系和结识。您在社区中的关系将获得回报。


14

我的2美分是对@philwinkle的回答。

有两个官方PDF

1)Magento Extension开发人员指南

80页有关如何从头开始创建自定义扩展的方法。“新闻”模块是从头开始开发的-它会向您显示模块的文件和文件夹的结构,配置文件,控制器,模型,块。

2)可在此处找到Magento设计人员指南http://www.magentocommerce.com/resources/magento-user-guide

60页有关如何组织和创建您自己的主题的页面,根据最佳实践打包。

还有一本新书专门针对那些具有PHP背景并以Magento开头的人-Allan McGregor撰写的Magento PHP开发人员指南, 并且在亚马逊和各种博客上都有Magento开发人员的好评。

视频频道: Magento Commerce YouTube频道

认识Magento会议视频

其他好的博客:

http://magebase.com/
http://inchoo.net/blog/
http://www.kingletas.com/
http://blog.belvg.com/category/magento-news/developer-certification http:/ /fbrnc.net/tag:Magento
http://www.demacmedia.com/category/magento-commerce/


1
这很棒-很棒的资源!
philwinkle

8

到目前为止,这里的答案很好。关于

到目前为止,扩展程序/插件对我还是很困惑。诸如WordPress之类的其他平台允许您将插件放置在其自己的文件夹中,所有文件都位于该文件夹下。从目前为止我所看到的,一个插件可能分散在Magento的多个文件夹中,这是正确的吗?

Magento中的术语有些混乱。该平台的早期发展非常迅速,在很多情况下,您会看到错误的起点和方向改变所产生的重叠概念。扩展/插件/模块/我是开发人员,想要将我的代码添加到系统中就是这些领域之一。

Magento的连接扩展仅仅是可以被安装到的Magento系统文件的一个包。它与Magento的其他任何编程子系统完全分离。

与您更接近的是Magento代码模块。粗略地说,代码模块是PHP文件的集合,Magento将其视为单个单元。模块位于三个文件夹之一中

app/code/core
app/code/community
app/code/local

当您要自定义Magento或添加新功能时,几乎总是从代码模块开始。实际上,Magento本身是建立在大约60-70个代码模块之上的。例如,Mage_Cms模块中的

app/code/core/Mage/Cms

包含使Magento的CMS功能正常工作的代码。如果您要创建一个将小猫猫添加到Magento的模块,则可以创建一个名为的模块Jasondavis_Kitties并将其放入

app/code/community/Jasondavis/Kitties

回复:corecommunity,和local-首先是对Magento的开发者,所以不碰。第二个是针对打算分发给社区的扩展。最后一个是针对打算针对特定系统在本地开发的扩展。

最后的困惑是围绕设计包。Magento用于呈现和管理其HTML的代码是一个完全独立的系统。这就是为什么phtml文件与代码模块文件分开放置的原因。您可以在

app/design

夹。

编写得最好的专业扩展是作为Magento Connect扩展分发的,该扩展安装一个或多个Magento代码模块,并包含phtml安装在base 设计包中的许多自定义模板和Layout XML文件。

您可以使用代码模块执行的特定操作种类繁多,而且其中任何一个Stack Exchange答案都无法解决。我写了一系列文章,尽管有些陈旧,但仍然是对Magento编码概念的坚实基础。

最后,回复:

您是否希望从magento开始了解其他信息?

我对此有些偏见,但是我出售了一个名为Commerce Bug的Magento调试扩展(单击小调试链接)。这将收集并显示开发人员在使用Magento时需要了解的所有信息。当您学习系统时,这是一个巨大的帮助(我构建它是为了帮助我早日学习系统),当您在Magento系统上进行日常工作时,它仍然很有帮助。如果您按小时收费,那么您将在第一个项目上回购价格。


7

除了@philwinkle的答案外,我还要回复您有关使用PHP包含路径优先级覆盖类的声明。

如果没有其他方法可以完成您想要的操作,请考虑使用紧急解决方案。通常,您可以通过配置XML设置或重写类来指定要使用的类(也在config XML中指定)。包含路径hack
的缺点是:

  • 对控制器不起作用
  • 除了PHP类(例如config.xml文件)外,它对其他任何功能均不起作用
  • 升级Magento时,您将不得不将更改合并到本地副本中
  • 由于大多数Magento开发人员都只是简单地假设Mage名称空间中的模块位于核心代码池中,因此难以进行调试。

1
完全正确。我真的不确定如果没有单独的答案该如何处理。
philwinkle

我认为将其分开是个好主意。
Vinai 2013年

很高兴知道,我知道它看起来并不“正确”,但是我不确定是否还有其他方法,所以我仍然可以学到很多东西,还是谢谢
JasonDavis 2013年

4

首先,您不应该考虑重写或扩展核心模块或类。您必须学习Magento架构,编写自己的测试模块/扩展程序,并且几乎没有清理过Magento,EAV概念,布局层次结构,Magento主题和设计流程的功能。我引用此链接:Modern Magento 1.X工作流程和开发工具。祝好运

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.