先日の記事では、もしもDSのショッピングサイトを「CSVをMS-Accessで加工してWordPressにインポートする」ことで作ったことに触れました。
このサイトへ出力するアイテム数は6000件ほどですが、WordPressサイトへのCSVインポートは一度に1000件弱程度しか出来なかったので、Accessからの6000件ほどのCSVは10分割して出力していました。
また、すでにインポートされているidのアイテムが再度インポートされる場合、前の投稿を上書きするのではなく2重投稿になります。
したがってWordPressでインポートする前に、前の投稿を全件削除する必要があります。
一方、会社のサイトを構築するのに以前使っていたCMS「MODx」では、CSVファイルをインポートしてページを量産するのに「Csv2Doc」というモジュールを使っていました。
「Csv2Doc」は、同じIDのレコードをインポートするときは既にあるリソースを上書きしてくれるし、インポートするCSVに存在しないリソースを自動的に削除するという設定もできます。
さらにWEBで調べたところ、「Csv2Doc」は一度に5000件ぐらいのインポートはこなしてくれそうです。
というわけで、今後頻繁になりうる商品の更新作業がすこしでも楽になればと、
もしもDSのサイトをMODx(EVO)でも作ってみる
ことにしました。
MODxがWordPressと違うのは、各ページ(リソース)を階層構造に出来る分、階層構造のカテゴリという概念がないことです。
そこで、
- 前述のAccess内の各アイテムデータ内にあるカテゴリの文字列「カテゴリ1 > カテゴリ2 > カテゴリ3…」は「 > 」をカンマに変換し、
- また同じくAccessにインポートしてあるカテゴリデータでは、各カテゴリにクエリで親カテゴリのIDを指定(カテゴリリソースが階層構造になるように)して、
- カテゴリとアイテムをCsv2DocでリソースとしてMODxにインポートできるようにし、
DittoのTaggingで各カテゴリごとのアイテムが表示されるカテゴリページを造りました。
CSVをインポートする作業は、
WordPressの場合
「商品記事を全削除(DBのプラグイン)」 - 「CSVファイルをインポート(CSV Importerで10回)」
だったのが、MODxだと
「CSVファイルをFTPでアップロード」 – 「CSVファイルをインポート(Csv2Docで1回)」 で済みます。
「Csv2Doc」の作者様、ありがとうございます。
先にWordPressで作っていたサイトのドメインを今回作ったMODxサイトの方へ切り替えたのですが、もともとのWordPressでのアイテムページURLは
http://ドメイン/商品ID/
だったのを、MODxではあまり深く考えず
http://ドメイン/directory/商品ID.html
になるように変えました。
しかしすでにWordPressで作っていたサイトがGoogleにもたくさんインデックスされていたので、それらは全部404になってしまいました。
そこで、回避策として、.htaccessに
RedirectMatch permanent ^/([0-9]+)/?$ http://ドメイン/directory/$1.html?
を加えたところ、WordpressサイトでインデックスされたGoogleの検索結果からもたどり着けるようになりました。