我想做一个扩展,在产品页面上注入视频。
我已经在Magento网站上阅读了很多文档,但真诚地说,我不知道从哪里开始。Magento扩展和小部件有什么区别?我可以只使用 JavaScript 开发我的扩展吗?我真的需要使用 PHP 来开发一个吗?
这么多问题,找不到重点。你能分享一个简单的跟随槽让我继续阅读吗?谢谢。
学分:马吕斯
https://magento.stackexchange.com/questions/8344/how-to-write-a-custom-extension/8345#8345
这是我通常做的事情:
-
始终与
error_reporting
一起发展。 -
始终在
isDeveloperMode
设置为true
的情况下进行开发。只需将SetEnv MAGE_IS_DEVELOPER_MODE 1
添加到您的httpd.conf
文件(或nginx或其他内容的相应文件)中即可 - 如果扩展链接到核心功能,请添加声明文件
<depends><Mage_Catalog /></depend>
中的依赖关系 - 如果该模块供社区使用,请使用
community
作为代码池让开发人员有机会在没有直接修改代码 - 将前端设计文件放在
app/design/frontend/base/default
以使它们可用于所有主题。 - 将管理员设计文件放入
app/design/adminhtml/default/default
且不更改管理员主题。我可能想在我的一个模块中更改它。 - 在布局文件名和模板文件夹名称前面加上公司名称,以便更容易隔离它们。
easylife_articles.xml
和app/design/.../easylife_articles
- 将静态资源(js,css,images)放在与模板文件
easylife_articles/images/doh.png
- 附加一个简单的文本文件,其中包含如何卸载扩展:什么文件需要删除,哪些表需要删除,哪些需要从表中删除
core_config_data
配置设置。 - 不要直接在模型、块或帮助程序中编写查询,请使用 为此提供资源模型。
- 不要直接使用表名编写查询
Select * from sales_flat_order where ...
。使用Zend_Select
并转换 使用->getTable('sales/order')
的表名。 - 使用基 URL 在模板中包含
js
文件。错<script type="text/javascript" src="../js/some.js"></script>
. 右<script type="text/javascript" src="<?php echo Mage::getBaseUrl('js').'some.js'?>"></script>
- 除非必要,否则不要重写类。使用观察器,如果 无法使用作为参数接收的帮助程序方法和 要重写的类的实例。错误: 重写
Mage_Catalog_Model_Product
以添加方法getProductArticles()
.对。在帮助程序中添加getProductArticles(Mage_Catalog_Model_Product $product)
- 如果覆盖类,请将类的列表放在
readme.txt
文件中 - 使用模块管理部分的默认管理路径。 错误的管理网址
articles/adminhtml_articles/index
.正确的管理员网址admin/articles/index
- 为您的管理部分添加 ACL。我可能想限制访问 一些管理员。
- 不要添加其他js框架(jquery,mootools,...),如果它不是 必要。在原型中编写代码。
- 让你的模板html W3C有效(这是针对像我这样的强迫症开发人员)。
- 不要将图像放在
media
文件夹中。使用skin
.Themedia
文件夹通常没有版本控制,这使得移动 不同环境下的网站。 - 使用打开和关闭平面目录来测试扩展。为了不使开发时间加倍使用混沌猴
- 使用缓存
on
和缓存off
测试扩展。 - 避免在模块和类名中使用大写字母。如果不是 经过正确测试,这可能会导致不同操作系统出现问题。这更像是一个建议,而不是"必须"。
- 在代码中调度事件,使开发人员更容易 更改功能。
- 遵循Magento使用的相同编码标准并注释您的代码。
-
[编辑] 不要使用 php 短标签 (
<? $this->doSomething() ?>
)。使用完整标记 (<?php $this->doSomething()?>
)。也不要使用短回声标签。(<?="D'oh";?>
)。用途 (<?php echo "D'oh";?>
) - 使用
$this->__
翻译您的文本,并至少为en_US
语言添加区域设置翻译文件与您的文本(app/local/en_US/Easylife_Articles.csv
)。并非全部 网站以英文构建,文本识别 翻译非常耗时。 - 如果您销售扩展,则至少提供基本支持。或者至少 回复您收到的支持电子邮件。
- 不要通过扩展不断调用服务器以进行许可证验证。一次,在安装时绰绰有余(我也不喜欢这种方法,但它比一直打电话要好)。 (灵感来自这个问题)
- 在激活日志的情况下进行开发,并不时查看
var/log/system.log
文件。此处列出的错误未显示 即使打开了开发人员模式。如果至少有一个错误,则结束 运行扩展几个月后,使用大型日志文件。 - 如果扩展影响结帐流程或 以某种方式,确保它适用于多运输,或者如果它 不应该使用多运输,请确保它不会影响它。
- 请勿替换默认的管理员通知栏(或源 URL)。如果 我对你提供的东西感兴趣,我会订阅你的 通讯。让我看看Magento要说什么。它更重要 对我来说。
- 如果您使用 Ioncube(或其他东西)加密代码文件 否则)...井。。。我只是恨你,我希望你的企业破产
这就是到目前为止的情况。一旦我想到其他事情,我会添加更多。
你肯定需要XML和PHP,因为这主要是Magento构建的基础。
除了官方文档之外,还有很多有用且非常多样化的教程来解释Magento的机制。网络搜索会有所帮助,我可以推荐 Alan Storm 的所有内容,例如这个 litte 模块:http://alanstorm.com/magento_list_module
一旦创建扩展适合您,您还会找到许多有关如何更改产品视图的教程,或者您可以在此处或 magento.stackexchange.com 上发布更具体的问题。