Answers:
我不知道这个问题是否有一个正确的答案,因为这实际上取决于您所包含的代码。
如果您想包括第三方PHP库,例如用于外部API的sdk,则应将其放在Magento项目的/ lib目录中,以便使用它的扩展可以包括它。
但是,您也使用js和CSS作为示例。如果您使用扩展程序中的第三方js来输出代码(例如,一些呈现画布图表的js),则应该将其放置在/ js目录中,以便扩展程序可以将其包含在内。对于CSS,可能应该将其添加到基本/默认主题和外观目录中。
不幸的是,Magento 1扩展系统无法轻松分发此类内容,因为文件分散在整个项目中,而不是自身包含在单个目录中。Magento Composer安装程序和Modman之类的工具对此有所帮助。
当下载(与扩展名分开)时,第三方扩展名以其自己的单个.zip以及所有.php,.js,.html和.css一起出现。
我一直都是从源头上引用占卜规则的爱好者,尽管它可能与Magento 1模棱两可。
如果第三方库许可允许捆绑,则应将其解压缩并与扩展一起重新打包,因为没有本机机制可解压缩单独的子库(我可能错了)。
这些资产的存放位置取决于文件的类型和内部组织。纯JS库应该被淘汰./js/
。在服务器端执行的文件属于./lib/
,请注意,./lib/
可以通过(基本上是PSR-0)自动加载方案(请参阅Zend Framework 1自动加载约定)自动加载下面的任何PHP类。没有下./lib/
可以(应)经由客户机访问(参考文献./lib/.htaccess
)。
因此,您想创建一个扩展,并且正在使用外部资源/包来构造它。我认为,无论您在扩展程序中使用了什么软件包,您的扩展程序都应遵循Magento最佳做法。这意味着您应该将所有js,css,图像与外部资源分开,并放置在base\default
主题包目录中。
也就是说,不存在用于放置第三方程序包资源的唯一位置。最终,当您提供一个不错的扩展程序时,所有与该扩展程序有关的js,css和图像都应保存在通常由另一个开发人员查看的位置,并且在大多数情况下是base/default
主题包。
简而言之
您所有的扩展js应该都属于
skin\frontent\base\default\js\[your_extension]\[all_of_your_js_files]
skin\frontent\base\default\css\[your_extension]\[all_of_your_css_files]
skin\frontent\base\default\images\[your_extension]\[all_of_your_images]
//for third parties, you can create an inner directory, to specify it
skin\frontent\base\default\js\[your_extension]\[your_external_resource]\[resource_js_files]
skin\frontent\base\default\css\[your_extension]\[your_external_resource]\[resource_css_files]
skin\frontent\base\default\images\[your_extension]\[your_external_resource]\[resource_image_files]
这样,另一位开发人员可以非常轻松地找到扩展的js,css和图像(也来自外部资源)。由于您使用额外的子目录来指示扩展名目录中的外部资源文件,因此它将为其他人提供最好的线索,表明您的扩展依赖于某些第三方程序包。
因此,我建议您将外部软件包分开,并使其成为扩展的一部分,以便另一个开发人员可以轻松地找到您的依赖项。:-)
您不应该为网站所有者增加扩展负担。您可以通过正确对齐扩展名来避免此困难。这意味着,如果将所有相关文件保存在指定的目录位置,则网站所有者应该做的就是获取扩展名,然后从应用程序根目录合并扩展名。即正确对齐您的扩展名。它应该看起来像这样。
/app
|_____code\community\Namespace\Module\...
|_____design
| |_____frontend\base\defalt\...
| |_____adminhtml\base\defalt\...
/skin
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files
|_____frontend\base\default\js|css|images\[your_extension]\all_theme_related_files
如果有一些包,应该在所有Magento应用程序之间共享(例如javascript库或php包等),则可以将它们放在\lib
目录中。
的确,如果两个扩展名依赖相同的资源包,则可能存在重复的文件。他们也可能使用同一资源包的不同版本。但基本上,您的扩展程序应仅使用扩展程序的资源(并且可以依赖默认Magento的资源),并且不应依赖其他扩展程序的资源,除非您的扩展程序是第三方扩展程序的“扩展版本”。
js, css, images
的base\default
包”。另请参阅我的编辑代码
Magento有自己的软件包管理器,称为Magento Connect。您应该从官方文档中查看本指南,以全面了解软件包的外观。了解结构后,即可从Magento安装中打包模块。
基本上,Magento会用它自己的结构来保持.php
,.phtml
,js
,css
,images
文件。
对于magento扩展开发人员来说,遵循magento方式非常重要。检查此链接。
所以,
.php
文件应放在app/code/community
文件夹下js
文件可以转到js
文件夹或skin/frontend or adminhtml/your_theme_pack/your_theme/js
文件夹中css
文件可以转到skin/frontend or adminhtml/your_theme_pack/your_theme/css
文件夹images
文件可以转到skin/frontend or adminhtml/your_theme_pack/your_theme/images
文件夹files should go to
app / design / frontend或adminhtml / template`文件夹PS前端表示您的扩展程序是否用于前台存储,而adminthml表示您的扩展程序是否用于管理区域。
有一些特定的方法可以将这些文件保存在magento中,因此您应该遵循它们。
我还将检查magento / zend框架中是否已提供您所需的/复制功能。例如,在magento中已经建立了创建pdf,发送电子邮件,阅读xml等功能。
希望这可以帮助。
更新1
如果您只想将文件保存在某个地方,则可以在任何地方保存。您甚至可以在magento根目录中创建新文件夹。但这不是magento的最佳做法,它会在执行这些文件时加载服务器。您要检查此https://magentotherightway.com/
local
代码池中。