acmsmodule

私の本サイトでは、トップページ下部にTwitterはてなブックマークの新着を掲載していました。
a-blog cmsに移行する新サイトでも引き継ぐ予定です。

a-blog cmsはテーマファイル内にPHPスクリプトを直接書くことはできませんが、外部のRSSを整形して表示できる「Feed_ExList」モジュールがあります。
これを使えばすぐ移行できる…と思ったのですが、うまく表示できません。

TwitterのRSSは本文が全てURLエンコードされているため、デコードされずそのまま出力されてしまいます。
はてなブックマークはRSS1.0(rdf)形式なので、Feed_ExListモジュールのサポート外です。

2009.11.10追記:
開発元様に、[urldecode]という校正オプションを教えていただきました!
Twitterに関しては、{description}[urldecode] と記述すればFeed_ExListモジュールが使用できます。
リファレンスに追加されていますので、こちらも参考にしてください。

もしかしたら解決方法があるかもしれませんが、今回のところはビルトインモジュールを使うのを断念し、これまで使っていたPHPスクリプトをそのまま自作モジュールに変換する方法を取りました。

追記以降で配布しますので、とりあえずTwitterやはてブの新着を掲載したい方、モジュール作成について勉強したい方はご利用ください。

Getdataモジュールについて

このセットは、下記の外部コンテンツをリストアップするモジュールを追加します。

  1. 【Contents】 任意URLのファイル内容全て
  2. 【Twitter】 任意IDのTwitter新着
  3. 【HatenaB】 任意IDのはてなブックマーク新着(コメントを含む)

「Getdata」モジュールは、こちらからダウンロードできます。
http://webbingstudio.com/souvenir/acms_module/Getdata.zip

モジュールの作成方法は、開発元のコンテンツを参考にしました。

使用方法

解凍直後の状態では動作しません。
フォルダを、php > ACMS > GET > Getdata と開いていき、最下層に入っている 「Contents.php」「Twitter.php」「HatenaB.php」の必要な箇所を編集してください。

  1. Contents.php・・・読み込み先のURLを指定
  2. Twitter.php・・・TwitterIDを書き換える(注意:二ヶ所あります)
  3. HatenaB.php・・・はてなIDを書き換える

編集したら「php」フォルダごと、a-blog cmsを設置したディレクトリに転送してください。

テーマファイルへの記述

下記のように記述するだけで動作します。
Contentsは読み込み元がそのまま、Twitter・HatenaBはリンク付きのul要素で出力されます。

<!-- BEGIN_MODULE Getdata_Contents -->
<!-- END_MODULE Getdata_Contents -->
<!-- BEGIN_MODULE Getdata_Twitter -->
<!-- END_MODULE Getdata_Twitter -->
<!-- BEGIN_MODULE Getdata_HatenaB -->
<!-- END_MODULE Getdata_HatenaB -->

注意

※下記の関数が有効になっているサーバーでなければ動作しません。
Contents・・・file_get_contents関数
Twitter / HatenaB・・・file_get_contents関数・SimpleXML関数

※Getdata_Contentsモジュールは、対象のHTMLファイルの内容全てを「そのまま」出力します。エンコード・サニタイズも一切行いません。対象URLの内容を確認のうえ、慎重にご利用ください。

※このモジュールは試作品です。今後のa-blog cmsのバージョンアップで、不要となる可能性があります。
商用・非商用を問わず、自由にご利用ください。


注意に書いてある通り、PHPのfile_get_contents関数は便利ですが、有効にする際は慎重に取り扱わなければいけません。
もしも悪意ある第三者にPHPファイルを改ざんされてしまった場合、サーバー内の重要データを持っていかれてしまう可能性もあるからです。

ですが、a-blog cmsは一般に公開されているコンテンツにPHPスクリプトを記述せず、深い階層で一括管理を行うので、WordPress等のテーマに直接PHPを書けるCMSよりもやや学習コストがかかる分、安全と言えます。

開発元のブログや私のモジュールを見ればわかりますが、単に出力するだけならとても簡単に作れます。
(テキストをランダムに出力するとか)
皆さんも挑戦してみてください。

この記事を書いた人

うぇびん

愛知県豊橋市に住んでいる、荒ぶるウェブおばさん。WordPressをはじめとした各種CMSを研究するのが好き。札幌のIT企業のビットスター株式会社に所属しています。