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.


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

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.


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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.