Come posso ottenere un elenco di tipi di contenuto con drush?


14

Come posso ottenere l'elenco dei tipi di contenuto esistente con drush? Questo mi permetterà di produrre rapidamente un elenco.

Ho provato con:

$ drush @d6 @sites genc --types

Ma ho bisogno del devel_generatesmodulo abilitato per questo.

Il comando genc richiede che i seguenti moduli siano abilitati per funzionare: devel_generate.


il modo più semplice è aprire admin / struttura / tipi
xurshid29

1
Perché non lo abiliti allora?
Mołot,

perché questo modulo non fornisce un elenco di tipi di contenuto ... in realtà lo faccio copiando / incollando l'elenco da admin / content / types / list
webmaster pf

genc viene utilizzato da devel_generate per generare nuovi contenuti, questo non mostrerà i tipi di contenuti esistenti.
Andre Baumeier,

Risposte:


6

È possibile creare un comando drush denominato content-type-list. Crea un modulo chiamato drush_content_types, all'interno del drush_content_types.drush.incfile inserisci questo codice:

<?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));
}

Installa il modulo, esegui drush cc drushper cancellare la cache del drush e usa il comando in questo modo:

drush ctl

o

drush content-type-list

Se si desidera aggiungere un altro alias al comando aggiungere elementi alla matrice di alias in questo modo:

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

E puoi usare questi comandi:

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

L'output sarà sempre:

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

13

Elenco dei nomi:

drush sqlq "SELECT name FROM node_type;"

Elenco dei nomi delle macchine:

drush sqlq "SELECT type FROM node_type;"

Funziona in D6 e D7.

La prima riga dell'output del comando sarà nameo type, rispettivamente. Pipa |tail -n +2se vuoi eliminare quella prima riga.


cercando di ottenere errori:$ 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, ho appena controllato di nuovo, funziona benissimo. Hai un table_prefix su questo sito? Cosa drush sqlq "SHOW TABLES;"|grep typeti dà?
kqw,

si ho il prefisso ma il tuo comando mi dà un elenco di tabelle .questo è il comando giusto: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf

10

Prova i seguenti comandi.

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()));"

5

Se sai come farlo in Drupal, devi solo usare 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"; }'

Vedi questo elenco di comandi drush per altri esempi utili usando eval.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.