¿Cómo puedo obtener una lista de tipos de contenido con drush?


14

¿Cómo puedo obtener la lista de tipos de contenido existente con drush? Esto me permitirá producir rápidamente una lista.

He intentado con:

$ drush @d6 @sites genc --types

Pero necesito el devel_generatesmódulo habilitado para esto.

Command genc necesita los siguientes módulos habilitados para ejecutarse: devel_generate.


la forma más fácil es abrir admin / structure / types
xurshid29

1
¿Por qué no lo habilitas entonces?
Mołot

porque este módulo no proporciona una lista de tipos de contenido ... en realidad lo hago copiando / pegando la lista de admin / content / types / list
webmaster pf

genc se usa desde devel_generate para generar contenido nuevo, esto no mostrará los tipos de contenido existentes.
Andre Baumeier

Respuestas:


6

Puede crear un comando drush llamado content-type-list. Crea un módulo llamado drush_content_types, dentro del drush_content_types.drush.incarchivo pon este código:

<?php
/**
 * @file
 * Drush commands related to Content Types.
 */

/**
* Implements hook_drush_command().
*/
function drush_content_types_drush_command() {
  $items['content-type-list'] = array(
    'description' => dt("Show a list of available content types."),
    'aliases' => array('ctl'),
  );
  return $items;
}

/**
 * Callback for the content-type-list command.
 */
function drush_drush_content_types_content_type_list() {
  $content_types = array_keys(node_type_get_types());
  sort($content_types);

  drush_print(dt("Machine name"));
  drush_print(implode("\r\n", $content_types));
}

Instale el módulo, ejecute drush cc drushpara borrar el caché drush y use el comando como este:

drush ctl

o

drush content-type-list

Si desea agregar otro alias al comando, agregue elementos a la matriz de alias de esta manera:

'aliases' => array('ctl', 'all-content-types', 'act'),

Y puedes usar estos comandos:

drush act
drush all-content-types
drush ctl
drush content-type-list

Siempre la salida será:

Machine name:
content 1
content 2
content...
content n

13

Lista de nombres:

drush sqlq "SELECT name FROM node_type;"

Lista de nombres de máquinas:

drush sqlq "SELECT type FROM node_type;"

Esto funciona en D6 y D7.

La primera línea de salida del comando será nameo type, respectivamente. Pipe |tail -n +2si quieres dejar caer esa primera línea.


intentando pero obtener errores:$ drush @d6mg sqlq "SELECT type FROM node_type;" ERROR 1146 (42S02) at line 1: Table 'drupal6_mg.node_type' doesn't exist $ drush @d6mg sqlq "SELECT name FROM node_type;" ERROR 1146 (42S02) at line 1: Table 'drupal6_mg.node_type' doesn't exist
webmaster pf

1
@webmaster_pf, acabo de comprobar esto de nuevo, funciona bien. ¿Tiene un table_prefix en este sitio? ¿Qué drush sqlq "SHOW TABLES;"|grep typete da?
kqw

sí, tengo prefijo, pero su comando me da una lista de tablas. Este es el comando correcto: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf

10

Prueba los siguientes comandos.

Drupal 7 y 8

drush ev "print_r(array_keys(node_type_get_types()));"

Drupal 5 y 6

drush ev "print_r(array_keys(node_get_types()));"

5

Si sabes cómo hacerlo en Drupal, solo necesitas usar drush eval:

Drupal 6:

drush eval '$types = node_get_types(); foreach($types as $type => $object) { print $type . "\n"; }'

Drupal 7:

drush eval '$types = node_type_get_types(); foreach($types as $type => $object) { print $type . "\n"; }'

Consulte esta lista de comandos drush para ver otros ejemplos útiles con eval.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.