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にログインする必要はありません。

非常に簡単ですね。

※枚数が多くなると重くなるので、キャッシュを取るなどの対策をすることをお勧めします。

 

参考にさせていただいたサイト

facebookのアルバム写真をJSONで取得して表示する with jQuery | Benjamin

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関数を使う時は注意しよっと。

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+ページなるものが作れるようになりました。

作成ページはこちら。

Google+ページを作成

手順通りに作っていけば1,2分程度で完成します。

nandani | 2011年11月08日 | コメント(0) | トラックバック(0) | SNS関連

Copyright(c) 2010 - 2024 ダリの雑記