我有一个drupal模块,需要来自网络的其他文件。模块是否可以在激活时下载这些文件?
答案 0 :(得分:3)
Drupal Way 是使用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
进行访问。
答案 1 :(得分:2)
假设PHP配置为允许远程文件访问(请参阅allow_url_fopen
)并且模块目录具有写入权限,您可以在hook_enable
中下载任何所需文件,或者甚至更好,{{3} }。