Jak mogę uzyskać listę rodzajów zawartości za pomocą drush?

14

Jak mogę uzyskać istniejącą listę typów zawartości za pomocą drush? Pozwoli mi to szybko stworzyć listę.

Próbowałem z:

$ drush @d6 @sites genc --types

Ale potrzebuję do tego devel_generatesmodułu włączonego.

Polecenie genc wymaga włączonych następujących modułów: devel_generate.

webmaster pf
źródło
najprostszym sposobem jest otwarcie admin / structure / types
xurshid29
1
Dlaczego więc go nie włączysz?
Mołot,
ponieważ ten moduł nie podaje listy typów treści. w rzeczywistości robię to, kopiując / wklejając listę z admin / content / types / list
webmaster pf
genc jest używany z devel_generate do generowania nowej zawartości, to nie pokaże istniejących typów treści.
Andre Baumeier,

Odpowiedzi:

6

Możesz utworzyć komendę drush o nazwie content-type-list. Utwórz moduł o nazwie drush_content_types, w drush_content_types.drush.incpliku umieść ten kod:

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

Zainstaluj moduł, uruchom, drush cc drushaby wyczyścić pamięć podręczną drush i użyj następującego polecenia:

drush ctl

lub

drush content-type-list

Jeśli chcesz dodać kolejny alias do polecenia, dodaj elementy do tablicy aliasów w następujący sposób:

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

I możesz użyć tych poleceń:

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

Zawsze wynik będzie:

Machine name:
content 1
content 2
content...
content n
Adrian Cid Almaguer
źródło
13

Lista nazwisk:

drush sqlq "SELECT name FROM node_type;"

Lista nazw komputerów:

drush sqlq "SELECT type FROM node_type;"

Działa to w D6 i D7.

Pierwszym wierszem danych wyjściowych polecenia będzie odpowiednio namelub type. Ruruj, |tail -n +2jeśli chcesz upuścić pierwszą linię.

kqw
źródło
próbuję uzyskać błędy:$ 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, właśnie to sprawdziłem, działa dobrze. Czy masz na tej stronie prefiks_tabeli? Co drush sqlq "SHOW TABLES;"|grep typeci daje
kqw
tak, mam prefiks, ale twoje polecenie daje mi listę tabel. to jest właściwe polecenie: drush sqlq "SHOW TABLES;" | grep content_type
webmaster pf
10

Wypróbuj następujące polecenia.

Drupal 7 i 8

drush ev "print_r(array_keys(node_type_get_types()));"

Drupal 5 i 6

drush ev "print_r(array_keys(node_get_types()));"
kenorb
źródło
5

Jeśli wiesz, jak to zrobić w Drupal, wystarczy użyć 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"; }'

Zobacz listę poleceń drush, aby zapoznać się z innymi przydatnymi przykładami użycia eval.

Pere
źródło