Drush не предоставляет прямой способ экспорта или импорта меню и узлов. Однако, вы можете использовать модуль Features для выполнения этой задачи. Ниже приведены шаги, которые вы можете следовать для экспорта и импорта меню и узлов с использованием Drush и модуля Features:
1. Установите и включите модуль Features и Drush на вашем сайте Drupal.
2. Создайте новый модуль с помощью Drush команды "drush generate module" или создайте его вручную. Например, назовите его "my_import_export".
3. Включите ваш модуль, добавив его в папку "sites/all/modules" и выполните команду "drush en my_import_export".
4. В вашем модуле my_import_export, создайте файл my_import_export.features.inc и добавьте в него следующий код:
```php
function my_import_export_features_api() {
return array(
'api' => 1,
);
}
function my_import_export_features_export() {
$exports = array();
// Export menu
$menu_name = 'main-menu';
$menu = menu_load($menu_name);
$export = array(
'name' => $menu_name,
'items' => array(),
);
foreach ($menu['links'] as $item) {
$export['items'][] = array(
'title' => $item['title'],
'link_path' => $item['href'],
'menu_name' => $menu_name,
);
}
$exports['menu_' . $menu_name] = $export;
// Export nodes
$nodes = node_load_multiple(array(), array('type' => 'article'));
foreach ($nodes as $node) {
$export = array(
'title' => $node->title,
'type' => 'article',
'body' => $node->body[LANGUAGE_NONE][0]['value'],
// Add any other fields you want to export
);
$exports['node_' . $node->nid] = $export;
}
return $exports;
}
function my_import_export_features_import($module, $api_version, &$sandbox = NULL) {
if ($module == 'my_import_export' && $api_version == 1) {
// Import menu
$menu_names = array('main-menu'); // Add any other menu names you exported
foreach ($menu_names as $menu_name) {
if (isset($sandbox[$menu_name])) {
$menu = $sandbox[$menu_name];
foreach ($menu['items'] as $item) {
$menu_item = array(
'link_title' => $item['title'],
'link_path' => $item['link_path'],
'menu_name' => $item['menu_name'],
);
menu_link_save($menu_item);
}
}
}
// Import nodes
$node_ids = array(); // To prevent duplicate imports
foreach ($sandbox as $key => $value) {
if (strpos($key, 'node_') !== FALSE) {
$node = new stdClass();
$node->type = $value['type'];
$node->title = $value['title'];
$node->language = LANGUAGE_NONE;
$node->uid = 1; // Use the desired user ID
$node->status = 1;
$node->comment = 0;
$node->promote = 0;
$node->sticky = 0;
$node->body[LANGUAGE_NONE][0]['value'] = $value['body'];
node_save($node);
$node_ids[] = $node->nid;
}
}
// Delete previously imported nodes if any
$query = db_select('node', 'n');
$query->fields('n', array('nid'))
->condition('n.nid', $node_ids, 'NOT IN')
->condition('n.type', 'article') // Adjust the node type if needed
->execute()
->fetchAll();
foreach ($query as $node) {
node_delete($node->nid);
}
}
}
```
5. Запустите команду "drush cc all" для очистки кэша Drupal.
6. Далее командой "drush features-export my_import_export" можно выполнить