Nếu nút nguồn cấp dữ liệu gốc (nhập) không được công bố, làm thế nào để tôi không đưa nó vào lịch trình nhập?


11

Nếu nguồn cấp dữ liệu gốc nhập một nút (biểu mẫu / nút để nhập URL nguồn cấp dữ liệu, không phải là nhà nhập khẩu nguồn cấp dữ liệu) chưa được công bố, tôi muốn có (URL nguồn cấp dữ liệu) không được đưa vào lịch trình cron để cập nhật / nhập các mặt hàng thức ăn. Làm thế nào được thực hiện? Ví dụ: người dùng gửi nguồn cấp dữ liệu, nhưng quản trị viên cần xác minh nó trước khi xuất bản và nhập nó.

Xem thêm Đừng nhập các mục nếu nguồn cấp dữ liệu gốc không được công bố .


Bạn đã có may mắn tìm ra cái này chưa? Tôi đã thử điều này với Trình nhập nguồn cấp dữ liệu mặc định (RSS) và nó dường như hoạt động như mong đợi - nó không nhập khi nút nguồn cấp dữ liệu không được công bố.
Jan Tomka

Hmm, thật kỳ lạ. Một trong những trình nhập nguồn cấp dữ liệu của tôi được cấu hình để sử dụng Trình phân tích cú pháp chung và một trình nhập khác sử dụng Trình phân tích cú pháp QueryPath. Tôi xác nhận rằng nút nguồn cấp dữ liệu (cha mẹ) không được công bố. Bạn có thấy lưu ý rằng nó đang nhập nguồn cấp dữ liệu trên bộ đệm ẩn - đó là số lẻ hoặc bình thường? Nó không nên làm điều đó bất kể tình trạng, phải không? Tôi đang ở địa phương nên cron chưa được thiết lập.
hellomobe

1
Các bài viết được liên kết có nhiều thông tin tốt hơn, thậm chí mã mẫu. Vui lòng xem xét thêm nó vào câu hỏi ở đây.
berkes

Câu trả lời:


1

Có vẻ như, khi một nút được lưu, mô-đun Nguồn cấp dữ liệu bắt đầu nhập nguồn cấp từ nút đó.

function feeds_node_insert($node) {
  // Source attached to node.
  feeds_node_update($node);
  if (isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type)) {
    $source = feeds_source($importer_id, $node->nid);
    // Start import if requested.
    if (feeds_importer($importer_id)->config['import_on_create'] && !isset($node->feeds['suppress_import'])) {
      $source->startImport();
    }
    // Schedule source and importer.
    $source->schedule();
    feeds_importer($importer_id)->schedule();
  }
}

Có một tùy chọn trong trang cài đặt của nhà nhập khẩu được gọi là Nhập khi gửi . Nếu bạn bỏ chọn hộp này, hy vọng nguồn cấp dữ liệu của bạn sẽ không được nhập. Trình duy trì nguồn cấp dữ liệu vẫn cần thực hiện các thay đổi trong feed_cron () để nó không tìm nạp các nút chưa được công bố.

Trong khi bạn chờ sửa lỗi tốt hơn từ các nhà bảo trì mô-đun, bạn có thể nhanh chóng sửa mã này bằng cách thay đổi câu lệnh if đầu tiên để thêm $ node-> status == 1 điều kiện như sau:

if ($node->status==1 && isset($node->feeds) && $importer_id = feeds_get_importer_id($node->type))
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.