IEで文字化け
作成していたサイトがIEで文字化けする現象が発生しました。
100%ではないけど、リロードやURL直打ちすると勝手にShift JISと判断されて文字化けしてしまいます。(ちなみにそのサイトはUTF-8で作成)
当然ながらmetaタグで
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
は記述してますし、titleタグやmetaタグのkeywords、desicriptionより前に記述しています。
これまた結構悩んでしまいましたが、ちょっと気になる点が・・・
このmetaタグ、実はこんな感じでincludeしていたのです。
<?php include_once("meta.php"); ?> <meta name="description" content="(概要)" /> <meta name="keywords" content="(キーワード)" /> <title>(タイトル)</title>
このmeta.phpは汎用的なmetaタグを記述して一括で管理しようと思って作ったものなんですが、どうもこれをincludeでやってるせいで文字化けが起こっているみたい。
このように中身を直書きしたら直りました。
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-script-type" content="text/script" /> <meta http-equiv="content-style-type" content="text/css" /> <meta name="description" content="(概要)" /> <meta name="keywords" content="(キーワード)" /> <title>(タイトル)</title>
う~ん。
でもPHPってサーバーサイドだよね~、なんでこれで直るんだろ?
include方式でもほぼ100%文字化けが起こらないサイトも存在するし、違いは一体何なのか分からんな~
nandani | 2012年02月16日 | コメント(0) | トラックバック(0) | HTML関連 | PHP関連
Contact form 7を使用する際の注意事項
Contact form 7でお問い合わせフォームを設定後
[contact-form-7 id="123" title="Contact form 1"]
といった感じのタグをページや投稿の本文に書くと、メールフォームを生成してくれるんですが、全然フォームが表示されない!
まんま
[contact-form-7 id="123" title="Contact form 1"]
と表示されてしまう。
なぜだろうとず~っと悩んで他のプラグインを停止したり、バージョンを変更するも解決しない。
ためしにテーマをデフォルトのものに変更したところ、正常に表示されました。
そこでソースを確認したところ本文表示部分が
<?php echo get_the_content(); ?>
となっていました。
これを
<?php the_content(); ?>
と変更したところ、解決!
解決すればすごく単純なことながら、なぜか全然わからずかなり時間を食ってしまいました。
ちなみにサイトマップを生成する「Dagon Design Sitemap Generator」も同様の現象が起こりますので注意しましょう。
nandani | 2012年02月16日 | コメント(0) | トラックバック(0) | CMS関連
Movable Type を Windows環境からLinux環境へ移行する際の注意事項
Windowsマシンにローカルサーバを構築し(xampp)、そこにMovable Typeをインストールして、サイトを構築したのち、実際のサーバへデータを移行させたのですが、アイテム関連総崩れ!
すべてリンク切れとなってしまいました。
ちなみに移行方法は、MTの「バックアップ・復元」機能ではなく、データベースを丸ごとコピーし、出力されたファイルなどもすべてサーバにアップロードし、パスなどを調整したのち、再構築というやり方です。
パーミッションがおかしいから?と思いましたがどうも違う。
LinuxサーバからWindowsのローカルサーバにデータを移行した際は大丈夫だったのになぁ・・・なんて思いながら、データベースを比較したところ、パスの区切りに問題があることが判明。
「mt_asset」テーブルの「asset_file_path」フィールドを見てみると、Linuxサーバで登録したファイルはスラッシュ(/)で区切られているのに対し、Windowsで登録したファイルはバックスラッシュ(\)で区切られてデータベースに保存されていました。
Windowsのとんだ落とし穴でしたね^^;
すべてスラッシュに変換したところ正常に表示されるようになりました。
nandani | 2012年01月18日 | コメント(0) | トラックバック(0) | CMS関連
システムテンプレートで「MTWebsites」を使う場合の注意【Movable Type】
Movable type 5.1の「検索結果」テンプレートにて、
<MTWebsites site_ids="1"><$mt:WebsiteURL$></MTWebsites>
といったタグを記述したのですが、なぜかうまくURLが取得できない。
しばらく悩んだ末、MTのテンプレートタグリファレンスに書かれているもう1つのID指定方法である「include_websites」を使ったところ、正常に取得できるようになりました。
<MTWebsites include_websites="1"><$mt:WebsiteURL$></MTWebsites>
やってることは同じはずなのになぁ・・・
nandani | 2012年01月16日 | コメント(0) | トラックバック(0) | CMS関連
ちょ!?Facebookボタンがえらいことに
たった今気づいたんですが、Facebookボタンの表示がかなりおかしなことになってます。
ログアウトしている状態なら普通なんですが、ログインしているとこんな感じ
なんじゃこりゃ~!!
と思ったら、どうやらFirefox3.6系だけみたい。
そろそろ3.6系も潮時かな・・・
↑間違いでした。
Facebookページとしてログインしていると(Facebookページの管理者権限を持っているユーザでFacebookにログインし、そのFacebookページにアクセスしている状態)どのブラウザでもなるようです。
nandani | 2012年01月14日 | コメント(2) | トラックバック(0) | API関連
Facebookページにある"すべての"アルバムの写真をPHPで取得する方法
前回は特定のアルバムのみの写真を取得する方法を記述しました。
今度はFacebookページにあるすべてのアルバムの写真を取得する方法です。
必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのFacebookページのID情報です。
ためしにFacebook Japanの公式Facebookページにあるすべてのアルバムの写真情報を取得し、写真を一覧表示します。
まずFacebookページIDですが、前回同様「Facebookスポット」アルバムページのURLをご覧ください。
http://www.facebook.com/media/set/?set=a.428510844023.214836.365989369023&type=3
今度は最後の「.」から「&type=3」までにある数字を取得してください。
つまり「365989369023」です。
これがFacebookIDです。
これを以下のサンプルプログラムの中にある「$fbpage_id」変数に代入します。
$fbpage_id = '365989369023'; //FacebookページID $thumb_size_set = 3; //サムネイルのサイズ //アルバム情報を取得する $albums_url = "http://graph.facebook.com/".$fbpage_id."/albums/"; $albums_res = file_get_contents($albums_url); $albums_array = json_decode($albums_res, TRUE); if(!empty($albums_array["data"])){ foreach($albums_array["data"] as $albums_values){ //アルバム内の写真情報を取得する $album_id = $albums_values["id"]; $photos_url = "http://graph.facebook.com/".$album_id."/photos/"; $photos_res = file_get_contents($photos_url); $photos_array = json_decode($photos_res, TRUE); if(!empty($photos_array["data"])){ $albums_link = $albums_values["link"]; $albums_name = $albums_values["name"]; echo '<h2><a href="'.$albums_link.'" target="_blank">'.$albums_name.'</a></h2>'."\r\n"; foreach($photos_array["data"] as $photos_values){ $thumb_size_count = count($photos_values["images"]); for($i=$thumb_size_set; $i > 0; $i--){ if($thumb_size_count > $i){ $thumb_size = $thumb_size_count - $i; break; } } $photo_name = $photos_values["name"]; $photo_path = $photos_values["link"]; $photo_thumb_path = $photos_values["images"][$thumb_size]["source"]; $photo_thumb_width = $photos_values["images"][$thumb_size]["width"]; $photo_thumb_height = $photos_values["images"][$thumb_size]["height"]; echo '<p><a href="'.$photo_path.'" target="_blank"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>'."\r\n"; } } } }
なお、結構表示まで時間がかかります。
nandani | 2011年12月14日 | コメント(5) | トラックバック(1) | API関連 | PHP関連
Facebookページにある"特定の"アルバムの写真をPHPで取得する方法
Facebookページを見ると、左のメニューに「写真」という項目があるページをよく見かけます。
その名の通り、アルバムごとに写真をアップし、公開することができるわけですが、このアルバムの写真情報をPHPで取得することができます。
必要なのはPHP5.2以上が動作するサーバ環境(json_decodeがいるので)と、そのアルバムのID情報です。
ためしにFacebook Japanの公式Facebookページにある、アルバム「Facebookスポット」の写真情報を取得し、写真を一覧表示します。
まずアルバムIDですが、「Facebookスポット」アルバムページのURLをご覧ください。
http://www.facebook.com/media/set/?set=a.428510844023.214836.365989369023&type=3
というURLになっています。
いくつか数字の羅列が並んでいますが、必要なのは「a.」から次の「.」までの数字。
つまり「428510844023」です。
これを以下のサンプルプログラムの中にある「$album_id」変数に代入します。
$album_id = '428510844023'; //アルバムID $thumb_size_set = 3; //サムネイルのサイズ $limit=0; //取得したい最大枚数(0とするとデフォルト設定の25枚) $url = "http://graph.facebook.com/".$album_id."/photos/?limit=".$limit; $res = file_get_contents($url); $data_array = json_decode($res, TRUE); if(!empty($data_array["data"])){ foreach($data_array["data"] as $values){ $thumb_size_count = count($values["images"]); for($i=$thumb_size_set; $i > 0; $i--){ if($thumb_size_count > $i){ $thumb_size = $thumb_size_count - $i; break; } } $photo_name = $values["name"]; $photo_link = $values["link"]; $photo_thumb_path = $values["images"][$thumb_size]["source"]; $photo_thumb_width = $values["images"][$thumb_size]["width"]; $photo_thumb_height = $values["images"][$thumb_size]["height"]; echo '<p><a href="'.$photo_link.'"><img src="'.$photo_thumb_path.'" width="'.$photo_thumb_width.'" height="'.$photo_thumb_height.'" alt="'.$photo_name.'" /></a></p>'; } }
もちろん閲覧者がFacebookにログインする必要はありません。
非常に簡単ですね。
※枚数が多くなると重くなるので、キャッシュを取るなどの対策をすることをお勧めします。
参考にさせていただいたサイト
nandani | 2011年12月14日 | コメント(4) | トラックバック(1) | API関連 | PHP関連
マップ表示用スクリプトをバージョンアップしました[バージョン1.4b3]
マップ表示用スクリプト(GoogleマップAPI v3で地図とマーカー・バルーンを表示するスクリプト)をバージョンアップ(version1.4b3)しました。(ダウンロードはこちら)
version1.4b2からの変更点は内部処理のみなので、差し替えるだけで動作します。
■主な変更箇所
Internet Explorer7 or 8において、特定の件数を超えるとスクリプトエラーが出てしまう問題を解決しました。
■バグの詳細
ループで回している中にjquery関数の$()があったのですが、(↓思いっきり適当に書くとこんな感じ)
for(var i=0; i<x; i++){ var data = $("#hoge")[i]; }
Internet Explorer7 or 8において、特定の件数を超えると、なぜか$()がスクリプトエラーとなってしまいました。
解決方法は、$()をループの外で一度変数に入れるようにしました。
var hoge = $("#hoge")[i]; for(var i=0; i<x; i++){ var data = hoge[i]; }
jquery関数を使う時は注意しよっと。
nandani | 2011年11月11日 | コメント(2) | トラックバック(2) | API関連 | JavaScript関連 | PHP関連
hal.dll.の破損?【WindowsXPが立ち上がらない】
会社のWindowsXPマシンを立ち上げようとしたところ、次のようなエラーメッセージが出て、起動しなくなりました。
次のファイルが存在しないかまたは壊れているためwindowsを起動できませんでした。
<windows root>\system32\hal.dll.
上記のファイルをインストールし直してください。
hal.dllとやらが壊れてるみたいなメッセージなので、こちらのサイト
Windowsパソコン起動時にsystem32\hal.dllのエラーが出た場合の修復方法 - MiuxMiu
を参考にしつつ、WindowsXPのインストールCDからhal.dllをコピーするも、全然立ち上がらず、またも上記のメッセージが出てしまいました。
仕方ないので他の方法を探していると、こちらのサイトを発見。
hal.dllが読めない為起動しません。: 金沢市の「パソコンの修理屋さん」
どうやら実際に壊れているのはhal.dllではなくboot.iniの方らしい。
こちらのサイトに書かれている通り、boot.iniを作成し、USBメモリにファイル入れ、XPマシンにUSBをぶっ刺し、再起動、回復コンソールにてCドライブ直下にboot.iniをコピーしたところ、正常にWindows起動画面が表示されるようになりました。
ただまあうちの場合、そもそも壊れかけだったらしく、その後ブルースクリーンになりお陀仏となりました(* ̄ノ ̄)/Ωチーン
nandani | 2011年11月09日 | コメント(0) | トラックバック(0) | OS関連
Google+ページなるものが作れるようになったようです。
Facebookページ、mixiページに続き、Google+でもGoogle+ページなるものが作れるようになりました。
作成ページはこちら。
手順通りに作っていけば1,2分程度で完成します。
nandani | 2011年11月08日 | コメント(0) | トラックバック(0) | SNS関連