feed2js仕事の中に、複数のCMSを組み合わせて要件を満たしたり、CMSで生成した記事を静的なWEBサイトに動的に表示させたいというニーズもあったりします。手っ取り早いのはJavascriptになるんでしょうね。私はJavascriptでプログラムの作り方は良く分かりませんが使い方はある程度分かります。

今構想している案件の中で、EC-CUBEでのショップサイトに、オーナーのブログ記事から新着情報的な一覧を表示させたいというニーズがあります。単純 に考えるとCMSの棲み分けをする事で機能を分離できますが、別々のCMSを使うことで、連携という部分で弱みが出てきます。なんとか簡単に実現出来ないかなと考えてみました。

そんな場合に使える仕組みとして便利なのが、RSSフィードです。多くのCMSがこのRSSフィード生成に対応していますので、それを取り込むことで容易に新着記事を別のCMSで表示させることが可能となってきます。静的なサイトでも使えるテクニックですね。

問題は、RSSフィードを生成する機能は多くのCMSに実装されているものの、よそのRSSを取り込む機能を備えているCMSが少ない点です。多くの場合はプラグインで対応することになるのでしょうが・・・私はプログラマじゃないので作れません・・

さてどうしたものか。と調べていたら良いものを発見しました。

feed2js

Feed2JS

おそらくやりたいことが出来るんだろうなとは思いつつも、やっぱり英語なので苦戦です。誰か分かりやすい解説をしてくれている先人はいないものかなと検索してみたら、MTのカスタマイズで有名なサイトで解説して下さっていました。

小粋空間:RSS Feed(フィード)を表示する

日本語で苦戦する文字コードの違いに対する細工も解説して下さっているので、少しの知識があれば楽々設置出来るでしょう。feed2jsは、要するに自分のサーバにRSSフィードを取り込む機能を実装し、それをJavascriptで表示するためのJavascriptタグを生成してくれるツールです。ブログパーツみたいな感覚ですね。

ただ、一つだけ上手く行かないことに遭遇したので備忘録しておきます。

Show/Hide item descriptions? How much?
各記事概要の表示文字数を設定します。

  • 0:表示しない
  • 1:全て表示
  • 2 以上:設定文字数を表示
  • -1:表示しない(タイトルのリンクもなし)

このオプション機能を使うと、記事の概要となる文章を指定文字数でカットさせることが出来るという仕組みです。しかしながらこのプログラムは英語圏で作られたものですから、日本語をはじめとした2バイト文字のことは考慮されていないと思われます。具体的には下図の様な不具合があります。

substr
文章の最後が文字化けしています。2バイト文字と1バイト文字の混在で文字の切れ目が2バイト文字そのものをカットする様になり、文字列の切り出しで失敗しているものと思われます。

mb_substr
こちらは文字カットの部分をほんの少しだけカスタマイズして日本語対応させたものです。日本語でも綺麗に切り出しできています。

いじるファイルは、feed2js.php

	// trim descriptions
if ($desc > 1) {
// display specified substring numbers of chars;
// html is stripped to prevent cut off tags
$my_blurb = substr($my_blurb, 0, $desc) . '...';
}

この「substr」部分を下記のように「mb_substr」記述に変更するだけです。

	// trim descriptions
if ($desc > 1) {
// display specified substring numbers of chars;
// html is stripped to prevent cut off tags
$my_blurb = mb_substr($my_blurb, 0, $desc, 'UTF-8') . '...';
}

たったこれだけで文字カットがバイト数指定か文字数指定かの違いになってくれます。日本語は2バイト文字なので単純に倍の文字数になってしまいますので、カットする文字数の調整を行なわなくてはなりませんが。

思い通りのことが実現できると嬉しいものです。ほんの少しだけPHP(プログラミング)に対する苦手意識が和らいできたような気がしないでもないです。

Javascriptで生成してみる、ササのライブダァな日誌エントリー