Điểm:0

Làm cách nào tôi có thể cập nhật ngày nút cho tất cả các nút

lá cờ cn

Tôi đã nhập một số nút vào Drupal 9 mới được cài đặt. Sau đó, ngày tạo nội dung ban đầu (từ trang web trước) trở nên quan trọng.

Tôi có thông tin theo id nút mới. Không biết cập nhật ở đâu?

Tôi đã cố gắng cập nhật các cột đã tạo và thay đổi trong bảng node_field_data, nhưng trong danh sách nội dung tôi vẫn thấy ngày nhập... Tôi nên tìm ở đâu? (tất nhiên tôi sẵn sàng nhận các đề xuất với các mô-đun, thủ thuật trong giao diện quản trị, v.v., tôi nghĩ việc cập nhật bảng sql sẽ dễ dàng hơn).

Điểm:0
lá cờ in

Trước hết, tôi sẽ tránh càng nhiều càng tốt việc cập nhật cơ sở dữ liệu trực tiếp cho các thực thể. Mô hình thực thể của Drupal 8+ được liên kết chặt chẽ với các lớp trừu tượng của nó, được triển khai dưới dạng móc nối. Phương pháp hay nhất được coi là luôn sửa đổi các thực thể thông qua API thực thể. Điều này sẽ cho phép Drupal giữ mọi thứ đồng bộ.

Bây giờ, câu trả lời ngắn gọn cho câu hỏi của bạn là việc xóa bộ nhớ cache trên trang web của bạn có thể sẽ dẫn đến các giá trị mới được hiển thị.

Câu trả lời tốt hơn là viết một số PHP để lặp qua tất cả các nút và cập nhật ngày tạo nội dung của chúng thông qua API thực thể. Tôi thường sử dụng Drush để thực hiện các loại thao tác này. Dưới đây là một ví dụ phù hợp với nhu cầu của bạn, dựa trên giả định sau:

  • Bạn đã tải các giá trị nút: ngày của mình vào một mảng có tên $new_node_dates, trong đó các khóa là NID và các giá trị là Dấu thời gian Unix đại diện cho ngày tạo mới. Xem tại đây để biết ví dụ về đọc tệp CSV thành một mảng. Nếu ngày không ở định dạng dấu thời gian Unix, bạn có thể sử dụng strtotime() để chuyển đổi chúng.

Câu lệnh Drush sau đó sẽ là:

drush eval '$node_storage = \Drupal::entityTypeManager()->getStorage("node"); foreach($new_node_dates as $nid => $creation_date) { $node = $node_storage->load($nid); $node->created = $creation_date; $node->save(); }'

May mắn nhất!

loker avatar
lá cờ cn
Cảm ơn bạn đã trả lời chi tiết và giải thích độc đáo của bạn. Hoạt động như một cơ duyên, và tôi cũng có một cách tiếp cận mới ...

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.