如何在Drupal 7模块中指定代码依赖项

时间:2014-05-16 16:56:15

标签: drupal module drupal-7 dependencies libraries

我目前正在制作一个Drupal模块,我想知道是否有任何机制让我指定一个github存储库,在安装时,我的模块将获得一些依赖于它的代码

重要提示:我依赖的不仅仅是Drupal模块,而只是一个代码库。所以,除非它支持检查github repos,否则我认为我的dependencies文件中的info会有所帮助吗?

2 个答案:

答案 0 :(得分:1)

在Drupal 7中,它们不是管理外部依赖关系的官方方法。

但是没有(真的)阻止你使用像bowercomposer这样的包管理器。

对于作曲家来说,他们是两个贡献项目:

对于Drupal 8,可以使用composer将依赖项添加到Drupal项目中。查看文档:{​​{3}}

答案 1 :(得分:0)

大多数项目似乎都清楚地列出了项目页面,安装说明和README文件的外部库依赖项。如果用户尚未安装所需的库,许多人使用库API来包含依赖项并显示配置警告。 Ckeditor,colorbox和JSON2都可以作为例子。

更新

不,库模块不下载依赖项。它只是提供一个安装位置和在模块中包含和使用的方法。请参阅“库项目”页面

安装库模块。在sites / all / libraries安装外部依赖。

首先,使用hook_libraries_info()注册库。

/**
 * Implements hook_libraries_info().
 */
function mymodule_libraries_info() {
  $libraries['anet_php_sdk'] = array(
    'name' => 'Authorize.net PHP SDK',
    'vendor url' => 'https://developer.authorize.net/',
    'download url' => 'http://developer.authorize.net/downloads/',
    'version arguments' => array(
      'file' => 'README',
      'pattern' => '/Version (\d+)/',
      'lines' => 206,
      'version' => '1.1.8'
    ),
    'files' => array(
      'php' => array('AuthorizeNet.php'),
    ),
  );
  return $libraries;
}

然后在模块中包含依赖项。

/**
 * Assemble and send DPM payment request to Authorize.net.
 */
function mymodule_process_payment($reservation) {
  // Include/require the dependency using libraries_load().
  $library = libraries_load('anet_php_sdk');
  // Use the external dependency...
}

访问libraries项目页面以获取更多文档,包括要求特定版本和处理检查和通知的示例。