Comment puis-je obtenir une liste des types de contenu avec drush?

14

Comment puis-je obtenir la liste des types de contenu existants avec drush? Cela me permettra de produire rapidement une liste.

J'ai essayé avec:

$ drush @d6 @sites genc --types

Mais j'ai besoin du devel_generatesmodule activé pour cela.

La commande genc nécessite que les modules suivants soient activés pour s'exécuter: devel_generate.

webmaster pf
la source
la façon la plus simple est d'ouvrir admin / structure / types
xurshid29
1
Pourquoi ne l'activez-vous pas alors?
Mołot
parce que ce module ne donne pas une liste de types de contenu .. en fait je le fais en copiant / collant la liste depuis admin / content / types / list
webmaster pf
genc est utilisé à partir de devel_generate pour générer du nouveau contenu, cela ne vous montrera pas les types de contenu existants.
Andre Baumeier

Réponses:

6

Vous pouvez créer une commande drush nommée content-type-list. Créez un module nommé drush_content_types, à l'intérieur du drush_content_types.drush.incfichier mettez ce code:

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

Installez le module, exécutez drush cc drushpour effacer le cache drush et utilisez la commande comme ceci:

drush ctl

ou

drush content-type-list

Si vous souhaitez ajouter un autre alias à la commande, ajoutez des éléments au tableau d'alias comme ceci:

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

Et vous pouvez utiliser ces commandes:

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

La sortie sera toujours:

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

Liste des noms:

drush sqlq "SELECT name FROM node_type;"

Liste des noms de machine:

drush sqlq "SELECT type FROM node_type;"

Cela fonctionne en D6 et D7.

La première ligne de la sortie de la commande sera nameou type, respectivement. Pipe |tail -n +2si vous voulez supprimer cette première ligne.

kqw
la source
essayer mais obtenir des erreurs:$ 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, je viens de vérifier à nouveau cela, fonctionne très bien. Avez-vous un préfixe_table sur ce site? Qu'est-ce que ça drush sqlq "SHOW TABLES;"|grep typevous donne?
kqw
oui j'ai un préfixe mais votre commande me donne une liste de tables. c'est la bonne commande: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf
10

Essayez les commandes suivantes.

Drupal 7 et 8

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

Drupal 5 et 6

drush ev "print_r(array_keys(node_get_types()));"
Kenorb
la source
5

Si vous savez comment le faire dans Drupal, il vous suffit d'utiliser 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"; }'

Voir cette liste de commandes drush pour d'autres exemples utiles utilisant eval.

Pere
la source