« simpleXML | メイン | WP e-commerce 備忘録 »

Geeklog快適!

Geeklog 導入ガイドCMS(コンテンツマネージメントシステム)というのをご存じだろうか。たとえばmixiみたいなのを手軽に構築しようとするとき、これを使うとすごく便利。有名なCMSの一つにXOOPSというのがあり、かつて私も利用したことがあったが、すごく重かった。XREAの安価なサーバーを使用していたせいもあろうが、重すぎてサーバーが処理しきれないこともあるほどだった。もっとも機能を絞ればそれなりの軽快な動作が可能であったかもしれないが、XOOPSはプラグインが豊富で、しかも機能追加が簡単かつ楽勝だから、ついつい重くしちゃう。……結果、使い物にならずやめてしまった。ところで最近、ちょっとしたことから再びCMSを試す事情があって、今度は反省を生かして軽めのものを探した。そこで、諸サイトの評判から選ばれたものがGeeklog。ガイドブック「Geeklog導入ガイド(写真左)」も出版されて徐々に認知されてきているCMSである。

Geeklogのオフィシャルサイトが、XOOPSとGeeklogを比較していて、インストールの簡単さではXOOPSに軍配をあげているが、そのとおりインストールまでは少しやっかいだった。XOOPSと違って、回答したパッケージを公開領域と非公開領域に分けてアップロードしたり、インストーラらしきものがあまり親切でなくてphpファイルを開けていじらなきゃならなかったり。もしWebプログラミング初心者だったら厳しいんじゃないかなぁ。ともかくも、そんな作業をこなして、データベースにテーブルを作成(この作業はインストーラがやってくれる)したら、インストール作業は終了!XOOPSよりも手間だったが、充分許容範囲かな。

しかし今回Geeklogを選んだ一番の理由はやはり動作の軽さなわけで、早速どんなスピードで表示されるかチェックしてみる。インストールしたてでコンテンツの全くないサイトではあるが、軽い軽い。XOOPSの半分か1/3ぐらいの速さでページが読み込まれる気がする。デフォルトで搭載されている機能も、記事投稿、アンケート、ユーザー管理、リンク集…などXOOPSに遜色ない。しかも素晴らしいことに、携帯からの投稿なども可能らしい。いいね、Geeklog!

ただプラグインの豊富さでは、GeeklogはXOOPSに勝ち目はないらしい。プラグインについては、現時点でも、おそらく2年前に私がXOOPSを使用していたころにすら負けそうである。でもまぁ、プラグインなんてその気になれば自分で開発すればいいわけですから。重いCMSの構造見直して軽くするよりはずっと楽勝でしょう。

そんなことでやっぱり初心者にはXOOPSかなと思いますが(本もいっぱい出てるし)、私としてはGeeklog選んで間違いじゃなかったなと。どんなサイトができてくるかはお楽しみ、請うご期待。慣れないCMSのスクリプト見るのはなかなか骨の折れる作業ですが…でも急いでつくります♪

トラックバック

このエントリーのトラックバックURL:
http://senrenja.s266.xrea.com/mt/mt-tb.cgi/17

コメント (9)

HATANAKA:

はじめまして
不躾ですがg_map.htmlはsenrenja様が作られたのでしょうか?

senrenja:

はじめまして。

>不躾ですがg_map.htmlはsenrenja様が作られたのでしょうか?

ええ。私が作りました。
いかがでしたか?

HATANAKA:

ご返答ありがとう御座います。
シンプルで欲しい機能がありましたので
とても便利に使わせていただいております。
ただ大量のデータを処理してしまうと
500件というGoogleMapAPIの規約に引っかかって
しまうので、もしよろしければソースなど
お借り、もしくは解説いただければ
有り難いと思い思わずBBSを利用させて
もらいました。

それにしてもGoogleMap、Earthはもとより
Googleには凄く便利で面白いものを提供しますね。

senrenja:

お褒めいただきありがとうございます。
当該ページのソースコードは自由に
ご利用いただいてかまいません。htmlとjavascriptぐらいしか使用してませんからコピーしてご利用されているサーバーにアップロードすれば動くはずです。
ただしGoogleMapsのAPIキーの箇所だけは書き換える必要があります(↓参照)。
http://code.google.com/intl/ja/apis/maps/signup.html

500件という制限を回避するにはたぶんGoogleのサーバーへの問い合わせを複数回に分けることでクリアできるはずで、私にできる範囲で解説はいたしますが、HATANAKAさんはプログラミングについてどの程度の知識をお持ちなのかお教え願えませんか?

HATANAKA:

ありがとうございます。
素人に毛が生えた程度です。
APIのキーは取得させていただきました。
JavaScriptは全然判らないので頑張って勉強しようと
思います。

早速今のソースをAPIキーだけ変えてアップロードさせて
頂きました。

http://www.hokkyokusei.com/g_map.html

CSVをアップロードしようとすると

Method Not Allowed
The requested method POST is not allowed for the URL /g_map.html.

