如何使用drush获取内容类型列表?


14

如何使用drush获取现有的内容类型列表?这将使我快速生成列表。

我尝试过:

$ drush @d6 @sites genc --types

但是我需要devel_generates为此启用模块。

genc命令需要启用以下模块才能运行:devel_generate。


最简单的方法是打开admin / structure / types
xurshid29

1
那为什么不启用它呢?
Mołot

因为此模块未提供内容类型列表。.实际上我是通过admin / content / types / list中的复制/粘贴列表来完成的
网站管理员pf

genc用于devel_generate来生成新内容,这不会向您显示现有的内容类型。
安德烈·鲍米耶

Answers:


6

您可以创建一个名为的drush命令content-type-listdrush_content_typesdrush_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。

命令输出的第一行分别是nametype|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 2015年

是的,我有前缀,但是您的命令给了我一个表列表。这是正确的命令: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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.