「Csv2Doc」でCSVによるもしもDS商品サイトをMODxで製作

シェアする

もしもDSの商品を紹介するサイトをWordPressで製作
これまでこのブログに書いてきたようなことを進めてきた目的は、主に会社のサイトを自作するためでした。 目的の作業をなんとかここまで進めること...

先日の記事では、もしも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の検索結果からもたどり着けるようになりました。