Como posso obter uma lista de tipos de conteúdo com drush?

14

Como posso obter a lista de tipos de conteúdo existente com drush? Isso me permitirá produzir rapidamente uma lista.

Eu tentei com:

$ drush @d6 @sites genc --types

Mas preciso do devel_generatesmódulo ativado para isso.

O comando genc precisa do (s) seguinte (s) módulo (s) ativado (s) para executar: devel_generate.

webmaster pf
fonte
a maneira mais fácil é abrir admin / structure / types
xurshid29
1
Por que você não o habilita então?
Mołot
porque este módulo não fornece uma lista de tipos de conteúdo .. na verdade eu o faço por copiar / colar lista de admin / content / types / list
webmaster pf
O genc é usado em devel_generate para gerar novo conteúdo, isso não mostra os tipos de conteúdo existentes.
Andre Baumeier

Respostas:

6

Você pode criar um comando drush chamado content-type-list. Crie um módulo chamado drush_content_types, dentro do drush_content_types.drush.incarquivo, coloque 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 o módulo, execute drush cc drushpara limpar o cache de drush e use o comando como este:

drush ctl

ou

drush content-type-list

Se você deseja adicionar outro alias ao comando, adicione elementos à matriz de aliases como esta:

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

E você pode usar estes comandos:

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

Sempre a saída será:

Machine name:
content 1
content 2
content...
content n
Adrian Cid Almaguer
fonte
13

Lista de nomes:

drush sqlq "SELECT name FROM node_type;"

Lista de nomes de máquinas:

drush sqlq "SELECT type FROM node_type;"

Isso funciona em D6 e D7.

A primeira linha da saída do comando será nameou type, respectivamente. Canalize |tail -n +2se você quiser soltar a primeira linha.

kqw
fonte
tentando mas obter erros:$ 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, acabei de verificar isso de novo, funciona bem. Você tem um prefixo de tabela neste site? O que drush sqlq "SHOW TABLES;"|grep typevocê tem?
kqw
sim, eu tenho prefixo, mas seu comando me fornece uma lista de tabelas. este é o comando certo: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf
10

Experimente os seguintes comandos.

Drupal 7 e 8

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

Drupal 5 e 6

drush ev "print_r(array_keys(node_get_types()));"
kenorb
fonte
5

Se você sabe como fazê-lo no Drupal, basta 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"; }'

Veja esta lista de comandos drush para outros exemplos úteis usando eval.

Pere
fonte