第7回 magento cafe plus
TRANSCRIPT
Veriteworks Inc. 西 宏和
Magento Cafe Plus #7
Agenda
• 最近のMagento
• データインポート・エクスポート
• OroCRMをMagentoと連携する
最近のMagento
本家フォーラムリニューアル
過去記事全部消えたらしいです
Magento2 0.74.0-beta4
OroCommerce
Imagine Conference
Meet Magento 2015 Japan
• 11月20日、ベルサール新宿グランドに決定
• スポンサー・登壇者募集中
• もちろんイベントにご協力いただける方も募集中(報酬ないですが)
データインポート・エクスポート
Magentoにおけるデータインポート・エクスポート
データフロー インポート・エクスポート API Magmi
対象 商品 顧客
商品 商品画像 顧客
商品 カテゴリ 顧客 注文
商品 カテゴリ 商品画像
GUIカスタマイズ 可 不可 不可(そもそもGUIなし) ?
速度 遅い 普通 遅い 速い
外部システム連携 △ ☓ ◯ △
インポート方法 ローカル FTP ブラウザ経由 なんでもあり ブラウザ
CLI
CSVフォーマットの違い
データフロー インポート・エクスポート
属性の値 ストアビューのラベル オプションのID
列名 属性の名称と同じ 独自形式
商品画像の取り込み 3枚限定 メディアギャラリーも可(ただし書き方が・・・)
マッピングの調整 可 不可
データフロー
• 一番オーソドックスなMagentoのデータ入出力機能
• 顧客・商品の入出力が可能
• CSVとDBのマッピング設定が可能
• 実行時は専用のウインドウが開き、進捗を逐次確認可能
• ファイルをブラウザからアップし、取り込み可能
拡張プロファイル
• データフローからUIを削除し、独自のプロファイルXMLを書けるようにしたもの
• UIがない代わりに自由に定義ができる(=XML知らないと何もできない)
• データフローと異なり、ファイルアップ機能がない
インポート・エクスポート
• マッピング機能はなし
• POSTしたCSVをパースして一気に取り込む=非力なサーバーだと途中で力尽きる
• 属性の値はすべてID指定なのでCSV作成が大変
• フォーマットが若干変態だが、メディアギャラリーのインポートが可能
API(SOAP/XMLRPC/REST)
• http://www.magentocommerce.com/api/soap/introduction.html を参照
• Magento側を拡張すれば自作も可能
• 標準でそこそこできる
よくハマるポイント
CSVあるある
• Excelで開くと文字化け → UTF-8専用です
• SJISに変換してExcelで編集して保存するとエラー → 全フィールド引用符必須
• フィールド内の改行が・・・ → CSV全体の改行コードをLFにし、フィールドをCRにするなど工夫が必要(つまりめんどくさい)
• サイズが大きすぎて処理しきれない・・・ → 管理しやすい適切なサイズに分けましょう
Macの人涙目
• WindowsにはフリーソフトのCSV専用エディタがある
• Macにはまともなツールがない
• Excelとか本気であてにならない
• PHPStormのCSV編集機能は使えない(引用符勝手に取る)
データフローの列順
• デフォルトの列定義の場合はエクスポートした時の列順を死守
• マッピングする際は1列目からきちんとマッピングする
インポートの属性IDなど
• 属性のIDは属性管理画面のURLなどから頑張って集める
• オプションのIDはフォームから1個ずつ・・・またはDB見る(要は非常に面倒くさい)
• メディアギャラリーを取り込む場合は、メインの商品データを書いた行の直後に、ギャラリーのデータだけ書いた行を並べる
拡張プロファイルで 独自インポート・エクスポートを作る
必要なもの
• 取り込みたいCSVファイル
• Mage_Eav_Model_Convert_Adapter_Entityを継承したクラス
• 拡張プロファイルのXML定義
例:カテゴリのインポート
必要なもの
• インポート・エクスポート処理を行う実体のクラス
• プロファイルXML
プロファイルXMLの例<action type="dataflow/convert_adapter_io" method="load"> <var name="type">file</var> <var name="path">var/import</var> <var name="filename"><![CDATA[Categories.csv]]></var> <var name="format"><![CDATA[csv]]></var> </action> <action type="dataflow/convert_parser_csv" method="parse"> <var name="delimiter"><![CDATA[,]]></var> <var name="enclose"><![CDATA["]]></var> <var name="fieldnames">true</var> <var name="store"><![CDATA[0]]></var> <var name="number_of_records">1</var> <var name="decimal_separator"><![CDATA[.]]></var> <var name="adapter">catalog/convert_adapter_category</var> <var name="method">parse</var> </action>
クラスの実装はソースを見ながら・・・
OroCRMとMagentoを連携する
OroCRMとMagentoの関係
顧客・注文・Wishlistデータの同期
注文データ作成カスタムレポートで
色々分析trackingタグの提供
問い合わせフォームの提供
Magentoの弱いところ
• 使えそうで使えないレポート機能
• 取ってるようであまりにも使えないログ記録機能
• 問い合わせフォームはDBに残らない
OroCRMで顧客と注文データを取り出す
まずはOroCRM BridgeをMagentoに入れる
Magento側でAPIユーザーを作っておく
OroCRM側で連携を設定する
同期を実行してじっと待つ・・・
OroCRMのレポート機能で分析
セールスレポートでレポートを定義する
オリジナルのレポートデータができる
続きはExcelで!
OroCRMからMagentoの注文を作成
顧客管理画面のボタンを押す
注文作成画面が出る
注文を作ってみる
Magento上にデータができる
Magentoに問い合わせフォームを埋めてみる
まずはこいつをOroCRMに入れる
OroCRM上でフォームを作る
フォームが出来る
JSのコードをMagentoのページに貼り付ける
問い合わせフォームが出る
送信してみる
OroCRMにデータができる
おわり