Làm thế nào tôi có thể nhận được một danh sách các loại nội dung với drush?


13

Làm cách nào tôi có thể nhận được danh sách loại nội dung hiện có với drush? Điều này sẽ cho phép tôi nhanh chóng tạo ra một danh sách.

Tôi đã thử với:

$ drush @d6 @sites genc --types

Nhưng tôi cần devel_generatesmô-đun kích hoạt cho việc này.

Lệnh genc cần kích hoạt (các) mô-đun sau để chạy: devel_generate.


cách dễ nhất là mở quản trị / cấu trúc / loại
xurshid29

1
Tại sao bạn không kích hoạt nó sau đó?
Mołot

bởi vì mô-đun này không cung cấp danh sách các loại nội dung..thực tế tôi làm điều đó bằng cách sao chép / dán danh sách từ quản trị viên / nội dung / loại / danh sách
quản trị trang web pf

genc được sử dụng từ devel_generate để tạo nội dung mới, điều này sẽ không hiển thị cho bạn các loại nội dung hiện có.
Andre Baumeier

Câu trả lời:


6

Bạn có thể tạo một lệnh drush có tên content-type-list. Tạo một mô-đun có tên drush_content_types, bên trong drush_content_types.drush.inctệp đặt mã này:

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

Cài đặt mô-đun, chạy drush cc drushđể xóa bộ đệm ẩn và sử dụng lệnh như thế này:

drush ctl

hoặc là

drush content-type-list

Nếu bạn muốn thêm một bí danh khác vào lệnh, hãy thêm các phần tử vào mảng bí danh như thế này:

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

Và bạn có thể sử dụng các lệnh này:

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

Luôn luôn đầu ra sẽ là:

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

12

Danh sách tên:

drush sqlq "SELECT name FROM node_type;"

Danh sách tên máy:

drush sqlq "SELECT type FROM node_type;"

Điều này hoạt động trong D6 và D7.

Dòng đầu tiên của đầu ra của lệnh sẽ tương ứng namehoặc type. Ống |tail -n +2nếu bạn muốn thả dòng đầu tiên.


cố gắng nhưng gặp lỗi:$ 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
quản trị trang web pf

1
@webmaster_pf, tôi vừa kiểm tra lại, hoạt động tốt. Bạn có bảng_prefix trên trang web này không? Điều gì drush sqlq "SHOW TABLES;"|grep typemang lại cho bạn?
kqw

vâng tôi có tiền tố nhưng lệnh của bạn cho tôi một danh sách các bảng. Đây là lệnh đúng: drush sqlq "SHOW TABLES;" | grep content_type
quản trị trang web pf

10

Hãy thử các lệnh sau.

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

Nếu bạn biết cách thực hiện trong Drupal, bạn chỉ cần sử dụng 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"; }'

Xem danh sách các lệnh drush này cho các ví dụ hữu ích khác bằng cách sử dụng eval.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.