Lista de todos los módulos activos utilizados en un sitio.

21

¿Hay alguna manera de tener una lista de todos los módulos usados ​​(activos) en un sitio?

Estoy en el proceso de documentar un sitio y me gustaría enumerar todos los módulos activos, sé que puedo tomarlos, admin/modulespero debe haber otra forma.

drcelus
fuente

Respuestas:

33

Puede usar el drush pm-list --type=Module --status=enabledcomando para obtener una lista de todos los módulos instalados.

Si desea excluir los módulos principales, use drush pm-list --type=Module --no-core --status=enabled

Gokul NK
fuente
Como se mencionó en una publicación relacionada , puede enumerarlos todos para un entorno multisitio con @sites haciendo drush @sites pml --no-core --type=module --status="enabled" -yy filtrando en say some_module usando grep `| grep some_module`
MediaVince
21

Las dos opciones que uso son Drush y un script personalizado.

Para Drush, puedes usar 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

También escribí este script para Drupal 6. Necesitas editar el bootstrap para Drupal 7, y es posible que también quieras modificar la comprobación de ruta. Puse esto en un archivo llamado modules.php en mi DOCROOT y agrego restricciones de acceso a su alrededor para evitar que se llame desde la naturaleza.

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

Este script se puede llamar con drush usando: drush scr modules.php

mpdonadio
fuente
7

El módulo Enabled Modules (enabled_modules) proporciona listas de todos los módulos habilitados en un sitio web.

O,

Puede usar esta función API module_list para obtener todos los módulos habilitados.

Anil Sagar
fuente
4

Sí, verifique el módulo Módulo de filtro : es un excelente ayudante de administrador que facilita la administración de módulos.

La página de la lista de módulos puede llegar a ser bastante grande cuando se trata de un sitio bastante grande o incluso solo un sitio de desarrollo destinado a probar módulos nuevos y varios que se están considerando. Lo que este módulo pretende lograr es la capacidad de encontrar rápidamente el módulo que está buscando sin tener que depender de la función de búsqueda de navegadores que la mayoría de las veces le muestra el nombre del módulo en las secciones 'Requerido por' o 'Depende de' los diversos módulos o incluso alguna otra ubicación en la página como un elemento de menú.

Cuando las pestañas se habilitan a través de la página de configuración del Filtro de módulo, se implementa un nuevo tema de diseño de módulo. Este diseño de pestaña proporciona una pestaña para cada paquete, así como una pestaña que mostrará cada módulo alfabéticamente. El campo de texto del filtro está disponible en cada pestaña, pero actualmente no es compatible con el autocompletado.

Aram Boyajyan
fuente
2

Drush make tiene una capacidad primitiva de generación de archivos make. Para usarlo, simplemente cambie su directorio a la instalación de Drupal desde la que desea generar el archivo y ejecute el siguiente comando:

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

Obtiene make-file.make con una lista de módulos. Luego puede cargar estos módulos en otro proyecto. Lea http://www.drush.org/en/master/make/#usage

Andrey Voskresenskiy
fuente
2

Si no tiene acceso a la línea de comandos para ejecutar drush, es posible que esté buscando algo que pueda hacer desde la interfaz de usuario web. La mejor solución que pude encontrar fue navegar a la página de Módulos y luego ejecutar este comando en la consola:

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

Esto imprimirá todos los módulos habilitados en la consola, donde puede copiarlos y pegarlos en cualquier lugar que desee.

Anthony DiSanti
fuente
2

La forma más simple que he encontrado es una consulta de base de datos que podría poner en un módulo personalizado o script de Drush para generarlo en el formato que desee.

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

Alex Finnarn
fuente
2

Instale y habilite el módulo Forena (divulgación soy un co-mantenedor). Los usuarios con el rol de "administrador" podrán navegar hasta el informe entregado (muestra) ubicado en reports/drupaladmin.enabled_contributions, que le dará la lista de la que trata esta pregunta.

Así es como se ve la especificación ( .FRXarchivo, documento XHTML) para crear el informe:

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

Y así es como se ve el bloque de datos (instrucción SQL) mencionado en el informe:

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

Eso es realmente "eso".

PD: siéntase libre de ajustar (adaptar) el .FRXarchivo y / o el bloque de datos para satisfacer sus propias necesidades.

Pierre.Vriens
fuente
AND 'module'=type?! Debería serAND type = 'module'
ajmedway
@ajmedway probablemente tengas razón, ¿por qué no "sugerir una edición"? Me encantaría aprobarlo ...
Pierre.Vriens
No es gran cosa, supongo, la cláusula funciona. Simplemente no es convencional tener el nombre de la columna en el lado derecho de la expresión con el valor a la izquierda.
ajmedway
0

Para aquellos sin drush: vaya a la página de módulos, con el filtro de módulo habilitado (no es absolutamente necesario, pero es bueno para formatear).

Luego muestre la página de origen, copie los módulos html dentro de "<" table> "a" <"/ table>. Pegue en gedit, envuelva algunos html a su alrededor (html, body), y tendrá una página html, que incluye la indicación de módulos no utilizados / deshabilitados (mostrando la casilla de verificación desmarcada) que pueden ser importantes al reconstruir un sitio (en la medida en que los módulos deshabilitados pueden ser necesarios o pueden instalarse -> desinstalados para limpiar la base de datos)

Steve
fuente
0

El módulo de esquema es una opción, mientras que las vistas también pueden hacer el truco, aunque sin el módulo adicional del sistema de vistas, que encontré defectuoso, no obtienes números de versión.

Cimático
fuente
El OP necesita la lista de los módulos habilitados, no su versión de esquema.
kiamlaluno