Có cách nào để di chuyển chỉ các nút?


7

Tôi không muốn thực hiện một cuộc di cư đầy đủ. Tôi muốn di chuyển chỉ và duy nhất các Nút (tốt nhất là với siêu dữ liệu Metatag của họ ). Không phải Lượt xem, Không phải Bảng điều khiển, Không phải bối cảnh, không phải chuyển hướng URL - Chỉ các nút ...

Tôi hỏi điều này sau khi gặp một số rắc rối trong bản nâng cấp D7 >> D8 đầy đủ và khi sử dụng mô-đun Nâng cấp Drupal (tôi thậm chí đã mở một chủ đề liên quan đến nó ở đây trong DA ). Do đó, tôi đang tìm cách để chỉ di chuyển một phần hoặc thực hiện di chuyển theo từng phần.

Có thể liên quan đến các nút?


1
Tôi sẽ đề xuất xuất sang XML và sử dụng Nguồn cấp dữ liệu để nhập, nhưng vì "Mô-đun này hiện đang được chuyển sang Drupal 8, nhưng chưa thể sử dụng được." Nó không phải là một lựa chọn. Chưa.
Mołot

hãy xem drupal.org/project/bundle_copy nó chỉ xuất cấu trúc chứ không phải dữ liệu và sau đó sử dụng mô-đun nguồn cấp dữ liệu để xuất dữ liệu nhập khẩu
Bala

@Bala, bạn đã thử nó về D7 >> Di chuyển D8 chưa? Hoặc ít nhất, bạn nghĩ rằng nó có khả năng làm việc nhất?

@benos chưa! Tôi đang đề xuất tùy chọn, tùy thuộc vào bạn
Bala

Câu trả lời:


9

Bạn không cần phải thực hiện di chuyển đầy đủ. Bạn có thể khởi tạo quy trình Nâng cấp bằng cách kết nối với trang web cũ và nó sẽ tạo ra các lần di chuyển. Sau đó, bạn có thể, thay vì thực thi chúng một cách tự động, chỉ chạy một số trong số chúng với giao diện người dùng được cung cấp bởi dự án nâng cấp (tôi nghĩ sao?).

Tuy nhiên, di cư có phụ thuộc. Để có thể chạy di chuyển nút, theo mặc định, bạn phải chạy một vài thứ khác, ví dụ người dùng, định dạng văn bản và cả các trường.

Bạn có thể cố gắng thay đổi điều đó bằng cách chỉnh sửa các di chuyển đã tạo bằng cush drush hoặc export / import. Tôi tin rằng ai đó cũng đang làm việc trên một giao diện người dùng cho nó.

Bạn cũng có thể tùy chỉnh bất kỳ ánh xạ nào và cách các trường được di chuyển. Hành vi mặc định là mọi trường và cấu hình được di chuyển 1: 1 nhưng thành thật mà nói, tôi không thể tưởng tượng đó là điều mà hầu hết các trang web sẽ muốn làm. Thay vào đó, tôi tưởng tượng họ xây dựng một trang web D8 mới và sau đó nhập nội dung.

Xem tài liệu di chuyển . Ngoài ra còn có rất nhiều bài viết blog có sẵn xung quanh chủ đề đó nhưng đó không phải là một việc nhỏ.

Ngoài ra, bạn có thể thử xuất / nhập nội dung của mình, như được đề cập trong Nhận xét, Nguồn cấp dữ liệu chưa hoàn toàn sẵn sàng, nhưng bạn có thể sử dụng xuất và nhập lượt xem bằng cách viết một số mã tùy chỉnh.


Tôi rất tiếc khi sử dụng rằng tôi đã gặp sự cố nghiêm trọng (kéo dài đến tận bây giờ) với mô-đun Nâng cấp Drupal và có vẻ như tôi không thể sử dụng nó. Tôi đã mô tả chi tiết ở đây: drupal.stackexchange.com/questions/185364/ dọa

Berdir, bạn đã viết "Tôi tưởng tượng họ xây dựng một trang web D8 mới và sau đó nhập nội dung." Chà, nghe có vẻ tuyệt vời đối với tôi, Có cách nào để nhập nội dung trực tiếp không? Ý tôi là có một bot đang viết lại tất cả các nút trong một trang D7 thành một trang D8 trên cùng một máy chủ, mà không sử dụng các mô-đun hiện tại (dường như vẫn đang thử nghiệm)?

Bây giờ tôi cũng sẽ kiểm tra các liên kết nhưng nếu bạn có thể trả lời ở đây về câu hỏi của tôi ở trên bằng lời nói của bạn thì nó có thể rất tuyệt vời,

5

Di chuyển là một chút trọng lượng nặng cho việc này. Trong drupal 7 có một số mô-đun chỉ nhập / xuất nội dung. Trong drupal 8, tôi không thể tìm thấy cái nào đã sẵn sàng. Vì vậy, tôi đã ứng biến với một chút mã:

Tôi đã xuất khẩu trong drupal 7 với lượt xem tới csv với sự trợ giúp của mô-đun:

lượt xem_data_export

Trong drupal 8 Tôi đã sử dụng thư viện php:

Parsecsv-for-php

Và mã này:

require_once('parsecsv.lib.php');
$csv = new parseCSV();
$csv->auto($filepath);
foreach ($csv->data as $key => $row) {
  $node = entity_create('node', array('type' => 'article', 'title' => $row['title'], 'uid' => $row['uid']));
  $node->langcode->value = 'en';
  $body = $row['body'];
  $body = str_replace('http://host1.com/', 'http://host2.com/', $body);
  $node->body->value = $body;
  $node->body->format = 'full_html'; 
  ...
  $node->save();
}

Ưu điểm là, bạn có thể tự điều chỉnh, như thay thế đường dẫn từ drupal 7 hoặc đặt ngôn ngữ cố định. Và bạn có thể kiểm tra xem tất cả các phụ thuộc có được đáp ứng hay không, ví dụ uid đã ở đó.


1

Chúng tôi muốn bỏ qua một số loại nội dung khỏi di chuyển khi các mô-đun Di chuyển trong D8 di chuyển tất cả chúng theo mặc định. Chúng tôi đã sử dụng hook_migrate_prepare_row để bỏ qua các loại nội dung trong mô-đun tùy chỉnh của chúng tôi.

function hook_migrate_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) {
  // Ignore content types from being migrated.
  if ($migration->id() == 'd6_node_type') {
    $ignore_content_types = array('content_type1', 'content_type2');
    if (in_array($row->getSource()['type'], $ignore_content_types)) {
      return FALSE;
    }
  }

  // Ignoring content of 4 content types.
  $ignore_content_types_content = array('d6_node__content_type1', 'd6_node__content_type2');
  if (in_array($migration->id(), $ignore_content_types_content)) {
    return FALSE;
  }
}

Thêm thông tin. - https://www.drupal.org/node/2641912

Bạn nhận được danh sách id di chuyển bằng cách sử dụng lệnh di chuyển trạng thái drush và bỏ qua chúng theo yêu cầu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.