我有一个drupal模块,需要网络上的其他文件。模块是否可以在激活时下载这些文件?模块可以下载文件吗?
回答
的Drupal的方式是使用File Interface和安装挂钩:
hook_enable()
。hook_install()
:安装模块时触发。hook_requirements()
:通知用户是否满足模块的要求。
如果该文件只需要下载一次,它可能会更好使用hook_install()
和使用hook_requirements()
提供有关它是否工作反馈。如果每次模块启用时都需要新数据,请选择hook_enable()
。
在下载文件方面,使用任何你想要的PHP方法。如果您需要使用外部库,请将其放入模块目录中并使用include
和/或require
,或考虑使用Libraries API,该目标旨在为第三方脚本和库提供中央存储库。
一旦你有文件数据,你会使用文件接口。模块可以访问文件站点的目录(在站点配置→文件系统中定义)。您首先使用file_create_path()
在其下创建自己的目录,然后使用file_save_data()
将数据保存到它。查看其他文件界面API documentation以了解您可以执行的其他操作。
然后,保存后,只需使用file_check_location()
检查数据是否可用于文件系统,并使用file_get_contents()
或include/require
访问它。
不,正如我所说的,您只能对文件夹具有写入权限。如果你想确保图书馆的依赖性,Drupal的方式是要求用户下载库并在hook_requirements中检查它。但是,即使在你的用例中,我上面描述的仍然可以工作:如果你可以下载和访问这个库,它保存在哪里有什么关系? – 2010-08-26 04:36:47
我建议使用Libraries API作为在模块文件夹中粘贴下载库(如果需要获取想要下载的文件)的替代方案,因为它通常不赞成在Drupal模块中封装外部库(并且如果您想要发布到drupal.org)。 – 2010-08-26 04:37:37
如果您计划将其发布到drupal.org,请不要执行任何操作(除了实现hook_requirements之外)。要求用户在自述文件中下载所需的库:遵循约定比在未经用户同意的情况下尝试下载文件更重要。如果这是一个内部模块,您只需要下载到文件并将其包含在内以供使用。为了能够将它们包含在模块中使用,并不是要求库位于'sites/all/libraries'或模块的文件夹中,而且它还具有将模块文件夹保持原始状态的额外好处。 – 2010-08-26 05:05:20
假设PHP配置为允许远程文件访问(请参阅allow_url_fopen
)并且模块目录具有写权限,那么可以下载hook_enable
或者可能更好的hook_install
所需的任何文件。当启用一个模块火灾:
- 1. 我可以下载Nodejs模块作为javascript文件吗?
- 2. 你可以从.htaccess文件加载apache模块吗?
- 3. 是否可以使用dryscape Python模块下载图像文件?
- 4. 我可以从哪里下载apache模块二进制文件?
- 5. 可以mozswing下载文件
- 6. Codova,我可以下载一个文件到(root)/下载文件夹吗?
- 7. 我可以设置文件被下载到的文件名吗?
- 8. 根据条件语句,可以加载列表perl模块吗?
- 9. 使用ASP.NET .ashx模块下载文件
- 10. 以块形式下载文件
- 11. Petrelrel可以在测试模式下加载插件吗?
- 12. 我可以从perl中的模块调用.pl文件吗?
- 13. 可以在Inno-Setup中使用MSM(合并模块)文件吗?
- 14. 模块可以有自己的配置文件吗?
- 15. 我可以为本地JavaScript模块创建定义文件吗?
- 16. 我可以让pytest doctest模块忽略一个文件吗?
- 17. 果园模块可以放在单独的文件夹中吗?
- 18. ANTLR语法文件可以模块化吗?
- 19. python fastparquet模块可以读取压缩的parquet文件吗?
- 20. 模块可以在多个文件中定义吗?
- 21. 多模块maven原型可以设置为可选模块吗?
- 22. 我可以通过下载链接从网站上下载文件吗? Visual Basic
- 23. 我可以在不卸载的情况下更新Joomla模块吗?
- 24. iPhone应用程序可以自动下载XML文件吗?
- 25. 我可以阻止下载JavaScript文件吗?
- 26. 可以将Apache Maven设置为从ftp下载jar文件吗?
- 27. 我可以使用RestKit下载并解析大文件吗?
- 28. 有人可以从public_html下载我的文件吗?
- 29. 你可以通过Apache下载文件吗?
- 30. 我可以使用HTML'download'属性提示下载文件名吗?
模块可以下载文件,但它不具有对其安装目录的写入权限。 – kiamlaluno 2010-08-26 00:52:08