私の本サイトでは、トップページ下部に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モジュールについて
このセットは、下記の外部コンテンツをリストアップするモジュールを追加します。
- 【Contents】 任意URLのファイル内容全て
- 【Twitter】 任意IDのTwitter新着
- 【HatenaB】 任意IDのはてなブックマーク新着(コメントを含む)
「Getdata」モジュールは、こちらからダウンロードできます。
http://webbingstudio.com/souvenir/acms_module/Getdata.zip
モジュールの作成方法は、開発元のコンテンツを参考にしました。
使用方法
解凍直後の状態では動作しません。
フォルダを、php > ACMS > GET > Getdata と開いていき、最下層に入っている 「Contents.php」「Twitter.php」「HatenaB.php」の必要な箇所を編集してください。
- Contents.php・・・読み込み先のURLを指定
- Twitter.php・・・TwitterIDを書き換える(注意:二ヶ所あります)
- 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よりもやや学習コストがかかる分、安全と言えます。
開発元のブログや私のモジュールを見ればわかりますが、単に出力するだけならとても簡単に作れます。
(テキストをランダムに出力するとか)
皆さんも挑戦してみてください。