Liste aller aktiven Module, die in einer Site verwendet werden

21

Gibt es eine Möglichkeit, eine Liste aller verwendeten (aktiven) Module auf einer Site zu haben?

Ich bin gerade dabei, eine Site zu dokumentieren und möchte alle aktiven Module auflisten. Ich weiß, dass ich sie entnehmen kann, admin/modulesaber es muss einen anderen Weg geben.

drcelus
quelle

Antworten:

33

Mit dem drush pm-list --type=Module --status=enabledBefehl können Sie eine Liste aller installierten Module abrufen.

Wenn Sie die Kernmodule ausschließen möchten, verwenden Sie drush pm-list --type=Module --no-core --status=enabled

Gokul NK
quelle
Wie erwähnt auf einem ähnlichen Beitrag Sie alle von ihnen für eine Multi-Site - Umgebung mit Liste kann @sites , indem Sie drush @sites pml --no-core --type=module --status="enabled" -yund Filter auf etwa some_module mit grep `| grep some_module`
MediaVince
21

Die beiden Optionen, die ich verwende, sind Drush und ein benutzerdefiniertes Skript.

Für Drush können Sie verwenden 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

Ich habe dieses Skript auch für Drupal 6 geschrieben. Sie müssen den Bootstrap für Drupal 7 bearbeiten und möchten möglicherweise auch die Pfadprüfung optimieren. Ich füge dies in eine Datei namens modules.php in meinem DOCROOT ein und füge eine Zugriffsbeschränkung hinzu, um zu verhindern, dass es aus dem Nichts aufgerufen wird.

<?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";

Dieses Skript kann mit drush folgendermaßen aufgerufen werden: drush scr modules.php

mpdonadio
quelle
7

Das Modul Aktivierte Module (enabled_modules) enthält Listen aller aktivierten Module auf einer Website.

Oder,

Sie können diese API-Funktion module_list verwenden , um alle aktivierten Module abzurufen .

Anil Sagar
quelle
4

Ja, überprüfen Sie das Modul Filter : Es ist ein hervorragender Administrator-Helfer, der die Verwaltung von Modulen erheblich vereinfacht.

Die Seite mit der Modulliste kann sehr umfangreich werden, wenn es sich um eine relativ große Site oder auch nur um eine Entwickler-Site handelt, die zum Testen neuer und in Betracht gezogener Module gedacht ist. Ziel dieses Moduls ist es, das gesuchte Modul schnell zu finden, ohne auf die Suchfunktion des Browsers angewiesen zu sein, die Ihnen mehrmals den Modulnamen in den Abschnitten "Erforderlich von" oder "Abhängig von" von anzeigt die verschiedenen Module oder sogar eine andere Stelle auf der Seite wie ein Menüpunkt.

Wenn Registerkarten über die Einstellungsseite des Modulfilters aktiviert werden, wird ein neues Thema für das Modullayout implementiert. Dieses Registerkartenlayout enthält eine Registerkarte für jedes Paket sowie eine Registerkarte, auf der jedes Modul in alphabetischer Reihenfolge angezeigt wird. Das Filtertextfeld ist auf jeder Registerkarte verfügbar, unterstützt jedoch derzeit keine automatische Vervollständigung.

Aram Boyajyan
quelle
2

Drush Make hat eine primitive Makefile-Generierungsfunktion. Ändern Sie dazu einfach Ihr Verzeichnis in die Drupal-Installation, aus der Sie die Datei generieren möchten, und führen Sie den folgenden Befehl aus:

drush generate-makefile /path/to/make-file.make

Sie erhalten make-file.make mit einer Liste von Modulen. Dann können Sie diese Module in ein anderes Projekt laden. Lesen Sie http://www.drush.org/en/master/make/#usage

Andrey Voskresenskiy
quelle
2

Wenn Sie keinen Befehlszeilenzugriff zum Ausführen von drush haben, suchen Sie möglicherweise nach einer Möglichkeit, die Sie über die Web-Benutzeroberfläche ausführen können. Die beste Lösung, die ich finden konnte, war, zur Seite "Module" zu navigieren und den folgenden Befehl in der Konsole auszuführen:

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

Dadurch werden alle aktivierten Module in der Konsole gedruckt, wo Sie sie kopieren und an einer beliebigen Stelle einfügen können.

Anthony DiSanti
quelle
2

Der einfachste Weg, den ich gefunden habe, ist eine Datenbankabfrage, die Sie in ein benutzerdefiniertes Modul oder Drush-Skript einfügen können, um sie in einem gewünschten Format auszugeben.

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

Alex Finnarn
quelle
2

Installieren und aktivieren Sie das Forena- Modul (Offenlegung, dass ich Mitbetreuer bin). Benutzer mit der Rolle "Administrator" können dann zu dem übermittelten (Beispiel-) Bericht unter navigieren, in dem reports/drupaladmin.enabled_contributionsdie Liste angezeigt wird, um die es bei dieser Frage geht.

So sieht die Spezifikation ( .FRXDatei, ein XHTML-Dokument) zum Erstellen des Berichts aus:

<?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>

Und so sieht der Datenblock (SQL-Anweisung) aus, auf den sich der Bericht bezieht:

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

Das ist wirklich "es".

PS: Sie können die .FRXDatei und / oder den Datenblock jederzeit an Ihre Bedürfnisse anpassen .

Pierre.Vriens
quelle
AND 'module'=type?! Sollte seinAND type = 'module'
ajmedway 29.10.18
@ajmedway du hast wahrscheinlich recht, warum nicht "eine Bearbeitung vorschlagen"? Ich würde es gerne genehmigen ...
Pierre.Vriens
Ich nehme an, es ist keine große Sache - die Klausel funktioniert. Es ist einfach nicht üblich, den Spaltennamen auf der rechten Seite des Ausdrucks mit dem Wert auf der linken Seite zu haben.
Ajmedway
0

Für diejenigen ohne Drush: Gehen Sie zur Modulseite mit aktiviertem Modulfilter (nicht unbedingt erforderlich, aber gut zum Formatieren).

Zeigen Sie dann die Quellseite an, kopieren Sie die HTML-Dateien in "<" table> "nach" <"/ table>. Fügen Sie sie in gedit ein, umschließen Sie sie mit HTML (body), und Sie erhalten eine HTML-Seite mit der Angabe von unbenutzte / deaktivierte Module (Kontrollkästchen nicht markiert), die beim Neuerstellen einer Site wichtig sein können (sofern die deaktivierten Module möglicherweise benötigt werden oder installiert werden können -> deinstalliert, um die Datenbank zu bereinigen)

Steve
quelle
0

Das Schema-Modul ist eine Option, während Views ebenfalls den Trick ausführen kann, obwohl Sie ohne das zusätzliche Views-System-Modul, das ich als fehlerhaft empfunden habe, keine Versionsnummern erhalten.

Cymatical
quelle
Das OP benötigt die Liste der aktivierten Module, nicht deren Schemaversion.
kiamlaluno