2012-11-08 38 views
5

Tôi đang trong quá trình xác định cách tốt nhất để lập trình thêm Danh mục vào Sản phẩm. Danh mục được lấy từ dữ liệu của bên thứ ba bên ngoài cài đặt Magento, sau đó phân tích dữ liệu này và muốn cập nhật Magento: bảng catalog_category_product, kết hợp các danh mục tìm thấy với các sản phẩm tương ứng của chúng.Magento, thêm lập trình danh mục vào các sản phẩm trong kịch bản với SQL

Sau khi thêm một loại hiệp hội sản phẩm trong "catalog_category_product" như kiểm tra, hạng mục đã không xuất hiện trên trang web magento front-end. Sau khi tìm kiếm thêm, tôi đã thêm một mục vào bảng "catalog_category_product_index", sản phẩm hiện hiển thị trong danh mục thích hợp trên trang web front-end.

Đây có phải là tất cả những gì cần thiết không? Tôi sợ có thêm các móc sự kiện magento gắn liền với Sản phẩm và Danh mục và họ có thể cập nhật các bảng bổ sung mà tôi không biết.

Tôi có thể thêm hàng để hai bảng này với SQL mà không cần sự cố, hay tôi cần phải tải các ứng dụng magento và thực hiện điều này thông qua các mô hình EAV sản phẩm và loại? Có phải tôi đang trên đường ray bên phải không?

Cập nhật

Tôi không thực sự 'nhập khẩu' bất kỳ dữ liệu mới. Các Sản phẩm và Danh mục đã có sẵn trong hệ thống. Tôi cũng không thêm bất kỳ người quan sát tùy chỉnh nào và đang sử dụng các mô hình Sản phẩm và Danh mục vani.

Tôi đang phân tích các tập tin văn bản để có được các giá trị thích hợp và sau đó sử dụng câu lệnh UPDATE SQL đơn giản.

Tôi chỉ muốn đảm bảo rằng bằng cách thực hiện tuyến đường này, các bảng duy nhất tôi cần cập nhật theo chương trình là 'catalog_category_product' và 'catalog_category_product_index'.

Trả lời

4

Cá nhân tôi không khuyên bạn nên sử dụng SQL đơn giản chứ không phải sử dụng API như:

define('MAGENTO', realpath(dirname(__FILE__))); 
require_once MAGENTO . '/app/Mage.php'; 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

// Load products 
$products = Mage::getModel('catalog/product') 
      ->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID) 
      ->getAll(); 

// Load categories 
$category = Mage::getModel('catalog/category'); 
      ->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID); 
$categories = $category->getAll(); 
foreach($products as $product) { 
    // Get relevant category 
    $product->setCategoryIds(array($category->getId())); 
    $product->save(); 
} 

Đoạn mã trên là ví dụ rất thô nhưng với vài tinh chỉnh nên thực hiện công việc. Nếu bạn sử dụng SQL đơn giản, bạn có nguy cơ phá vỡ dữ liệu hoặc các mối quan hệ của bạn nhưng việc sử dụng API Magento sẽ xử lý nó phù hợp với bạn.

+1

Cảm ơn bạn rất nhiều. Tôi nghĩ rằng tôi sẽ đi xuống một số biến thể của tuyến đường này. – Jarrod

0

Làm cách nào để bạn liên kết danh mục và sản phẩm của mình? Bạn đã mã hóa một cái gì đó cụ thể? Nếu có: Hiển thị một số mã.

Dù sao, Magento cung cấp nhiều cách để thực hiện những gì bạn cần trong TIÊU CHUẨN. Nhìn vào BackOffice trong menu: Hệ thống/Nhập-Xuất khẩu

Có 2 differents phương pháp trong magento:

  • hồ sơ Dataflow: nó hoạt động với mô hình và là khá chậm (nhưng bằng cách gọi -> tiết kiệm() và -> tải() trên tất cả các kiểu máy của bạn, nó đảm bảo rằng bất kỳ Máy quan sát nào bạn thêm vào sẽ được gọi !!)

  • Cấu hình Nhập/Xuất mới: nó hoạt động với các truy vấn SQL thuần túy và khá nhanh mã hóa cứng như vậy ... hãy nói lời tạm biệt với bất kỳ người quan sát tùy chỉnh tải/lưu nào bạn đã thêm)

Giống như bạn nói, Magento có sự kiện móc liên quan đến sản phẩm và chủng loại (và tất cả các mô hình khác). Trong khi tiết kiệm gọi lại của một sản phẩm, chủng loại, ví dụ, magento sẽ reindex tất cả các chỉ số liên quan như catalog_category_index bạn cố gắng thêm bằng tay ..

Vì vậy:

  • không làm điều đó cho mình , sử dụng các cấu hình Nhập/Xuất Magento, cấu hình Dataflow hoặc API.
  • tùy thuộc vào số lượng sản phẩm/danh mục bạn có, chọn Quyền nhập để sử dụng (xem ở trên, sự khác biệt).Dataflow là chậm hơn nhưng sử dụng mô hình ..
+0

Cảm ơn bạn, tôi đã cập nhật bài đăng đầu tiên để cố gắng trả lời một số câu trả lời của bạn. Tôi không thể đăng mã vì nó là độc quyền, nhưng nó là một tập lệnh PHP thuần túy thao tác dữ liệu văn bản và sử dụng SQL để cập nhật các bảng magento. – Jarrod

Các vấn đề liên quan