Как я могу получить список типов контента с помощью Drush?


14

Как я могу получить существующий список типов контента с помощью Drush? Это позволит мне быстро составить список.

Я пробовал с:

$ drush @d6 @sites genc --types

Но мне нужен devel_generatesмодуль для этого.

Для запуска команды genc необходимо включить следующие модули: devel_generate.


самый простой способ - открыть admin / structure / types
xurshid29

1
Почему бы вам не включить его тогда?
Молот

потому что этот модуль не дает список типов контента .. на самом деле я делаю это путем копирования / вставки списка из admin / content / types / list
веб-мастер pf

genc используется из devel_generate для создания нового контента, он не будет показывать вам существующие типы контента.
Андре Баумайер

Ответы:


6

Вы можете создать команду drush с именем 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

1
@webmaster_pf, я только что проверил это снова, отлично работает. У вас есть table_prefix на этом сайте? Что drush sqlq "SHOW TABLES;"|grep typeтебе дает?
kqw

да, у меня есть префикс, но ваша команда выдает мне список таблиц. Это правильная команда: drush sqlq "SHOW TABLES;" | grep content_type
webmaster 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.