Измените настройки модуля, хранящиеся в массиве, с помощью drush
Я хотел бы настроить параметры модуля (addtoany) с помощью drush. Это переменная:
addtoany_nodetypes: Array
(
[about_us] => about_us
[contact] => contact
[page] => page
[legal] => 0
[webform] => 0
)
Так что, например:
[page] => page
[legal] => 0
Становится
[page] => 0
[legal] => legal
Но я довольно новичок в drush и нахожусь в полной растерянности. Спасибо, что уделили мне время.
2 answers
Drush не имеет никакого механизма для преобразования аргументов командной строки в массивы php для команды набора переменных; однако легко писать короткие фрагменты php с помощью команды php-eval ("ev" для краткости).
Например, если вы настроили псевдоним сайта для своего сайта под названием "@сайт":
$ drush @site ev 'variable_set("addtoany_nodetypes", array("about_us" => "about_us", "contact" => "contact", "page" => "page", "legal" => 0, "webform" => 0));'
$ drush @site vget addtoany_nodetypes
addtoany_nodetypes: Array
(
[about_us] => about_us
[contact] => contact
[page] => page
[legal] => 0
[webform] => 0
)
$ drush @site ev '$v = variable_get("addtoany_nodetypes", array()); $v["page"] = 0; $v["legal"] = "legal"; variable_set("addtoany_nodetypes", $v);'
$ drush @site vget addtoany_nodetypes
addtoany_nodetypes: Array
(
[about_us] => about_us
[contact] => contact
[page] => 0
[legal] => legal
[webform] => 0
)
Если вы не используете псевдоним сайта, перейдите на компакт-диск в корневой каталог Drupal вашего сайта (или на компакт-диск в папку "Сайты", содержащую settings.php при использовании мультисайта) и удалите "@сайт" из приведенных выше примеров.
Как указано в справочной документации drush drush help variable-set
рекомендуемый способ установки переменной массива - использовать формат=json:
php -r "print json_encode(array('drupal', 'simpletest', 'leftandright', 'category'));" | drush vset --format=json project_dependency_excluded_dependencies -
Не забывайте о "-" в конце концов.