0

私の問題は、データをインポートするときに正しいメニュー構造を取得することです。

私はMagento 1.9.2.2を使用しています

次のような CSV 形式でデータを受け取ります。

"sku","Cat1","Cat2","Cat3","Cat4"
"001","Plumbing","Pressfittings & pipes","Unipipe - MLC","Clutch"
"002","Tools","Handtools|Pipetools","Pipetools|Pipecutters & Scissors","Plastic scissors"
"003","Tools|Plumbing","Handtools|Pipetools|Pipes & Fittings","Pipetools|Calibration|Alupex fittings & tubes","Calibration tools|Tools  for alupex"

「|」を取り除く小さなプログラムを作成しました。そしてその後に続くものは次のとおりです。

"002","Tools","Handtools|Pipetools","Pipetools|Pipecutters & Scissors","Plastic scissors"

になります:

"002","Tools","Handtools","Pipetools","Plastic scissors"

しかし、下にあるすべてのカテゴリを作成したいので、sku 002 についてもこれを取得します。

"002","Tools","Pipetools","Pipecutters & Scissors","Plastic scissors"

この構造体はMagentoで何らかの形で使用されていると思いますが、インポートする方法がわかりません。

カテゴリを手動で作成した後、Magento の通常のインポートを試みましたが、うまくいきませんでした。Magmi でも作成してみましたが、Magmi で複数のメイン カテゴリとサブカテゴリを操作することもできません。

このデータ形式を見て、メニュー構造にインポートする方法について正しい方向の手がかりを持っている人はいますか?

メインカテゴリとサブカテゴリを合わせて 2500 あるので、手動で作成してもうまくいきません。

アイデア、質問、コメントは大歓迎です!:)

4

2 に答える 2

0

これらのカテゴリはプログラムで作成する必要があり、インポートでは不可能です(おそらくmagmi経由ですが、わかりません)。スクリプトを magento ルートに配置して実行します。これはあなたが進むことができる方法です(研磨が必要です):

$category = Mage::getModel('catalog/category');

$f = fopen($file, "r");

$row = 0;
while ( ($data = fgetcsv( $f, 0, ",") ) !== FALSE) {
    $multiple_categories = explode("|", $data);
    //save main ones
    $category->setName($multiple_categories[0])
      ->setIsActive(1)                       
      ->setDisplayMode('PRODUCTS')
      ->setIsAnchor(1)
      ->setAttributeSetId($category->getDefaultAttributeSetId()); //or the id of your attribute set, this is important.
    $category->save();
    unset($category);
    //now deal with children
    if(count($multiple_categories) > 1){
        i = 1;
        foreach($multiple_categories as $subcategory){
            $category->setName($multiple_categories[i])
              ->setIsActive(1)                       
              ->setDisplayMode('PRODUCTS')
              ->setIsAnchor(1)
              ->setAttributeSetId($category->getDefaultAttributeSetId());
            //manage parents now
            $_category = Mage::getResourceModel('catalog/category_collection')
                ->addFieldToFilter('name', $multiple_categories[i-1])
                ->getFirstItem(); //this needs more work
            $parentId = $_category->getId();
            $parentCategory = Mage::getModel('catalog/category')->load($parentId);
            $category->setPath($parentCategory->getPath());
            $category->save();
            unset($category);
            i++;
        }   
  }
    $row++;
}
于 2016-01-06T14:46:34.690 に答える
0

MAGMI の「オンザフライ カテゴリ インポータ」は、これを確実に行います。MAGMI wiki の手順を非常に注意深く読むことをお勧めします。必要な情報はすべてそこにありますが、MAGMI wiki の詳細と例を再確認して再読する必要があることがよくあります。

MAGMI のダウンロード インストールと実行手順: http://wiki.magmi.org/index.php?title=Main_Page#Download_and_Install_Magmi

オンザフライ カテゴリ インポーターの MAGMI 手順: http://wiki.magmi.org/index.php?title=On_the_fly_category_creator/importer

以前に MAGMI を使用したことがない場合は、単純な CSV を使用して作業を開始し、インストールが正しくセットアップされていることを確認し、単純な製品を作成する CSV をインポートできるようにします。

あなたが直面している主な課題は、質問に記載されている CSV ファイル形式を MAGMI が使用できる CSV 形式に変換することだと思います。または、MAGMI でコードを記述して CSV データを変換することもできますが、これが 1 回限りのプロセスである場合、非常に複雑になる可能性があると思います。

あなたのCSVの例の構文に従っているかどうかはわかりませんが、最初の文字列が常にトップカテゴリであり、パイプ記号が「サブカテゴリが続く」ことを意味する場合

"003","Tools|Plumbing","Handtools|Pipetools|Pipes & Fittings","Pipetools|Calibration|Alupex fittings & tubes","Calibration tools|Tools for alupex"

このようなMAGMI CSVを作成しようとしています

"sku","categories" "003","Tools::1::1::1/Plumbing::1::0::1;;Handtools::1::1::1/Pipetools::1::0::1/Pipes & Fittings::1::0::1;;Pipetools::1::1::1/Calibration::1::0::1/Alupex fittings & tubes::1::0::1;;Calibration tools::1::1::1/Tools for alupex::1::0::1"

あいまいな部分は 、 、 をそれぞれ::1::1::1示しis_activeis_anchorinclude_in_menuは省略できます。

それは私の仕事ではありませんが、サブカテゴリ ラベルの 2 つのスペースについて深く懸念しています'Tools for alupex'(小文字の Alupex や AluPEX から始めないでください)。

于 2016-01-06T21:54:47.603 に答える