站点中使用的所有活动模块的列表


21

有没有办法列出站点上所有已使用(活动)模块的列表?

我正在记录一个网站,并想列出所有活动模块,我知道我可以从中获取它们,admin/modules但是必须有另一种方法。

Answers:


33

您可以使用drush pm-list --type=Module --status=enabled命令来获取所有已安装模块的列表。

如果要排除核心模块,请使用 drush pm-list --type=Module --no-core --status=enabled


相关文章所述,您可以通过@sites@sites的多站点环境中列出所有它们,drush @sites pml --no-core --type=module --status="enabled" -y并使用grep`| some_module进行过滤。grep some_module`
MediaVince

21

我使用的两个选项是Drush和自定义脚本。

对于Drush,您可以使用drush pm-list

$ drush help pm-list
Show a list of available extensions (modules and themes).

Options:
 --type                                    Filter by extension type. Choices:
                                           module, theme.
 --status                                  Filter by extension status. Choices:
                                           enabled, disable and/or 'not
                                           installed'. You can use multiple
                                           comma separated values. (i.e.
                                           --status="disabled,not installed").
 --package                                 Filter by project packages. You can
                                           use multiple comma separated values.
                                           (i.e. --package="Core -
                                           required,Other").
 --core                                    Filter out extensions that are not
                                           in drupal core.
 --no-core                                 Filter out extensions that are
                                           provided by drupal core.
 --pipe                                    Returns a space delimited list of
                                           the names of the resulting
                                           extensions.


Aliases: pml

我还为Drupal 6编写了此脚本。您需要编辑Drupal 7的引导程序,并且可能还需要调整路径检查。我将其放在DOCROOT的一个名为modules.php的文件中,并在其周围添加了访问限制,以防止从头开始调用它。

<?php
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
header('Content-Type: text/plain');

$files = drupal_system_listing('/\.module$/', 'modules', 'name', 0);

system_get_files_database($files, 'module');

ksort($files);

$core_installed = array();
$core_enabled = array();
$core_disabled = array();

$contrib_installed = array();
$contrib_enabled = array();
$contrib_disabled = array();

foreach ($files as $info) {
  $filename = $info->filename;
  $name = $info->name;
  $status = $info->status;

  $contrib = strpos($filename, "sites/all/modules/") === 0;

  if ($contrib) {
    $contrib_installed[] = $name;
    if ($status) $contrib_enabled[] = $name;
    else $contrib_disabled[] = $name;
  } else {
    $core_installed[] = $name;
    if ($status) $core_enabled[] = $name;
    else $core_disabled[] = $name;
  }
}

print "Installed Core Modules: " . join(", ", $core_installed) . "\n\n";
print "Enabled Core Modules: " . join(", ", $core_enabled) . "\n\n";
print "Disabled Core Modules: " . join(", ", $core_disabled) . "\n\n";

print "Installed Contrib Modules: " . join(", ", $contrib_installed) . "\n\n";
print "Enabled Contrib Modules: " . join(", ", $contrib_enabled) . "\n\n";
print "Disabled Contrib Modules: " . join(", ", $contrib_disabled) . "\n\n";

可以使用以下命令通过drush调用此脚本: drush scr modules.php



4

是的,请检查“ 模块过滤器”模块:它是出色的管理员帮助程序,使模块管理更加轻松。

当处理一个相当大的站点或什至只是一个打算测试正在考虑的新模块和各种模块的开发站点时,模块列表页面可能会变得很大。该模块旨在实现的功能是能够快速找到您要查找的模块,而不必依赖浏览器搜索功能,该功能经常会在浏览器的“所需者”或“取决于”部分中显示模块名称。各种模块,甚至页面上的其他位置(如菜单项)。

通过“模块过滤器”的设置页面启用选项卡时,将实现新的模块布局主题。此选项卡布局为每个软件包提供一个选项卡,以及将按字母顺序显示每个模块的选项卡。过滤器文本字段在每个选项卡上均可用,但当前不支持自动完成。



2

如果您没有命令行权限来运行drush,则可能正在寻找可以从Web UI执行的操作。我能找到的最佳解决方案是浏览到“模块”页面,然后在控制台中运行以下命令:

jQuery('table.sticky-enabled input[checked=checked]')
  .closest('tr')
  .find('td label strong')
  .each(function() {
    console.log(jQuery(this).text());
})

这将在控制台中打印所有已启用的模块,您可以在其中复制粘贴它们到您想要的任何位置。


2

我发现的最简单的方法是,可以将数据库查询放入自定义模块或Drush脚本中,以所需的格式输出它。

$enabled_modules = db_query("SELECT name FROM {system} WHERE type = 'module' AND status = 1"); print implode("\n", $enabled_modules);


2

安装并启用Forena模块(我是共同维护者)。然后,具有“管理员”角色的用户将能够导航到位于的交付的(样本)报告reports/drupaladmin.enabled_contributions,这将为您提供此问题的列表。

这是.FRX用于创建报告的规范(文件,XHTML文档)的样子:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY nbsp "&#160;">
]>
<html xmlns:frx="urn:FrxReports">
<head>
<title>Enabled Modules and Themes</title>
<frx:category>Drupal Administration</frx:category>
<frx:options hidden="0" />
<frx:parameters>
</frx:parameters>
<frx:docgen>
</frx:docgen>

</head>
<body>
  <div frx:block="drupal/enabled_modules" id="forena-1">
    <table>
      <thead>
        <tr>
          <th>name</th>
          <th>owner</th>
          <th>weight</th>
        </tr>
      </thead>
      <tbody>
        <tr frx:foreach="*" id="forena-2">
          <td>{name}</td>
          <td>{owner}</td>
          <td>{weight}</td>
        </tr>
      </tbody>
    </table>
  </div>
</body>
</html>

报告中引用的数据块(SQL语句)如下所示:

--ACCESS=access administration pages
SELECT name, owner, weight FROM {system}
WHERE status=1 AND 'module'=type
ORDER BY name

那真的是“它”。

PS:随时调整(适应).FRX文件和/或数据块以适合您自己的需求。


AND 'module'=type?!应该是AND type = 'module'
ajmedway

@ajmedway您可能是正确的,为什么不“建议编辑”?我很乐意批准...
Pierre.Vriens

我认为这没什么大不了的-该子句有效。在表达式的右侧使用列名称,在左侧使用值只是不常见的做法。
ajmedway

0

对于那些不着急的人:转到启用了模块过滤器的模块页面(不是绝对必要的,但是很适合格式化)。

然后显示源页面,将“ <” table>“内的模块html复制到” <“ / table>。粘贴到gedit中,在其周围包裹一些html(html,body),您将获得一个html页面,其中包括未使用/禁用的模块(显示未选中的复选框),这在重建站点时可能很重要(因为可能需要禁用的模块,或者可以安装->为清理数据库而卸载)


0

Schema模块是一个选项,而Views也可以做到这一点,尽管没有附加的Views System模块(我发现它很麻烦),但是您没有获得版本号。


OP需要已启用模块的列表,而不是其架构版本。
kiamlaluno
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.