というエラーがでてしまいます。
パーミッションの777がサーバーのセキュリティ上使えないので
757でもどうようでしたが.htaccessでtxtの拡張子でもCGIの動作をする
AddType application/x-httpd-php .php .html
記述をいれるとエラーは出なくなりましたが動作はしないようです。

ちなみにLolipopのサーバーを利用させてもらってるのですが
CGIなどの動作は下記のような制限が述べられてました。

http://lolipop.jp/?mode=support&state=faq&state2=cgi

senrenja:

すみません。うっかりしてたのですが、htmlとjavascript以外にphpも使用してました。phpで記述された部分は当該ページのソースコードには存在しない(サーバー側で処理された結果のみを返すためです)ので、htmlファイルのヘッダ(<head>~</head>の部分)を次のように書き換えてみてください。

ロリポップは使ったことがなく仕様がわかりません。POSTメソッドはエラー見る限り、デフォルトでは禁止しているんでしょうね。パーミッションの変更と.htaccessの設定でなんとかエラー回避されているみたいですから、下記のとおり書き換えればなんとか動きそうな気がしています^^

わざわざphp使わなくても処理できる(はず)なんですけど、このスクリプトを書いていたときにあんまり時間がなかったもので、つい使い慣れた言語(php)で、csvデータを解析して配列に格納する処理と文字コードの変換処理(shift-jisからutf-8へ)を行ったのでした。ややこしくてすみません。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>住所検索 By Google Maps Api --- csvファイルから住所を一括検索</title>

<?php
ini_set( 'display_errors', 'off' );
$row=0;
if($_FILES['file']){

setlocale(LC_CTYPE, "ja_JP.SJIS");
$handle=fopen($_FILES['file']['tmp_name'],"r");
while (($data = fgetcsv($handle, 4096, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$address[$row]=mb_convert_encoding($data[0],"utf-8","shift-jis");
$name[$row]=mb_convert_encoding($data[1],"utf-8","shift-jis");
}
$row++;
}
fclose($handle);
setlocale(LC_CTYPE,NULL);
}
?>
<script src="http://maps.google.com/maps?file=api&v=2&key=<ここにGoogleAPIのキー>"
type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//<![CDATA[


var map = null;
var geocoder = null;

var address = new Array(<? echo $row;?>);
var name = new Array(<? echo $row;?>);

<?php
for($i=0;$i<$row;$i++){
echo "address[".$i."] = \"".$address[$i]."\";\n";
echo "name[".$i."] = \"".$name[$i]."\";\n";
}
?>

// 初期化
// <body onload="load()"> で呼び出し
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(35.67431, 139.69082), 13);

for(i=0;i<<? echo $row;?>;i++){
setTimeout('showAddress(' + i + ')',500*i);
}
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GOverviewMapControl());
map.addControl(new GScaleControl()); }
}
     
function showAddress(i) {
// GClientGeocoderを初期化
if(i < address.length-1){
document.getElementById("header").innerHTML= i+1 + "件目の住所データを問い合わせしています";
} else {
document.getElementById("header").innerHTML= i+1 +"件の住所検索が終了しました";
}
geocoder = new GClientGeocoder();
if (geocoder) {
geocoder.getLatLng(
address[i],
function(point) {
if (!point) {
document.getElementById("result").innerHTML= document.getElementById("result").innerHTML + (i+1) + '. ' + name[i] + ' '+ address[i] + ':<span style="color:red">検索失敗</span><br />';
} else {
if(i==0){
map.setCenter(point, 13);

}
var pophtml = '<div style="width: 200px; font-size: 12px"><strong>'+name[i]+'</strong><br />'+address[i]+'</div>';
var marker=show_marker(point,pophtml);
map.addOverlay(marker);
document.getElementById("result").innerHTML= document.getElementById("result").innerHTML + (i+1) + '. ' + name[i] + ' '+ address[i] + '<input type="button" value="移動" onClick="map.panTo(new GLatLng' + point + ');"><br />';
}
}
);

}

}

function show_marker(point,pophtml){

var marker = new GMarker(point);

GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(pophtml);
});
return marker;
}

//]]>
</script>
</head>

HATANAKA:

うぉ!ありがとうございます!

表のソース以外にPerlかなあ?
っと思ってたのですが・・・
phpとか色々ありますね~

本当にありがとうございます。
いま、ソースを拝見させていただいております。

クレクレ坊、オシエテ君となって
非常にお恥ずかしいのですが
助かります。
ソースを元に勉強させてもらいますね~

senrenja:

どうぞどうぞ。私も先輩の方々のソースから学んできましたし。
phpで記述している部分は、<?php~~~?>および<?~~~?>の箇所です。ご参考までに。

HATANAKA:

とりあえずそのまんま使わせてもらいました。
http://www.hokkyokusei.com/map.html

現在勉強中ですがわざわざソースを作成していただきありがとうございました。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年06月14日 19:52に投稿されたエントリーのページです。

ひとつ前の投稿は「simpleXML」です。

次の投稿は「WP e-commerce 備忘録」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.34