Lista wszystkich aktywnych modułów używanych w witrynie

21

Czy istnieje sposób posiadania listy wszystkich używanych (aktywnych) modułów w witrynie?

Jestem w trakcie dokumentowania strony i chciałbym wymienić wszystkie aktywne moduły, wiem, że mogę je wziąć, admin/modulesale musi być inny sposób.

drcelus
źródło

Odpowiedzi:

33

Możesz użyć drush pm-list --type=Module --status=enabledpolecenia, aby uzyskać listę wszystkich zainstalowanych modułów.

Jeśli chcesz wykluczyć moduły podstawowe, użyj drush pm-list --type=Module --no-core --status=enabled

Gokul NK
źródło
Jak wspomniano w pokrewnym poście , możesz wymienić je wszystkie w środowisku obejmującym wiele witryn za pomocą @sites , wykonując drush @sites pml --no-core --type=module --status="enabled" -yi filtrując powiedz some_module za pomocą grep `| grep some_module`
MediaVince
21

Dwie opcje, których używam, to Drush i własny skrypt.

W przypadku Drush możesz użyć 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

Napisałem również ten skrypt dla Drupala 6. Musisz zmodyfikować bootstrap dla Drupala 7 i możesz również ulepszyć sprawdzanie ścieżki. Umieszczam to w pliku o nazwie module.php w moim DOCROOT i dodam ograniczenie dostępu wokół niego, aby zapobiec wywoływaniu go z natury.

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

Ten skrypt można wywołać za pomocą drush, używając: drush scr modules.php

mpdonadio
źródło
7

Moduł Enabled Modules (enabled_modules) udostępnia listy wszystkich włączonych modułów na stronie internetowej.

Lub,

Możesz użyć tej funkcji API lista_modułów, aby uzyskać wszystkie włączone moduły.

Anil Sagar
źródło
4

Tak, sprawdź moduł Filter Module : Jest to doskonały pomocnik administratora, który znacznie ułatwia zarządzanie modułami.

Strona z listą modułów może stać się dość duża, gdy mamy do czynienia z dość dużą witryną lub nawet tylko stroną deweloperską przeznaczoną do testowania nowych i różnych rozważanych modułów. Moduł ten ma na celu szybkie znalezienie modułu, którego szukasz, bez konieczności korzystania z funkcji wyszukiwania w przeglądarkach, która częściej niż nie pokazuje nazwę modułu w sekcjach „Wymagane przez” lub „Zależy od” różne moduły lub nawet inne miejsce na stronie, takie jak element menu.

Po włączeniu kart za pomocą strony ustawień filtru modułu wdrażany jest nowy motyw układu modułu. Ten układ zakładek zapewnia zakładkę dla każdego pakietu, a także zakładkę, która pokaże każdy moduł alfabetycznie. Pole tekstowe filtru jest dostępne na każdej karcie, ale obecnie nie obsługuje autouzupełniania.

Aram Boyajyan
źródło
2

Drush make ma pierwotną funkcję generowania makefile. Aby go użyć, po prostu zmień katalog na instalację Drupal, z której chcesz wygenerować plik, i uruchom następującą komendę:

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

Otrzymasz make-file.make z listą modułów. Następnie możesz załadować te moduły w innym projekcie. Przeczytaj http://www.drush.org/en/master/make/#usage

Andrey Voskresenskiy
źródło
2

Jeśli nie masz dostępu do wiersza poleceń, aby uruchomić drush, być może szukasz czegoś, co możesz zrobić z internetowego interfejsu użytkownika. Najlepszym rozwiązaniem, jakie mogłem znaleźć, było przejście do strony Moduły, a następnie uruchomienie tego polecenia w konsoli:

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

Spowoduje to wydrukowanie wszystkich włączonych modułów w konsoli, gdzie można je skopiować i wkleić w dowolnym miejscu.

Anthony DiSanti
źródło
2

Najprostszym sposobem, jaki znalazłem, jest zapytanie do bazy danych, które można umieścić w niestandardowym module lub skrypcie Drush, aby uzyskać wynik w żądanym formacie.

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

Alex Finnarn
źródło
2

Zainstaluj i włącz moduł Forena (ujawnienie, że jestem współobsługą ). Użytkownicy z rolą „administrator” będą mogli przejść do dostarczonego (przykładowego) raportu znajdującego się pod adresem reports/drupaladmin.enabled_contributions, który da ci listę, o którą chodzi.

Oto jak wygląda specyfikacja ( .FRXplik, dokument XHTML) do utworzenia raportu:

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

A oto jak wygląda blok danych (instrukcja SQL), o którym mowa w raporcie:

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

To naprawdę „to”.

PS: możesz dostroić (dostosować) .FRXplik i / lub blok danych, aby dopasować go do własnych potrzeb.

Pierre.Vriens
źródło
AND 'module'=type?! Powinien byćAND type = 'module'
ajmedway
@ajmedway masz prawdopodobnie rację, dlaczego nie „zaproponować edycji”? Z przyjemnością to zatwierdzę ...
Pierre.Vriens
To chyba nic wielkiego - klauzula działa. Po prostu niekonwencjonalne jest umieszczenie nazwy kolumny po prawej stronie wyrażenia z wartością po lewej stronie.
ajmedway
0

Dla osób bez drush: przejdź do strony modułów, z włączonym filtrem modułów (nie jest to absolutnie konieczne, ale dobre do formatowania).

Następnie pokaż stronę źródłową, skopiuj moduły HTML wewnątrz "<" table> "do" <"/ table>. Wklej do gedit, owiń wokół niego trochę html (html, body), a otrzymasz stronę html, w tym wskazanie nieużywane / wyłączone moduły (pokazujące pole wyboru niezaznaczone), które mogą być ważne podczas przebudowy strony (o ile mogą być potrzebne wyłączone moduły lub mogą zostać zainstalowane -> odinstalowane w celu wyczyszczenia bazy danych)

Steve
źródło
0

Moduł schematu jest jedną z opcji, podczas gdy Widoki mogą również załatwić sprawę, chociaż bez dodatkowego modułu Widoku Systemu, w którym znalazłem błąd, nie otrzymujesz numerów wersji.

Cymatical
źródło
OP potrzebuje listy włączonych modułów, a nie ich wersji schematu.
kiamlaluno