Drushでコンテンツタイプのリストを取得するにはどうすればよいですか?


14

drushで既存のコンテンツタイプリストを取得するにはどうすればよいですか?これにより、リストをすばやく作成できます。

私が試した:

$ drush @d6 @sites genc --types

しかしdevel_generates、このためにモジュールを有効にする必要があります。

コマンドgencを実行するには、devel_generateモジュールを有効にする必要があります。


最も簡単な方法は、オープン管理/構成/タイプにある
xurshid29

1
なぜそれを有効にしないのですか?
モウォ2013

このモジュールはコンテンツタイプのリストを提供しないためです。実際には、admin / content / types / listからリストをコピー/ペーストすることでそれを行います
webmaster pf

gencはdevel_generateから使用して新しいコンテンツを生成します。これにより、既存のコンテンツタイプが表示されなくなります。
アンドレボーメイアー

回答:


6

という名前のブラシコマンドを作成できますcontent-type-list。次のコードを入れdrush_content_typesて、drush_content_types.drush.incファイル内にという名前のモジュールを作成します。

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

モジュールをインストールし、実行drush cc drushしてブラシキャッシュをクリアし、次のようなコマンドを使用します。

drush ctl

または

drush content-type-list

コマンドに別のエイリアスを追加する場合は、次のようにエイリアス配列に要素を追加します。

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

そして、次のコマンドを使用できます。

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

常に出力は次のようになります。

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

13

名前のリスト:

drush sqlq "SELECT name FROM node_type;"

マシン名のリスト:

drush sqlq "SELECT type FROM node_type;"

これはD6およびD7で機能します。

コマンドの出力の最初の行は、nameまたはtypeになります。|tail -n +2その最初の行をドロップする場合はパイプします。


しようとしていますが、エラーが発生します:$ 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
ウェブマスターpf 14年

1
@webmaster_pf、これをもう一度確認したところ、正常に動作しています。このサイトにtable_prefixがありますか?何がdrush sqlq "SHOW TABLES;"|grep typeあなたに与えますか?
kqw

はい私は接頭辞を持っているが、あなたのコマンドは、私のテーブル.thisのリストを与えることは右のコマンドです:drush sqlq「SHOWのTABLES;」| grepをCONTENT_TYPE
PFウェブマスター

10

次のコマンドを試してください。

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

Drupalでそれを行う方法を知っている場合は、使用するだけです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"; }'

を使用する他の有用な例については、このdrushコマンドのリストを参照してくださいeval

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.