「WordPressで学ぶPHP(2)データ構造(配列・オブジェクト)編」を発売しました。
本書は「WordPressで学ぶPHP(1)変数・制御構造編」の続編にあたり、PHPの「データ構造」(配列とオブジェクト)について解説します。
配列やオブジェクトは、頭の中で考えるだけでは、イメージがつかみにくいです。本書では図を多用して、配列やオブジェクトをなるべく分かりやすく解説することを心がけました。
Kindle本で、定価250円です。
新刊「ホームページやBlogが生まれ変わる お手軽Ajaxパーツ集」まもなく発売
当方の新刊の「ホームページやBlogが生まれ変わる お手軽Ajaxパーツ集」が、まもなく発売になります。
技術評論社刊で、定価2,604円(税込)です。
一般のWebページに組み込んで使えるほか、Movable Type/WordPress/SereneBachの各Blogツールで使う方法も解説しています。
Ajaxでは本来ならJavaScript等のプログラミングが必要になりますが、本書ではプログラムはすべて用意してあります。
プログラミングすることなしに、ご自分のサイトにパーツを組み込むだけで、Ajaxを手軽に取り入れることができます。
また、各パーツの表示はテンプレートでカスタマイズすることができるようにしてありますので、ご自分のサイトのデザインに合った表示を行うことができます。
この本では、以下のようなAjaxパーツを紹介します。
- Google PageRank表示
- はてなブックマークの被ブックマーク状況の表示
- del.icio.usの被ブックマーク状況の表示
- Yahoo!の検索窓
- ゲストブック
- RSS表示
- GoogleMaps表示
- Flickrの写真の表示
- YouTubeの動画の表示
- Twitterのタイムラインの表示
- Yahoo!オークションの出品状況の表示
- 楽天の商品を検索して表示
- Amazonの商品を検索して表示
また、Blogツールへの組み込み例として、以下のBlogツールを取り上げています。
- Movable Type(3.3/4対応、MT標準テンプレートおよび小粋空間テンプレートに対応)
- WordPress
- Serene Bach
たとえば、Amazonの商品を検索して表示するAjaxパーツでは、以下のような表示を行うことができます。
この例は、「藤本壱」をキーワードにして、発売日の新しい順に商品を検索し、その中の5件を表示した例です。
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください
プログラム素人
goliveでサーバー側プログラムをアップロードし、ajaxパーツの基本見本となっているshow date time の動作チェックを行いましたが何も反応がありませんでした。
原因は何が考えられますか?
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。拙著をお買い求めいただき、ありがとうございます。
ご質問の件ですが、おそらくAjaxパーツのJavaScriptが動作していません。
HTMLの中にJavaScriptのアドレスを指定する箇所がありますが、そこを正しく書き換えているかどうかを確認してみてください。
プログラム素人からプログラム素人への返信
ご返答ありがとうございます。
goliveを使用していますが、デスクトップ上、サーバー上から一度、サーバーアップ用プログラムを消去したのですが、再度サーバーと同期を行うとappならびにjs以下のファイルがアップしてしまいます。原因は何でしょうか?
プログラム素人からプログラム素人への返信
以下のようなエラーが出ます。問題点は何でしょうか?
現在の日付と時刻を表示する例です。
Warning: main(../common/check_tmpl.php) [function.main]: failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/sub.jp-3in-shimane/web/phpajax/app/show_date_time/show_date_time.php on line 3
Warning: main() [function.include]: Failed opening '../common/check_tmpl.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty') in /home/sites/lolipop.jp/users/sub.jp-3in-shimane/web/phpajax/app/show_date_time/show_date_time.php on line 3
Fatal error: Call to undefined function: check_template() in /home/sites/lolipop.jp/users/sub.jp-3in-shimane/web/phpajax/app/show_date_time/show_date_time.php on line 14
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。
エラーメッセージからすると、ファイルが正しくアップロードされていない(こちらが想定しているディレクトリ構造になっていない)と思われます。
なお、GoLiveの問題ではないかと思いますが、私はGoLiveは持っていませんので、申し訳ありませんが検証することができません。
プログラム素人からプログラム素人への返信
パーミッションを変えるのを忘れておりました。
便利そうで周りの人間も本をほしがっておりました。
続編を期待しております。
rss表示が文字化けしておるのですが、原因はどこにありそうでしょうか?
http://3in-shimane.info/index.html
プログラム素人からプログラム素人への返信
RSS表示のAJAXパーツで http://3in-shimane.info/index.htmlの様な文字化けが起きるのですが、原因は何でしょうか?
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。
そちらのページを拝見したところ、rss.phpが「http://3in-shimane.info/phpajax/app/rss/rss.php」にある記述になっていますが、そのアドレスに直接にアクセスしたところ、「ページが見つからない」のエラーが表示されました。
rss.phpが正しくアップロードされているかどうかをご確認ください。
なお、rss.phpで文字化けがおきることがありますので、アップロードする前に、rss.phpの最後の行の「$smarty->display($tmpl_name, $cache_id);」
の直前に、以下の行を追加してください。
header("Content-type: text/html; charset=utf-8");
プログラム素人からプログラム素人への返信
rss.phpをご指示いただいたように
// エラーの場合
else {
$smarty->assign('is_error', 1);
}
}
// テンプレートの表示
header("Content-type: text/html; charset=utf-8");$smarty->display($tmpl_name, $cache_id);
?>
と加えましたが、どうも改善できません。
他に対策はありますでしょうか?
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。
以下の内容で.htaccessファイルを作成して、rss.phpのあるディレクトリにアップロードしてみてください。
php_value default_charset utf-8
php_value mbstring.language Japanese
php_value mbstring.internal_encoding utf-8
php_flag mbstring.encoding_translation off
php_value mbstring.http_input auto
php_value mbstring.http_output pass
これでもだめなようなら、申し訳ありませんが、そちらのサーバーでプログラムをデバッグしてみないと、原因は不明です。
プログラム素人からプログラム素人への返信
日本語表示するようになりましたが、手を加えて頂いたということでしょうか?
こちらから再度同期すると元に戻ってしまいますか?
今後のために対策法をお願いします。
あとブログの日付がajax表示では1970年になっているのはなぜでしょうか?
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。
修正後のrss.phpを元のものに上書きし、キャッシュをクリアしましたので、今後は文字化けはしないはずです。
キャッシュを削除するには、サーバーの「phpajax」→「cache」→「rss」ディレクトリの中にあるファイルをすべて削除します。
また、日付表示の件は、PHPのバージョンの問題で、Atomの日付を正しく変換できていないことが原因です。
とりあえず、そちらで使っているAtomにだけ対応するように、プログラムを一部修正してアップロードしておきました。
すべてのRSSに対応するようにはしていませんが、この点はご容赦ください。
プログラム素人からプログラム素人への返信
現在ajaxパーツのrss表示からのリンクは新規ウィンドウを開いてのリンクページに飛ぶようになっていますが、今後、開かないウィンドウというものはご用意されませんか?
壱からプログラム素人への返信
>プログラム素人さん
ご質問の件ですが、出力はテンプレートに沿って行うようになっていますので、テンプレートを書き換えればできます。
「templates」→「rss」フォルダにテンプレートのファイルがあります。標準では「rss01.tpl」のテンプレートが使われますが、その中のaタグに「target="_blank"」の記述がありますので、それを削除すれば同一ウィンドウにリンク先が表示されます。
悩めるネコ
処理はうまくいっているみたいですが、文字化け表示になってしまいます。どうしたらいいですか?
壱から悩めるネコへの返信
>悩めるネコ
こんにちは。
show_date_time.phpの最後の「$smarty->display($tmpl_name);」の行の前に、以下の行を追加してみてください。
悩めるネコから悩めるネコへの返信
できました!ありがとうございました。
プログラム素人
3種のブログのrssをホームページ上にそれぞれ表示させようとしていますが、windows環境でチェックする(mac上では問題なし)と「処理中です」という表示までで表示できないようです。
1つのみ設置したものは表示されます。
3つだと厳しいものなのでしょうか?
壱
>プログラム素人さん
こんにちは。
こちらでテストした限りでは、Windowsでも3つのRSSを一度に表示できています(5つでもOKでした)。
はっきりとは言えませんが、そちらでテストしたマシンに依存する問題のような感じがします。
志木
お手軽Ajaxパーツ集を購入して実践してみました。
ひとつ質問がありますが、マルチドメインに対応させることは可能ですか?
たとえば、サーバアドレスを記入する際に「,」で区切るなどすれば対応するのでしょうか?
お手数をおかけしますがご確認いただけたら助かります。
壱から志木への返信
>志木さん
こんにちは。
拙著をご購読いただき、ありがとうございます。
ご質問の件ですが、Ajaxそのものの制限として、「通信元のWebページと通信先のPHP等が同じドメインになければならない」というものがあります。
複数のドメインと通信するには、サーバーに通信の仲立ちをするようなプログラムを置く必要があります。
プログラム素人
wordpress2.7からのRSS表示ですが、日付、順序がうまく出ませんが、何が原因になりますでしょうか?
壱からプログラム素人への返信
>プログラム素人さん
こんにちは。
「日付、順序がうまく出ません」とのことですが、もっと具体的に状況を教えていただけますでしょうか。
ちなみに、RSS表示パーツでWordPress2.7のRSSを表示するテストを行ってみましたが、特に問題はなかったです。