Wie kann ich mit drush eine Liste der Inhaltstypen abrufen?

13

Wie kann ich die vorhandene Liste der Inhaltstypen mit drush abrufen? Dadurch kann ich schnell eine Liste erstellen.

Ich habe versucht mit:

$ drush @d6 @sites genc --types

Dafür muss das devel_generatesModul aktiviert sein.

Für den Befehl genc müssen die folgenden Module aktiviert sein: devel_generate.

Webmaster pf
quelle
Am
1
Warum aktivieren Sie es dann nicht?
Mołot
da dieses modul keine liste der inhaltstypen enthält..aktuell mache ich das durch kopieren / einfügen der liste von admin / content / types / liste
webmaster pf
genc wird von devel_generate verwendet, um neuen Inhalt zu generieren. Dies zeigt keine vorhandenen Inhaltstypen an.
Andre Baumeier

Antworten:

6

Sie können einen Drush-Befehl mit dem Namen erstellen content-type-list. Erstellen Sie ein Modul mit dem Namen drush_content_types, und fügen Sie in die drush_content_types.drush.incDatei den folgenden Code ein:

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

Installieren Sie das Modul, führen Sie es aus drush cc drush, um den Cache zu leeren, und verwenden Sie den folgenden Befehl:

drush ctl

oder

drush content-type-list

Wenn Sie dem Befehl einen weiteren Alias ​​hinzufügen möchten, fügen Sie dem Alias-Array Elemente wie folgt hinzu:

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

Und Sie können diese Befehle verwenden:

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

Die Ausgabe lautet immer:

Machine name:
content 1
content 2
content...
content n
Adrian Cid Almaguer
quelle
12

Namensliste:

drush sqlq "SELECT name FROM node_type;"

Liste der Maschinennamen:

drush sqlq "SELECT type FROM node_type;"

Dies funktioniert in D6 und D7.

Die erste Zeile der Ausgabe des Befehls wird nameoder type, respectively. Pipe, |tail -n +2wenn du die erste Zeile fallen lassen willst.

kqw
quelle
versuche aber erhalte fehler:$ 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, ich habe das gerade nochmal überprüft, funktioniert einwandfrei. Haben Sie ein table_prefix auf dieser Site? Was gibt drush sqlq "SHOW TABLES;"|grep typedir
KW
Ja, ich habe ein Präfix, aber Ihr Befehl gibt mir eine Liste von Tabellen. Dies ist der richtige Befehl: drush sqlq "SHOW TABLES;" | grep content_type
Webmaster vom
10

Probieren Sie die folgenden Befehle aus.

Drupal 7 & 8

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

Drupal 5 & 6

drush ev "print_r(array_keys(node_get_types()));"
Kenorb
quelle
5

Wenn Sie wissen, wie man es in Drupal macht, müssen Sie nur Folgendes verwenden 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"; }'

In dieser Liste der drush-Befehle finden Sie weitere nützliche Beispiele für die Verwendung von eval.

Pere
quelle