Bagaimana saya bisa mendapatkan daftar jenis konten dengan drush?

14

Bagaimana saya bisa mendapatkan daftar jenis konten yang ada dengan drush? Ini akan memungkinkan saya untuk dengan cepat menghasilkan daftar.

Saya sudah mencoba:

$ drush @d6 @sites genc --types

Tapi saya perlu devel_generatesmodul yang diaktifkan untuk ini.

Perintah genc membutuhkan modul-modul berikut diaktifkan untuk dijalankan: devel_generate.

webmaster hal
sumber
cara termudah adalah membuka admin / struktur / jenis
xurshid29
1
Mengapa Anda tidak mengaktifkannya?
Mołot
karena modul ini tidak memberikan daftar jenis konten .. sebenarnya saya melakukannya dengan menyalin / menempelkan daftar dari admin / konten / jenis / daftar
webmaster pf
genc digunakan dari devel_generate untuk menghasilkan konten baru, ini tidak akan menunjukkan kepada Anda jenis konten yang ada.
Andre Baumeier

Jawaban:

6

Anda dapat membuat perintah drush bernama content-type-list. Buat modul bernama drush_content_types, di dalam drush_content_types.drush.incfile letakkan kode ini:

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

Instal modul, jalankan drush cc drushuntuk menghapus cache drush dan gunakan perintah seperti ini:

drush ctl

atau

drush content-type-list

Jika Anda ingin menambahkan alias lain ke perintah tambahkan elemen ke array alias seperti ini:

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

Dan Anda dapat menggunakan perintah ini:

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

Outputnya selalu:

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

Daftar nama:

drush sqlq "SELECT name FROM node_type;"

Daftar nama mesin:

drush sqlq "SELECT type FROM node_type;"

Ini bekerja di D6 dan D7.

Baris pertama dari output perintah akan masing-masing nameatau type. Pipa |tail -n +2jika Anda ingin menjatuhkan baris pertama itu.

kqw
sumber
mencoba tapi mendapatkan error:$ 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, saya baru memeriksanya lagi, berfungsi dengan baik. Apakah Anda memiliki table_prefix di situs ini? Apa yang drush sqlq "SHOW TABLES;"|grep typememberimu?
kqw
ya saya punya awalan tetapi perintah Anda memberi saya daftar tabel. ini adalah perintah yang tepat: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf
10

Coba perintah berikut.

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
sumber
5

Jika Anda tahu cara melakukannya di Drupal, Anda hanya perlu menggunakan 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"; }'

Lihat daftar ini perintah drush untuk contoh berguna lainnya menggunakan eval.

Pere
sumber