Gibt es eine Möglichkeit, alle Kategorien in eine CSV zu exportieren?

7

Gibt es eine Möglichkeit, alle Kategorien in eine CSV zu exportieren?

Ich verschiebe Daten aus einem Nicht-Magento-Geschäft in einen neuen Build.

Matthew McLennan
quelle

Antworten:

16

Sie könnten dieses ziemlich leicht schreiben. Erstellen Sie eine PHP-Datei namens so etwas wie 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.

Sie können einen Import auf ähnliche Weise schreiben, aber Mage::getModel('catalog/category')mit magischen Sätzen die Felder ausfüllen, um neue Kategorien zu erstellen, während Sie die von Ihnen erstellte Datei analysieren.

Seanbreeden
quelle
Danke dafür. Ich musste Addslashes ( php.net/manual/en/function.addslashes.php ) um meine Kategorienamen verwenden.
Andy Triggs
Wie kann ich importieren, brauche Hilfe ..
Matinict
@matinict: Sie können Magmi verwenden, es ist am besten für den Import von Produkten
Gem
@ Seanbreeden: Wie auf diese Weise jedes Skript für den Export aller Produkte
Gem
Wie kann ich SKU und Kategorie Pfad exportieren, nicht Kategoriename
2

Ich war nicht begeistert von der Antwort von @seanbreeden, da es nicht richtig funktioniert, wenn Sie die Kategoriebeschreibung exportieren und sie HTML haben oder in einem der Felder der Kategorie wie Beschreibung usw. zurückkehren.

Hier ist meine Lösung (die Sie im Browser besuchen und herunterladen):

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));
} 
Oli Girling
quelle
1

Sie können verwenden Varien_File_Csv::saveData($file, $data). Ich denke , es einfacher dann mit fopen, fwrite, ... direkt. Außerdem müssen Sie beim Erstellen eines neuen Exportverzeichnisses nicht auf Berechtigungen achten. Um Felder hinzuzufügen, müssen Sie nur die $columnsVariable ändern .

Dadurch wird Ihre CSV gespeichert 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);

Aus ...

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

Matt, In Magento finden Sie viele Erweiterungen, die in der Kategorie Export / Import in CSV enthalten sind. Mit dieser Option können Sie Ihre Anforderungen erfüllen

Aus meiner Sicht am besten in freier Erweiterung für diesen Zweck, wenn:

Magentoworks.net

Bezahlt:

MagentoCommerce

Handelserweiterungen

Weitere Erweiterungen in MagentoConnection hier

Amit Bera
quelle
0

Obwohl Sie eine Antwort akzeptiert haben, besteht meiner Meinung nach die einfachste Methode darin, alle Produkte in CSV zu exportieren und dann das Kategoriefeld mit Excel zu unterscheiden.

Die Verwendung von Code oder Erweiterungen für gelegentliche Exporte ist Zeitverschwendung und eine weitere Klasse, die Sie in Zukunft unterstützen müssen.

James Roeiter
quelle
-1

Lassen Sie mich zunächst entschuldigen, dass ich keinen ausgefallenen Code habe, um meine Programmierkenntnisse zu demonstrieren.

So habe ich es gemacht, einfach ein Produkt namens "0000allcatagories" erstellt und dieses Produkt (über viele Klicks) zu einem Mitglied aller meiner Kategorien gemacht. Ein einfacher Export in eine CSV und eine Bratsche, eine Liste aller Kategorien ..... wenn ich nur herausfinden kann, wie man dasselbe mit Attributen macht B)

Ich habe ein Programm namens "catagory upload for magento" gefunden, das sehr gute Arbeit beim Herunterladen von Kategorien leistet ... und wenn Sie eine Tabelle bearbeiten können, können Sie auch Kategorien hochladen ... sehr schön.

Viel Glück

die Realität
quelle