Có cách nào để xuất tất cả các danh mục vào một csv không?


7

Có cách nào để xuất tất cả các danh mục vào một csv không?

Tôi đang chuyển dữ liệu từ một cửa hàng không phải là magento sang một bản dựng mới.

Câu trả lời:


16

Bạn có thể viết cái này khá dễ dàng. Tạo một tập tin php gọi là một cái gì đó như export.php.

<?php

require("app/Mage.php");  // load the main Mage file
Mage::app();   // not run() because you just want to load Magento, not run it.

// load all of the active categories in the system and include all attributes
$categories = Mage::getModel('catalog/category')
              ->getCollection()
              ->addAttributeToSelect('*')
              ->addIsActiveFilter();

 $export_file = "var/export/categories.csv"; // assumes that you're running from the web root. var/ is typically writable
 $export = fopen($export_file, 'w') or die("Permissions error."); // open the file for writing.  if you see the error then check the folder permissions.

 $output = "";

 $output = "id,name\r\n"; // column names. end with a newline.
 fwrite($export, $output); // write the file header with the column names


 foreach ($categories as $category) {
     $output = ""; // re-initialize $output on each iteration
     $output .= $category->getId().','; // no quote - integer
     $output .= '"'.$category->getName().'",'; // quotes - string
     // add any other fields you want here 
     $output .= "\r\n"; // add end of line
     fwrite($export, $output); // write to the file handle "$export" with the string "$output".
 }

 fclose($export); // close the file handle.

Bạn có thể viết một bản nhập theo cách tương tự, nhưng sử dụng Mage::getModel('catalog/category')với các bộ ma thuật để điền vào các trường để tạo các danh mục mới trong khi phân tích tệp bạn đã tạo.


Cám ơn vì cái này. Tôi đã phải sử dụng addlash ( php.net/manual/en/feft.addslashes.php ) xung quanh tên danh mục của mình.
Andy Triggs

Làm thế nào tôi có thể nhập, cần trợ giúp ..
matinict

@matinict: Bạn có thể sử dụng magmi, sản phẩm tốt nhất để nhập khẩu sản phẩm
Gem

@ seanbreeden: Giống như cách này, bất kỳ tập lệnh nào để xuất tất cả các sản phẩm
Gem

Làm cách nào tôi có thể xuất sku và đường dẫn danh mục, không phải tên danh mục

2

Không quan tâm đến câu trả lời @seanbreeden vì nó không hoạt động đúng nếu bạn xuất mô tả danh mục và họ có HTML hoặc trả về trong bất kỳ trường nào trong danh mục như mô tả, v.v.

Đây là giải pháp của tôi (mà bạn truy cập trong trình duyệt và nó tải xuống):

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=report.csv');

// Load the Magento core
require_once 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);

// Load the category collection
$categories = Mage::getModel('catalog/category')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addIsActiveFilter();

// create a file pointer connected to the output stream
// can change this so it downloads it to a file on the server
$output = fopen('php://output', 'w');

// output the column headings
fputcsv($output, array('id', 'name', 'description', 'title', 'meta_description'));

foreach ($categories as $category) {
    $id = $category->getId();
    $name = $category->getName();
    $description = $category->getDescription();
    $title = $category->getMetaTitle();
    $metaD = $category->getMetaDescription();

    fputcsv($output, array($id, $name, $description, $title, $metaD));
} 

1

Bạn có thể sử dụng Varien_File_Csv::saveData($file, $data). Tôi đoán nó dễ dàng hơn sau đó sử dụng fopen, fwrite... trực tiếp. Ngoài ra, bạn không phải chăm sóc quyền, khi tạo thư mục xuất mới. Để thêm các trường, bạn chỉ cần thay đổi $columnsbiến.

Điều này sẽ lưu CSV của bạn vào var/export/...

require_once('app/Mage.php');
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

/** @var array $columns matches atttribute code*/
$columns = array(
    'entity_id',
    'path',
    'name',
    'description',
);

$data = array(
    $columns,
);

$categories = Mage::getResourceModel('catalog/category_collection')
    ->addAttributeToSelect($columns);
    //->addIsActiveFilter();

foreach ($categories as $category) {
    $row = array();
    foreach ($columns as $column) {
        $row[] = $category->getData($column);
    }
    $data[] = $row;
}

$path = Mage::getBaseDir('var') . DS . 'export' . DS . 'your_directory';
$file = 'categories.csv';

// create directory under var/export
$io = new Varien_Io_File();
$io->checkAndCreateFolder($path);

$csv = new Varien_File_Csv();
$csv->setEnclosure('|'); # change enclosure to work with html
$csv->saveData($path . DS. $file, $data);

Ngoài ...

|entity_id|,|path|,|name|,|description|
|1|,|1|,|Root Catalog|,||
|2|,|1/2|,|Default Category|,||
|4|,|1/2/4|,|Dogs|,|<span class="empty"><span>|


0

Mặc dù bạn đã chấp nhận câu trả lời, tôi nghĩ phương pháp Easiet là xuất tất cả các sản phẩm sang CSV và sau đó sử dụng excel để phân biệt trường danh mục.

Sử dụng mã hoặc tiện ích mở rộng nếu xuất một lần trong một thời gian, sẽ lãng phí thời gian và là một lớp khác mà bạn cần hỗ trợ trong tương lai.


-1

Đầu tiên hãy để tôi xin lỗi vì không có một mã ưa thích để thể hiện các kỹ năng lập trình mà tôi không có.

Đây là cách tôi đã làm, chỉ đơn giản là tạo ra một sản phẩm có tên là "0000allcatagories" và chỉ cần biến sản phẩm đó (thông qua rất nhiều lần nhấp) trở thành thành viên của tất cả các catagories của tôi. Xuất đơn giản sang CSV và viola, một danh sách tất cả các catagories ..... bây giờ nếu tôi chỉ có thể tìm ra cách làm tương tự với các thuộc tính B)

tôi đã tìm thấy một chương trình gọi là "tải lên catagory cho magento" ... đó là một công việc rất tốt để tải xuống catagories ... và nếu bạn có thể chỉnh sửa bảng tính, bạn cũng có thể tải lên catagories .... rất hay.

chúc may mắn

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.