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.


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

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.


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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.