memorandum
thinking about creation

Movable Type DataAPI を使った複数記事の投稿システム

Entry Date _ 2016.09.06
/
ModifiedDate _ 2016.09.06

Movable Type Data API(以下MT DataAPI)を使ったシステムを制作したので、そのメモと雑感を書いておきます。

MT DataAPI はご存知の通り、MT6から追加された MT の情報を外部の JavaScript や PHP で操作することができる API で、例えばJavaScript で MTの記事リストを取得して表示させたり、PHP で MT に記事を投稿できたりするものです。

今回制作したのは、 MT で構築された不動産物件情報サイトの更新作業を、MT DataAPI を使って援助するWebアプリケーションです。物件情報の更新は日々複数あり、手作業で更新していくのはサイト運営者にとってかなり手のかかる作業になっていました。それを軽減する方法はないかとの依頼を受けての制作です。

システムの概要

システムのフローを簡単にいえば以下のようになります。

flow.png

(1)大手不動産サイトに掲載している自社管理物件情報を、大手不動産サイトの管理画面よりCSVファイルとしてダウンロード。

(2)自社管理物件情報のCSVファイルを今回制作したWebアプリケーションにアップロード。CSVファイルから得た物件情報をフォームとして画面に展開。つまり、CSVファイルに10件の更新物件があった場合、10件分のフォームが並ぶことになります。

(3)サイト運営者は、この段階で物件情報の確認と修正・追記ができます。また、物件ごとに複数の画像をアップロードできるようにもなっています。

(4)サイト運営者によって手を入れられた物件情報を JSON にして PHP に渡し、MT の記事として新規登録または更新。その物件データが新規なのか更新なのかの判別は、MT とは別のデータベースを用意してマッチングすることにしました。

(5)このシステムによって MTに登録された記事はまだ未公開(下書き)状態にあります。サイト運営者は MT の管理画面上で最終的な確認をして公開していきます。

画像アップロード

今回は一件につき複数の画像が必要だったため、MT の画像管理システムを使わずに、アップロードされた画像のURLを通常のカスタムフィールドに反映させることにしました。

Googleマップ表示( entrygmap )

今回、住所からGoogleマップにマーカーを表示させる要件があり、それはカスタムフィールドの entrygmap をつかえば実現できるのですが、以下のように住所のテキストのみを DataAPI から MT に送っても、カスタムフィールドの入力エリアには反映されません。

array ('basename' => 'entrygmap', 'value' => '東京都 ○ ○ ○ ○ ○ ○ ○ ')

それを回避するためには以下のようにする必要があります。entrygmap のデータが、複数のデータを「|(パイプ)」を区切りとしたものだからです。

array ('basename' => 'entrygmap', 'value' => '||||'.'東京都 ○ ○ ○ ○ ○ ○ ○ ')

WS000136.JPG

それでも、これでは entrygmap のテキストフィールドに住所が反映されるだけです。住所をGoogleマップに反映させるためには、公開時に手作業で更新する必要があるため、公開前の最終確認作業の際に反映してもらうことにしました。

さいごに

この Webアプリケーションで、これまで物件1件づつ記事を作成し、各項目の内容を CSVファイルからコピペして入力していたサイト運営者の作業負担は、かなり軽減されることになると思います。また MT DataAPI によって、MT の管理画面を介さないで独自のWebアプリケーションから更新できることに大きな可能性も感じました。

Category

memorandum index