<?xml version='1.0' encoding='utf-8'?>
<rss version='2.0'>
<channel>
<title>TONTTU.NET</title>
<link>http://www.tonttu.net/</link>
<description>サイトの詳細</description>
<language>ja-JP</language>
<item>
<title>colorboxでgetJSONを表示する</title>
<link>http://www.tonttu.net/tec/jquery/jquery_colorbox_getJSON.html</link>
<description><![CDATA[ <p>
ページ内にダイアログを開く時によく使っていたjQueryのThickBoxが、<br />
「もうメンテナンスしてないから他のを使ってね」<br />
と宣言されていました。ちょっとさびしいですね。そしてありがとう。<br />
http://jquery.com/demo/thickbox/
</p>
<p>
上記ページの紹介の中から「colorbox」を使います。<br />
http://colorpowered.com/colorbox/<br />
使い方は、ThickBoxより簡単でオプション豊富でデザインが選べて綺麗。<br />
</p>
<p>
で、私の場合はたいてい特殊な用途に向かってしまうサガがまた出まして、<br />
他ドメインのHTMLを参照して表示したい。<br />
jQueryではクロスドメインに対してgetJSONでJSONデータとして持ってこれます。
</p>
<p>
<br />
$.getJSON(url+&quot;&amp;callback=?&quot;, function(data){<br />
&nbsp; ...<br />
}<br />
とするとサーバー側のPHPでは、$_GET[&#39;callback&#39;]で「jsonp0123456..」とかのコールバック関数名が得られます。<br />
１．データをjson_encodeする<br />
２．（）で囲む<br />
３．前にコールバック名をつける<br />
例：<br />
jsonp0123456([{key1:value1},{key2:value2}])<br />
とかの形で出力してあげます。header関数でmimeタイプも付けてあげましょう。
</p>
<p>
受けて側ですが、結論からいうと、colorboxの改造が必要です。<br />
optionで、<br />
{<br />
&nbsp; html: function(){<br />
&nbsp;&nbsp;&nbsp; $.getJSON(...);<br />
&nbsp; }<br />
}<br />
とできればよかったんですが、なぜかリクエストが失敗します。 
</p>
<p>
jquery.colorbox.jsの638行目あたりのelse前に、<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else if (settings.json) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $.getJSON(href+&quot;&amp;callback=?&quot;, function(data){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; resize(data.html);<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br />
と条件を追加します。使うコードはオプションで、<br />
$(セレクタ).colorbox({json:true});<br />
とします。 
</p>
 ]]></description>
<pubDate>31- 1·î-10 07:41</pubDate>
<guid>http://www.tonttu.net/tec/jquery/jquery_colorbox_getJSON.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext.treeで並べ替え</title>
<link>http://www.tonttu.net/tec/85/EXT_treeorder.html</link>
<description><![CDATA[ <p>
Ext.Treeで親子関係を持った並べ替えをして保存してみます。 <br />
JSONデータによるツリーの生成は省きます。<br />
WebアプリにはcakePHPを使用しました。<br />
groupテーブルには、<br />
int&nbsp;id&nbsp;&nbsp;(一意id)<br />
int&nbsp;groups_id&nbsp;&nbsp;(親id)<br />
int&nbsp;ordr&nbsp;&nbsp;(並び順)<br />
を持たせます。treeビヘイビアは使用しません。<br />
</p>
<pre class="jscript">
<script type="text/javascript">
<!--
var reorder;//パラメータ
$(function() {
	var tree = new Ext.tree.TreePanel({
		el: 'classtree',//適用するDIVのid
		width: '100%',//幅
		autoScroll :true,//スクロール許可
		enableDD:true,//ドラッグアンドドロップ許可
		rootVisible: true,
		loader: tloader = new Ext.tree.TreeLoader({
			dataUrl:'/groups/classtree.json'
		}),//内容はJSONデータで取得する
		root: root = new Ext.tree.AsyncTreeNode({
			text: 'Root',
			draggable:false,
			id:'root'
		}),//ツリーのルート生成
		tbar: [{
			text: '更新',	
			handler: function(){
				reorder = "";//パラメータ初期化
				treenest(root);//ツリーをネストしてパラメータを得る
				formData = {
					'reorder': reorder
				};//POSTするデータ
				$.ajax({
				  url: '/groups/reorder',
					type: 'POST', async: false, ifModified: true, dataType:'html',
					data: formData
				});
			}//クリックされた場合の動作
		}]//ツールバーに更新ボタンを生成
	});
	tree.render();//ツリー表示
	root.expand(true);//ツリー展開
});

function treenest(nodes) {
	if(!nodes) return;//蛇足
	var index = 0;//並び順
	nodes.eachChild(function(child){
		reorder += child.id+":"+child.parentNode.id+":"+index+",";//パラメータ生成
		if(child.hasChildNodes()) treenest(child);//子ノードがあれば再帰
		index++;
	});
}

//-->
</script>
</pre>
<p>
root = new Ext.tree.AsyncTreeNode()<br />
にノードがぶら下がり、<br />
nodes.eachChild(function(child){});<br />
で直接の子childに対してループ処理ができます。<br />
child.hasChildNodes()<br />
でさらにその子が存在するか判定できます。<br />
child.idで自分のIDが、<br />
child.parentNode.idで親IDが得られます。<br />
並び順はループ中のindexで得ます。<br />
<br />
データは、<br />
1:root:0,3:1:0,2:root:1,<br />
と,と:で区切って一時配列にできる文字列としておいて、<br />
jQueryのAjaxで送信しています。<br />
受け側は、
</p>
<pre class="php">
	function reorder() {
		if(!empty($this->params['form']['reorder'])) {
			$postreorders = explode(',',$this->params['form']['reorder']);//配列に分割
			foreach($postreorders as $pro) {//配列をループ
				if(!empty($pro)) {//値があれば
					$reorder = explode(':',$pro);//配列に分割
					if(count($reorder) == 3) {//蛇足
						$data = array();//data初期化
						$data['id'] = $reorder[0];//id指定
						if($reorder[1] == 'root') {
							$data['group_id'] = null;//第一階層なら親なし
						} else {
							$data['group_id'] = $reorder[1];//親id
						}
						$data['ordr'] = $reorder[2];//並び順
						$this->Group->save($data);//update
					}
				}
			}
		}
		exit();
	}
</pre>
<p>
cakePHPはデータを配列で渡せばSQLを自動生成してくれます、<br />
$data['id']があればUPDATEされ、なければINSERTされます。
</p> ]]></description>
<pubDate>15- 1·î-10 21:59</pubDate>
<guid>http://www.tonttu.net/tec/85/EXT_treeorder.html</guid>
<author>クラウス</author>
</item>
<item>
<title>売上集計でエラーが出る</title>
<link>http://www.tonttu.net/tec/tec_eccube/ECCUBE_uriage.html</link>
<description><![CDATA[ <p>
ECcubeはデータベースにPostgreSQLを前提としているようで。<br />
MySqlを使用している場合に売上集計でエラーが出ます。<br />
内部で生成しているSQLが「trunc(AVG(total)」としていて、これをMySql用のSQL用に<br />
trunc &gt; TRUNCATE<br />
に変換して使用しています。 
</p>
<p>
しかし、この処理が二重にかかってしまう場合があり、エラーとなります。 
</p>
<p>
data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php<br />
の244行目あたりの
</p>
<p>
&nbsp;&nbsp;&nbsp; function sfChangeTrunc($sql){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $changesql = eregi_replace(&quot;( TRUNC)&quot;, &quot; TRUNCATE&quot;, $sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $changesql;<br />
&nbsp;&nbsp;&nbsp; }
</p>
<p>
&nbsp;を
</p>
<p>
&nbsp;&nbsp;&nbsp; function sfChangeTrunc($sql){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $changesql = eregi_replace(&quot;( TRUNC)&quot;, &quot; TRUNCATE&quot;, $sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $changesql = eregi_replace(&quot;( TRUNCATEATE)&quot;, &quot; TRUNCATE&quot;, $changesql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $changesql;<br />
&nbsp;&nbsp;&nbsp; } 
</p>
<p>
に書き換えます。 
</p>
 ]]></description>
<pubDate>14- 1·î-10 23:08</pubDate>
<guid>http://www.tonttu.net/tec/tec_eccube/ECCUBE_uriage.html</guid>
<author>クラウス</author>
</item>
<item>
<title>大量の商品紹介を伴うホームページを制作したい</title>
<link>http://www.tonttu.net/case/case_system/case_010.html</link>
<description><![CDATA[ [お客様・職種]<br />
流通業<br />
<br />
[お困りごと]<br />
大量の商品紹介を伴うホームページを制作したい<br />
<br />
[現状]<br />
ホームページリニューアル<br />
<br />
[提供サービス]<br />
・cakePHPによるシステム開発<br />
・CMS開発<br />
・運用支援、運用代行<br />
・サイトデザイン<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
・各事業所の紹介ができた<br />
・１５００商品の紹介と検索ができるようになった<br />
・社内でページの更新ができるようになった<br />
<br />
[工夫したこと]<br />
・商品管理を作りつつ、在庫管理等へ拡張できるようにした<br />
・ツリー表示等Ajaxによる利便性を高めた<br />
・メールフォームやインデックス表示などテンプレート内テンプレートによる機能拡張をできるようにした<br />
・WYSIWYGエディーターを搭載しHTML編集ができるようにした<br />
 ]]></description>
<pubDate>11- 1·î-10 21:44</pubDate>
<guid>http://www.tonttu.net/case/case_system/case_010.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Smartyテンプレート制作をして欲しい</title>
<link>http://www.tonttu.net/case/case_homepage/case_009.html</link>
<description><![CDATA[ [お客様・職種]<br />
ネットショッピングモール運営<br />
<br />
[お困りごと]<br />
Smartyテンプレート制作をして欲しい<br />
<br />
[現状]<br />
業務拡大に伴う人的リソースの不足<br />
<br />
[提供サービス]<br />
・Smartyテンプレート制作<br />
・サーバー設定<br />
・ネットショップシステム設置<br />
・HTMLコーディング<br />
・機能追加開発<br />
<br />
[解決したこと]<br />
・納期に間に合った<br />
・新規機能を追加することができた<br />
<br />
[工夫したこと]<br />
・システムの仕様書が不十分だったので読み解くのに苦労した<br />
・インストールフローを制作した<br />
・新規機能を開発した<br />
 ]]></description>
<pubDate>11- 1·î-10 21:43</pubDate>
<guid>http://www.tonttu.net/case/case_homepage/case_009.html</guid>
<author>クラウス</author>
</item>
<item>
<title>人材派遣システムを構築したい</title>
<link>http://www.tonttu.net/case/case_system/case_008.html</link>
<description><![CDATA[ [お客様・職種]<br />
人材派遣業<br />
<br />
[お困りごと]<br />
人材派遣システムを構築したい<br />
<br />
[現状]<br />
・財務管理システムは導入している<br />
<br />
[提供サービス]<br />
・PHPとPostgreSQLによるシステム開発<br />
・テスト、保守<br />
<br />
[解決したこと]<br />
・社員・営業所管理<br />
・スタッフ管理<br />
・スタッフ勤務管理<br />
・クライアント管理<br />
・欠員管理<br />
・休暇、厚生管理<br />
・ポイント管理<br />
・ERPへの出力<br />
<br />
[工夫したこと]<br />
・SEの設計に力を入れてもらった<br />
・フェイズによる段階開発を行った<br />
・パフォーマンスに苦慮した<br />
・機能は多かったが、CRUDレベルのシンプルさを維持するようにした
 ]]></description>
<pubDate>11- 1·î-10 21:43</pubDate>
<guid>http://www.tonttu.net/case/case_system/case_008.html</guid>
<author>クラウス</author>
</item>
<item>
<title>独自アイデアの広告サイトを立ち上げたい</title>
<link>http://www.tonttu.net/case/case_system/case_007.html</link>
<description><![CDATA[ [お客様・職種]<br />
新規ビジネス<br />
<br />
[お困りごと]<br />
独自アイデアの広告サイトを立ち上げたい<br />
<br />
[現状]<br />
新規サイト立ち上げ<br />
<br />
[提供サービス]<br />
・IT化へのアドバイス、設計<br />
・cakePHPでシステムを構築<br />
・サイトデザイン<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
1ヶ月でサイトを立ち上げることができた<br />
<br />
[工夫したこと]<br />
・ビジネスアイデアをうまくRESTfulフレームワークに当てはめることができた<br />
・cakePHPのMVCモデルによってすばやくシステム構築ができた<br />
・期間内に2度スクラッチした<br />
・Ajax(JQuery)による特異なユーザーインターフェースを提供した<br />
・ブックマーク機能を追加した<br />
 ]]></description>
<pubDate>11- 1·î-10 21:42</pubDate>
<guid>http://www.tonttu.net/case/case_system/case_007.html</guid>
<author>クラウス</author>
</item>
<item>
<title>柔軟性の高いホームページを制作して欲しい</title>
<link>http://www.tonttu.net/case/case_cms/case_006.html</link>
<description><![CDATA[ [お客様・職種]<br />
特定業種向けコンサルティング<br />
<br />
[お困りごと]<br />
柔軟性の高いホームページを制作して欲しい<br />
<br />
[現状]<br />
・ホームページ更新の手間がかかりすぎる<br />
・レイアウトの自由度が欲しい<br />
<br />
[提供サービス]<br />
・MODxCMSによるホームページ制作<br />
・外部ブログからのRSS最新情報の掲載<br />
・seesaaブログ、ライブドアブログのデザイン統一のカスタマイズ<br />
・DV形式デジタルビデオカメラからWMV形式へのコンバート<br />
・お問合せ、メルマガメールフォームの設置<br />
・サイトデザイン<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
・社内で更新できるようになった<br />
・動画が掲載できるようになった<br />
・外部ブログとの連携ができるようになった<br />
・メルマガ配信リストを受け付けられるようになった<br />
<br />
[工夫したこと]<br />
・必要に応じて、カテゴリーごとにレイアウトデザインを変えるようにした<br />
 ]]></description>
<pubDate>11- 1·î-10 21:41</pubDate>
<guid>http://www.tonttu.net/case/case_cms/case_006.html</guid>
<author>クラウス</author>
</item>
<item>
<title>HTMLコーディングとサーバー設定をして欲しい</title>
<link>http://www.tonttu.net/case/case_homepage/case_005.html</link>
<description><![CDATA[ [お客様・職種]<br />
DTP（デスクトップパブリッシュ）制作会社<br />
<br />
[お困りごと]<br />
HTMLコーディングとサーバー設定をして欲しい<br />
<br />
[現状]<br />
社内にDTPデザイナーはいるが、最新のホームページ制作は苦手<br />
<br />
[提供サービス]<br />
・ホームページ制作<br />
・サーバー設定<br />
・IT導入アドバイス<br />
・CMS導入（wordpress、MODx、Quick.CMS.Lite）<br />
・HTMLコーディング<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
・短期間でホームページを納入することができた<br />
・社内のデザイナーのIT教育ができた<br />
・社内や顧客がホームページを更新できるようになった<br />
<br />
[工夫したこと]<br />
・イラストレーターやフォトショップ等の素材からホームページを作成した<br />
・社内デザイナーのレベルに応じてIT教育を行った<br />
・社員のITスキルが上がり、HP向けの素材を用意できるようになった<br />
・後に難易度の高い問題だけ相談すればよくなった
 ]]></description>
<pubDate>11- 1·î-10 21:40</pubDate>
<guid>http://www.tonttu.net/case/case_homepage/case_005.html</guid>
<author>クラウス</author>
</item>
<item>
<title>地域イベントの開催ホームページを制作して欲しい</title>
<link>http://www.tonttu.net/case/case_homepage/case_004.html</link>
<description><![CDATA[ <p>
[お客様・職種]<br />
広報<br />
<br />
[お困りごと]<br />
地域イベントの開催ホームページを制作して欲しい<br />
<br />
[現状]<br />
新規サイト立ち上げ<br />
<br />
[提供サービス]<br />
・ホームページ制作<br />
・Ajaxを使用し様々な見せ方ができるようにした<br />
・動画を掲載した<br />
・Googleのマイマップを使用し、アクセスマップ（誘導経路）や会場案内などに活用した<br />
・サイトデザイン<br />
・FLASH制作<br />
<br />
[解決したこと]<br />
・イベントの事前告知ができた<br />
・開催中の更新ができた<br />
・動画等を配信できた<br />
・具体的な縮尺で交通案内、駐車場案内ができた<br />
<br />
[工夫したこと]<br />
・イベントの会場等に足を運び、スタッフの方向性を確かめるようにした<br />
・運用中にも取材をし、最新の様子を掲載した<br />
・動画やパノラマ等を積極的に使用した<br />
・タグや部分開閉などAjax(Jquery)を使用し、利便性を高めた<br />
・Googleのマイマップを使用し、担当者とリアルタイムで制作状況を管理した。<br />
・イベント開催中の案内計画の変更にも即対応することができた
</p>
 ]]></description>
<pubDate>11- 1·î-10 21:38</pubDate>
<guid>http://www.tonttu.net/case/case_homepage/case_004.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ホームページ制作</title>
<link>http://www.tonttu.net/case/case_homepage.html</link>
<description><![CDATA[ ホームページ制作の事例をご紹介します ]]></description>
<pubDate>11- 1·î-10 21:37</pubDate>
<guid>http://www.tonttu.net/case/case_homepage.html</guid>
<author>クラウス</author>
</item>
<item>
<title>メールマガジン配信サービスを構築したい</title>
<link>http://www.tonttu.net/case/case_system/case_003.html</link>
<description><![CDATA[ [お客様・職種]<br />
コンサルティング<br />
<br />
[お困りごと]<br />
メールマガジン配信サービスを構築したい<br />
<br />
[現状]<br />
・現状のメール配信サービスのうち、使いやすいものが見当たらない<br />
<br />
[提供サービス]<br />
・cakePHPを使用してメール配信システムを構築<br />
・Ajaxを使用してユーザーエクスペリメントの向上を心がけた<br />
・サイトデザイン<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
・お客様に簡単に使っていただけている<br />
・メールユーザーのグループ分けができる<br />
・個別メールユーザーまたはグループでドラッグアンドドロップで、メール配信先を作成できる<br />
・テンプレートで定型文を登録できる<br />
・即時または時間指定でメールを配信できる<br />
・フェイズ開発によって初期コストを抑えた<br />
<br />
[工夫したこと]<br />
・レンタルサーバーに負荷をかけないメール配信方法に苦慮した<br />
・デザインをおだやかなイメージを与えるものにした<br />
 ]]></description>
<pubDate>11- 1·î-10 21:27</pubDate>
<guid>http://www.tonttu.net/case/case_system/case_003.html</guid>
<author>クラウス</author>
</item>
<item>
<title>システム制作</title>
<link>http://www.tonttu.net/case/case_system.html</link>
<description><![CDATA[ フレームワーク等を使用したシステム開発の事例をご紹介します ]]></description>
<pubDate>11- 1·î-10 21:24</pubDate>
<guid>http://www.tonttu.net/case/case_system.html</guid>
<author>クラウス</author>
</item>
<item>
<title>マルチメディア制作</title>
<link>http://www.tonttu.net/case/case_multimedia.html</link>
<description><![CDATA[ DVD制作などマルチメディア制作の事例をご紹介します ]]></description>
<pubDate>11- 1·î-10 21:24</pubDate>
<guid>http://www.tonttu.net/case/case_multimedia.html</guid>
<author>クラウス</author>
</item>
<item>
<title>CMS構築</title>
<link>http://www.tonttu.net/case/case_cms.html</link>
<description><![CDATA[ XOOPS・MODxを使用したCMS構築の事例をご紹介します ]]></description>
<pubDate>11- 1·î-10 21:23</pubDate>
<guid>http://www.tonttu.net/case/case_cms.html</guid>
<author>クラウス</author>
</item>
<item>
<title>TV番組のDVD特典用のムービーを作成して欲しい</title>
<link>http://www.tonttu.net/case/case_multimedia/case_002.html</link>
<description><![CDATA[ [お客様・職種]<br />
DVD制作会社<br />
<br />
[お困りごと]<br />
・TV番組のDVD特典用のムービーを作成して欲しい<br />
<br />
[現状]<br />
・放送終了後のTV番組のDVDを制作している<br />
<br />
[提供サービス]<br />
・Lightwave3Dでムービーを制作<br />
・取材、ムービー設計<br />
<br />
[解決したこと]<br />
・予想以上のクオリティのムービーが出来上がった<br />
<br />
[工夫したこと]<br />
・TV局のスタッフと打合せ、現場のセットの三面図等細かい資料をいただいた<br />
・制作期間が短かったので、画面密度のわりにレンダリング時間がかからないようにした
 ]]></description>
<pubDate>11- 1·î-10 21:21</pubDate>
<guid>http://www.tonttu.net/case/case_multimedia/case_002.html</guid>
<author>クラウス</author>
</item>
<item>
<title>NPO会員向けに、会員性のホームページで情報共有したい</title>
<link>http://www.tonttu.net/case/case_cms/case_001.html</link>
<description><![CDATA[ [お客様・職種]<br />
NPO法人・パソコン教室開催<br />
<br />
[お困りごと]<br />
・NPO会員向けに、会員性のホームページで情報共有したい<br />
<br />
[現状]<br />
・通常のホームページを開設。<br />
・htpasswordで会員性のページを構築しているが、会員全員に同じパスワードを発行しているので、退会者等をアクセス不能にすることができない。<br />
・テキスト等を共有するのにいったん、管理者にメールで送ってFTPアップロードする手間がかかっている<br />
・インターネット接続プロバイダのサーバーが簡単なCGIしか使えないので、掲示板程度しか使えない<br />
・独自ドメインを取得しているが、独自メールアドレスを発行できない<br />
・パソコン教室開催スケジュールは管理者がExcelからHTMLに手動で変換していた<br />
<br />
[提供サービス]<br />
・レンタルサーバーに契約変更、ドメイン移行代行<br />
・XOOPS（ズープス）で会員性のホームページを構築<br />
・運用支援、運用代行<br />
・サイトデザイン<br />
・サーバー設定<br />
<br />
[解決したこと]<br />
・独自ドメインでメールを運用できるようになった<br />
・会員個別にアカウントIDとパスワードが発行できるようになった<br />
・退会者のアカウントIDを削除できるようになった<br />
・役員・会員・HP管理者等グループ分けして権限を与えられるようになった<br />
・会員グループは簡易な画面レイアウトなどデザインに柔軟性を持たせられるようになった<br />
・テキストや連絡等の会員向けファイルを役員が直接ブラウザーからアップロードできるようになった<br />
・パソコン教室開催スケジュールを直接役員が投稿・編集できるようになった<br />
・会員ブログを解説した<br />
・HP管理者の賃金コストを低減することができた<br />
<br />
[工夫したこと]<br />
・ゲストが自由に会員登録できなくして、新規会員は管理者に連絡してHP会員に登録するようにした<br />
・操作方法の講習会を開催した
 ]]></description>
<pubDate>11- 1·î-10 21:20</pubDate>
<guid>http://www.tonttu.net/case/case_cms/case_001.html</guid>
<author>クラウス</author>
</item>
<item>
<title>事例</title>
<link>http://www.tonttu.net/case.html</link>
<description><![CDATA[ <p>記事がありません。</p> ]]></description>
<pubDate>11- 1·î-10 21:19</pubDate>
<guid>http://www.tonttu.net/case.html</guid>
<author>クラウス</author>
</item>
<item>
<title>HTML5CANVASお絵かき</title>
<link>http://www.tonttu.net/labo/html5canvas.html</link>
<description><![CDATA[ http://www.tonttu.net/contents/canvas/canvasDraw.html ]]></description>
<pubDate>18-10·î-09 22:26</pubDate>
<guid>http://www.tonttu.net/labo/html5canvas.html</guid>
<author>クラウス</author>
</item>
<item>
<title>EC-CUBEの商品一覧でThickboxを使う</title>
<link>http://www.tonttu.net/tec/tec_eccube/ECCUBE_thickbox.html</link>
<description><![CDATA[ <p>
jQuery Thickboxとは、Ajaxの画像ギャラリーで、<br />
・複数の画像をページ送りして表示する<br />
・サムネイル（縮小画像）同一ページにかぶさるように大きな画像を表示する<br />
・画像だけでなく、他のページも表示可能<br />
などができて操作性にすぐれます。<br />
これをEC-CUBEに組み込みます。
</p>
<p>
１． http://jquery.com/demo/thickbox/から<br />
jquery.jsとloadingAnimation.gif、thickbox.css、thickbox.jsというファイルをダウンロードします。
</p>
<p>
２．解凍したファイルをアップロードします。 （ここでは/html/user_data/js/としました）
</p>
<p>
２．EC-CUBE管理画面のデザイン管理＞ページ詳細設定＞商品一覧ページをクリックします。
</p>
<p>
３．冒頭に次のコードを記述します。 
</p>
<pre class="php">
&lt;LINK rel=stylesheet type=text/css href=&quot;html/user_data/js/thickbox.css&quot; media=all&gt;
&lt;SCRIPT type=text/javascript src=&quot;html/user_data/js/jquery.js&quot;&gt;&lt;/SCRIPT&gt;
&lt;SCRIPT type=text/javascript src=&quot;html/user_data/js/thickbox.js&quot;&gt;&lt;/SCRIPT&gt;
</pre>
<p>
４．中ほどの画像表示のコードを書き換えます。
</p>
<pre class="php">
&lt;div class=&quot;listphoto&quot;&gt;
&lt;!--★画像★--&gt;
&lt;a href=&quot;&lt;!--{$smarty.const.IMAGE_SAVE_URL|sfTrimURL}--&gt;/&lt;!--{$arrProducts[cnt].main_image}--&gt;&quot; title=&quot;&lt;!--{$arrProducts[cnt].name|escape}--&gt;&quot; class=&quot;thickbox&quot; rel=&quot;main_image&quot;&gt;&lt;img src=&quot;&lt;!--{$smarty.const.IMAGE_SAVE_URL|sfTrimURL}--&gt;/&lt;!--{$arrProducts[cnt].main_list_image}--&gt;&quot; title=&quot;&lt;!--{$arrProducts[cnt].name|escape}--&gt;&quot; class=&quot;picture&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
</pre>
<p>
これだけで、商品詳細ーメイン画像を表示し、rel=&quot;main_image&quot;により同一ページに表示されている商品の画像をページ送りされます。
</p>
<p>
<img alt="ECcube_Thickbox" height="525" src="assets/images/tec/eccube_thickbox.jpg" width="540" /> 
</p>
 ]]></description>
<pubDate>12-10·î-09 02:11</pubDate>
<guid>http://www.tonttu.net/tec/tec_eccube/ECCUBE_thickbox.html</guid>
<author>クラウス</author>
</item>
<item>
<title>eccube</title>
<link>http://www.tonttu.net/tec/tec_eccube.html</link>
<description><![CDATA[ <p>
EC-CUBE（イーシーキューブ）は日本製のネットショップCMSです。<br />
多くのネットショップに使われいます。<br />
オープンソースのネットショップというと、<br />
・osCommerce<br />
・ZEN-Cart<br />
・EC-CUBE<br />
の３つくらいしか著名ではありません。<br />
</p>
<p>
<ul><li><a href="/tec/tec_eccube/ECCUBE_thickbox.html" title="EC-CUBEの商品一覧でThickboxを使う" >EC-CUBEの商品一覧でThickboxを使う</a></li>
<li class="last"><a href="/tec/tec_eccube/ECCUBE_uriage.html" title="売上集計でエラーが出る" >売上集計でエラーが出る</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>12-10·î-09 02:09</pubDate>
<guid>http://www.tonttu.net/tec/tec_eccube.html</guid>
<author>クラウス</author>
</item>
<item>
<title>CMS構築・カスタマイズ</title>
<link>http://www.tonttu.net/CMSconstraction.html</link>
<description><![CDATA[ <p>
お客様のご要望に応じて、様々なご提案をさせていただきます。 
</p>
<h2>
各種サービス・CMS 特徴
</h2>
<table border="1" cellpadding="2" cellspacing="0">
	<tbody>
		<tr style="background-color: #66ffff">
			<td>&nbsp;</td>
			<td>ECcube</td>
			<td>Wordpress</td>
			<td>MODx</td>
			<td>XOOPS</td>
			<td>seesaaブログ</td>
			<td>Quick.<br />
			CMS.Lite</td>
			<td>独自<br />
			開発</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">独自Webサービスをしたい</td>
			<td align="center">&nbsp;</td>
			<td align="center">&nbsp;</td>
			<td align="center">&nbsp;</td>
			<td align="center">&nbsp;</td>
			<td align="center">&nbsp;</td>
			<td align="center">&nbsp;</td>
			<td align="center">◎</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">独自サイトで運営したい</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">&nbsp;</td>
			<td align="center">○</td>
			<td align="center">○</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">デザインカスタマイズ</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">◎</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">ネットで販売したい</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">◎</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">会員向けのサービスをしたい</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">○</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">商品等多数のページが必要</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">○</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">ブログを組み込みたい</td>
			<td>&nbsp;</td>
			<td align="center">◎</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">あまり更新をしない</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td align="center">○</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">お問合せメールフォーム</td>
			<td align="center">○</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td align="center">○</td>
			<td>&nbsp;</td>
			<td align="center">○</td>
			<td align="center">○</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">プラグインが豊富</td>
			<td>&nbsp;</td>
			<td align="center">◎</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td bgcolor="#f8fff0">デザインが選べる</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td align="center">○</td>
			<td align="center">◎</td>
			<td align="center">◎</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
	</tbody>
</table>
<p>
※上記は基本機能での参考です。<br />
いずれもカスタマイズや外部サービスの連携等で補完させることができます。<br />
※<a href="service/opensouce.html">各種CMSについてはこちら</a> 
</p>
<p>
&nbsp;
</p>
<h2>サービス構築の流れ<br />
</h2>
１．ご要望をヒアリングさせていただきます。<br />
２．ご予算に合わせてご提案をします。<br />
３．サイト構成を決めます。お見積りをさせていただきます。<br />
４．各種ご契約をします。<br />
５．デザインとサイト構築をします。 <br />
６．検収をしていただきます。 <br />
７．ご請求をさせていただきます。
<ol>
</ol>
<p>
・ヒアリングにより最適と思われるご提案をします。必要であれば各種専門家のご紹介もします。<br />
・低予算でもそれなりのご提案ができます。社内のIT成熟度により運用面でのご提案も変わります。<br />
・サイト構成により、必要なページ数や素材の制作料が割り出せます。<br />
・製作中でも設計書やデザインをご確認いただけます。<br />
・独自ドメインやSSL暗号化証明書はご希望であれば契約・お支払い代行をします。<br />
</p>
<p>
ITの活用について、アイデアレベルのサポートもします。お気軽にご相談ください。<br />
</p>
<p>
&nbsp;
</p>
<h2>参考料金</h2>
<p>
サイト構成：5万円～<br />
CMSインストール・初期設定：10万円～<br />
デザイン：5万円～<br />
ページ制作：1万円（/ページ）<br />
EC-CUBE商品追加：2,000円（/商品）<br />
プラグイン開発：5万円～<br />
保守（インシデント）：2万円～（/1件）<br />
FLASH制作：5万円～
</p>
<p>
Wordpress・EC-CUBEインストール初期費用<br />
サイト構成費用：5万円<br />
インストール費用：10万円<br />
ページ制作費用：10万円（10ページ）<br />
参考計：20万円
</p>
<p>
・基本的に初期立ち上げまですべて面倒を見させていただきます。<br />
・ご予算に応じてフェイズ単位での追加構築もできます。 
</p>
<p>
&nbsp;
</p>
<h2>カスタマイズ参考</h2>
<h3>EC-CUBE商品一覧にExcel風表形式編集</h3>
<p>
通常、ネットショップの商品管理は商品一覧ページと個々の商品詳細編集ページが分かれています。<br />
しかし実際の運用では、複数の商品価格のみ更新といったニーズが多いのが実情です。<br />
実際のところ、いままでのホームページではこういう利便性は困難でした。<br />
それを可能にするのがグーグルマップで注目されたAjax（エージャックス）です。
</p>
<p>
<img alt="ECcube_sigmagrid" height="211" src="assets/images/tec/eccube_sigmagrid.jpg" width="550" /><br />
商品名や商品価格などを一覧からどんどん更新できます。項目の移動は十字キーで行えます。
<img alt=" " height="161" src="assets/images/tec/eccube_sigmagrid1.jpg" width="500" /><br />
表を見やすくするために列の並び替えや固定などを行えます。
<img alt=" " height="229" src="assets/images/tec/eccube_sigmagrid2.jpg" width="500" /><br />
選択項目も作れます。<br />
<br />
<img alt=" " height="265" src="assets/images/tec/eccube_sigmagrid3.jpg" width="500" /><br />
</p>
<p>
複数行入力も行えます。<br />
<img alt=" " height="251" src="assets/images/tec/eccube_sigmagrid4.jpg" width="380" /> <br />
列の表示・非表示も行えます。<br />
これらの機能はユーザーからしては「できて当たり前」と思われるでしょう。それを「かなえます」<br />
</p>
<h3>
WYSIWYGエディタ</h3>
<div class="s">
</div>
<p>
これもあたりまえの機能ですが、本文などの入力ではホームページ・ビルダーのような高度編集がしたいところです。<br />
これをかなえるのがWYSIWYGエディタと呼ばれる技術です<br />
代表的なライブラリに。<br />
・FCKEditor<br />
・tinyMCE<br />
・xinha<br />
があります。MODxやWordpressにはこれを使うプラグインがあります。<br />
このページ自体、MODx上のtinyMCEでラクラク更新しています。<br />
</p>
<p>
<img alt=" " height="366" src="assets/images/tec/WYSIWYG.jpg" width="550" /><br />
</p>
<p>
ここで注意したいのが画像管理機能です。<br />
日本でよくカスタマイズに使われるのがFCKeditorですが、これの画像管理機能は弱く実用に耐えるものは有料で提供されています。<br />
当方ではFCKEditorを使う事例ではMCPUKをアドオンし、独自開発ではWYSIWYGエディタに「xinha」を採用しています。<br />
・wordpress：fckeditor+MCPUK<br />
・eccube：xinha（+ExtendedFilemanager）<br />
・MODx：tinyMCE＋MCPUK（標準）<br />
・Quick.CMS.Lite：xinha（+ExtendedFilemanager）<br />
・XOOPS：fckeditor+MCPUK<br />
<img alt="MCPUK" height="393" src="assets/images/tec/MCPUK.jpg" width="550" /> 
</p>
<div class="s">
</div>
 ]]></description>
<pubDate>07-10·î-09 21:49</pubDate>
<guid>http://www.tonttu.net/CMSconstraction.html</guid>
<author>クラウス</author>
</item>
<item>
<title>同じモデルをHABTMプラスwithする</title>
<link>http://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html</link>
<description><![CDATA[ <p>
HABTM(ハビタム、hasAndBelongsToMany）とは、モデル間の中間テーブルによる多対多のリレーションを構築します。<br />
料理モデル「Cooking」と素材モデル「Food」がある場合、「cooking_id」「food_id」のフィールドを持つ中間テーブル「cookings_foods」テーブルを作り、モデル「Cooking」には、 
</p>
<p>
&nbsp;var $hasAndBelongsToMany = array(&#39;Food&#39;); 
</p>
<p>
と記述するとCooking-&gt;findで自動的にFoodをぞろぞろ取ってきてくれる、、、はずです。すいません、この例は未検証です。<br />
この場合、取得できるのはCookingとFoodだけですが、「with」句を付けると「CookingsFood」もついでに取ってきてくれます。 
</p>
<pre class="php">
var $hasAndBelongsToMany = array(&#39;Food&#39; =&gt;
&nbsp;&nbsp;&nbsp;&nbsp;array(&#39;with&#39; =&gt; &#39;CookingsFood&#39;)
); 
</pre>
<p>
中間テーブルには「承認済」とか「仲良し度」とかの関係性を記録したい場合に使えます。<br />
今回はこれに加えて、同一テーブル間を多対多でつなぎたいと考えました。例はSNSのユーザー間でマイミクをするようなものです。<br />
ユーザー「Account」モデルと、「account_id」「member_id」を持つ中間「Member」モデルを用意します。<br />
Accountモデルに、
</p>
<pre class="php">
&nbsp;var $hasAndBelongsToMany = array(
&nbsp;&nbsp;&nbsp;&#39;Friend&#39; =&gt; array(&#39;className&#39; =&gt; &#39;Account&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;joinTable&#39; =&gt; &#39;members&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;with&#39; =&gt; &#39;Member&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;foreignKey&#39; =&gt; &#39;account_id&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;associationForeignKey&#39; =&gt; &#39;member_id&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;conditions&#39; =&gt; &#39;&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;order&#39; =&gt; &#39;&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;limit&#39; =&gt; &#39;&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;uniq&#39; =&gt; false,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;finderQuery&#39; =&gt; &#39;&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;deleteQuery&#39; =&gt; &#39;&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;insertQuery&#39; =&gt; &#39;&#39;
&nbsp;&nbsp;&nbsp;)
&nbsp;);
</pre>
<p>
を記述します。お友達は「Friend」の下に、その中の「Member」にmemberモデルの内容が収められます。
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>28- 9·î-08 06:03</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2で携帯用</title>
<link>http://www.tonttu.net/tec/cakePHP/cakePHP_mobile.html</link>
<description><![CDATA[ <p>
cakePHPで携帯用にする方法はいくつかあるようですが、私の場合。 
</p>
<p>
・内部はUTF-8、出力はSHIFT-JIS,入力をUTF-8に変換<br />
app/app_controller.php<br />
</p>
<pre class="php">
if($this-&gt;RequestHandler-&gt;isMobile()){
&nbsp;&nbsp;&nbsp;mb_language(&#39;ja&#39;);
&nbsp;&nbsp;&nbsp;mb_internal_encoding(&#39;UTF-8&#39;);
&nbsp;&nbsp;&nbsp;mb_http_output(&#39;SJIS&#39;);
&nbsp;&nbsp;&nbsp;ob_start(&quot;mb_output_handler&quot;);
&nbsp;&nbsp;&nbsp;mb_convert_variables(&quot;UTF-8&quot;, &quot;SJIS&quot;, $this-&gt;params[&#39;url&#39;]);
&nbsp;&nbsp;&nbsp;mb_convert_variables(&quot;UTF-8&quot;, &quot;SJIS&quot;, $this-&gt;params[&#39;form&#39;]);
&nbsp;&nbsp;&nbsp;mb_convert_variables(&quot;UTF-8&quot;, &quot;SJIS&quot;, $this-&gt;data);
}
</pre>
<p>
・RequestHandler(拡張子)で「.mobile」を使用する。<br />
app/config/routes.phpに追加<br />
&nbsp;&nbsp;Router::parseExtensions(&#39;mobile&#39;);<br />
app/app_controller.php<br />
&nbsp;&nbsp;$this-&gt;RequestHandler-&gt;setContent(&quot;mobile&quot;,&#39;text/html&#39;); 
</p>
<p>
app/viewsの各コントローラーおよびlayoutsのフォルダに「mobile」フォルダを作成してビューを配置するのですが、なぜかドコモHPから入手できるiモードHTMLシミュレータでエラーになりました。layout用ビューを秀丸で一度文字コードをSFIFT-JISで保存してからUTF-8で保存しなおすと直りました。 
</p>
<p>
・リダイレクトをオーバーライド,セッションID付加<br />
app/app_controller.php<br />
</p>
<pre class="php">
//redirect メソッド書き換え<br />
&nbsp;function redirect($url,$status = null) {
&nbsp;&nbsp;if($this-&gt;RequestHandler-&gt;isMobile()){
&nbsp;&nbsp;&nbsp;if(strpos($url, &#39;.mobile&#39;) === false) {
&nbsp;&nbsp;&nbsp;&nbsp;$url = $url.&quot;.mobile?&quot;.Configure::read(&#39;Session.cookie&#39;).&quot;=&quot;.session_id();
&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$url = $url.&quot;?&quot;.Configure::read(&#39;Session.cookie&#39;).&quot;=&quot;.session_id();
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;parent::redirect($url,$status);
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;parent::redirect($url,$status);
&nbsp;&nbsp;}
}
</pre>
<p>
他にも各リンクでセッションID引き渡しをします。<br />
core.phpの<br />
Security.levelがhighの場合、Session.phpでsession_regenerate_id()(セッションID振り直し)してくれます。 
</p>
<p>
各リンクでセッションID引き渡しがめんどうなら、リーサルウェポンsession.use_trans_sidを使う手も。<br />
core.phpの<br />
&nbsp;&nbsp;Configure::write(&#39;Session.save&#39;, &#39;mobilesession&#39;);<br />
とかカスタム宣言して、同フォルダにmobilesession.phpファイルを作成。session.phpの457行目以下を参考にしてカスタマイズします。<br />
注意！session.use_trans_sidはPHP5以上でないとini_setできません。 
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>28- 5·î-08 11:01</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/cakePHP_mobile.html</guid>
<author>クラウス</author>
</item>
<item>
<title>うぇブログ(xeblog2)をPHP5で動かす</title>
<link>http://www.tonttu.net/tec/tec_xoops/tec_xoops_xeblog.html</link>
<description><![CDATA[ <p>
うぇブログ(xeblog)はXOOPS用の高機能ブログモジュールです。Ethnaというフレームワークを使用しています。<br />
これをPHP5の環境で動かそうとしたらハマりましたのでメモ。<br />
Ethna自体をアップグレードすればすむかも知れませんし、今さっき作業したばかりなので見落としもあるかもしれません。 
</p>
<p>
1)PHP4互換モードにする<br />
.htaccessを使い、<br />
php_flag zend.ze1_compatibility_mode on<br />
の行を足してPHP4互換にしてしまいます。これで本文以外は表示されます。。
</p>
<p>
2）生成されるSELECT文のフィールドが空になっている。<br />
&nbsp;「SELECT&nbsp; FROM ...」となっていましたので、「SELECT&nbsp;* FROM ...」とします。<br />
common/xanhte/lib/Ethna/class/Ethna_AppObject.php<br />
を「SELECT」で検索し（複数見つかります）、たとえば1117行目あたりの上に<br />
if(!$column) $column = &quot;*&quot;;<br />
&nbsp;&nbsp;$sql = &quot;SELECT $column FROM $tables $condition $group_by $sort $limit&quot;;<br />
を足します。$columnsとなっているところもあります。DISTINCTとある場合はそのままにします。<br />
これでブログ記事一覧が表示されます。 
</p>
<p>
3）PHP5では、array_merge関数の動作が違う。<br />
どう違うのかは文献を探っていただくとして、その文献に対処も載っています。(array)でキャストします。<br />
同ファイルの1114行目あたりの&nbsp;<br />
$prop_def = array_merge($this-&gt;prop_def, $search_prop_def);<br />
を<br />
$prop_def = array_merge((array)$this-&gt;prop_def, (array)$search_prop_def);<br />
とします。<br />
これで個別記事が表示されます。<br />
XOOPSをgrepしたらarray_mergeはたくさん出てきたのですが、どうすればよいのでしょうね＾＾） 
</p>
 ]]></description>
<pubDate>22- 5·î-08 05:02</pubDate>
<guid>http://www.tonttu.net/tec/tec_xoops/tec_xoops_xeblog.html</guid>
<author>クラウス</author>
</item>
<item>
<title>XOOPS</title>
<link>http://www.tonttu.net/tec/tec_xoops.html</link>
<description><![CDATA[ <p>
&nbsp;
</p>
<p>
<ul><li class="last"><a href="/tec/tec_xoops/tec_xoops_xeblog.html" title="うぇブログ(xeblog2)をPHP5で動かす" >うぇブログ(xeblog2)をPHP5で動かす</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>22- 5·î-08 04:49</pubDate>
<guid>http://www.tonttu.net/tec/tec_xoops.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP+smartyでキャッシュを効かせる</title>
<link>http://www.tonttu.net/tec/cakePHP/cakePHPsmartyCache.html</link>
<description><![CDATA[ <p>
cakePHPでSmartyを使用しているとキャッシュに苦労します。<br />
cakePHP標準のキャッシュが使えるtipsを見つけたいものですが、、、<br />
今回はsmartyのキャッシュを使う方法ですが、落とし穴があるかも知れませんので自己責任でお願いします。 
</p>
<p>
cakeははじめにいろいろ自分の初期化をしてデータベースアクセスし、最後にVIEWを生成します。<br />
このうち初期化の後にキャッシュチェックをして有効であれば、その後をスルーすることにします。<br />
smartyは独自にキャッシュメカニズムを持っているのですが、最後にならないとsmartyが働かないので、コアに手を入れて初期化直後にVIEWクラスを生成します。 
</p>
<p>
まず、smarty内部でキャッシュファイルを生成するようにします。<br />
(私はrequestActionでブロック表示しているものだけキャッシュしたかったので、bareを見ています)<br />
/app/views/smarty.phpの「function __construct」関数（$this-&gt;ext= &#39;.tpl&#39;;とか設定しているところ）の最後に、 
</p>
<pre class="php">
if($this-&gt;params[&#39;bare&#39;] == &#39;1&#39;) {  
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Smarty-&gt;cache_lifetime = 3600; //有効秒数
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Smarty-&gt;caching = true;&nbsp; //有効化
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;cacheid = $this-&gt;params[&#39;url&#39;][&#39;url&#39;]; //url毎にキャッシュファイルを生成する。テンプレート単位でキャッシュする場合は不要
} 
</pre>
<p>
function _render(...)の最後のfetchを以下に変更、&nbsp; 
</p>
<pre class="php">
	return $this-&gt;Smarty-&gt;fetch($___viewFn, $this-&gt;cacheid);
</pre>
<p>
/cake/dispatcher.phpの&nbsp;240行目あたり(return $this-&gt;_invoke(...)の直前)で、 
</p>
<pre class="php">
include_once(VIEWS.&quot;smarty.php&quot;);
$viewClass =&amp; new SmartyView($controller);
$tplfile = $viewClass-&gt;_getViewFileName($this-&gt;params[&#39;action&#39;]);
if($viewClass-&gt;Smarty-&gt;is_cached($tplfile,$this-&gt;params[&#39;url&#39;][&#39;url&#39;]) === true) {
&nbsp; &nbsp; $viewClass-&gt;render();
&nbsp;&nbsp;&nbsp; return;
}
</pre>
<p>
smarty.phpをインクルードしてVIEWクラスを生成し、is_cached関数が真の場合、renderしてreturnしてしまいます。&nbsp; 
</p>
<hr />
<p>
ちなみにsmartyテンプレートからcakeのrequestActionを呼ぶにはヘルパーを自作しました。<br />
/app/views/helpers/block.php 
</p>
<pre class="php">
&lt;?php  
class BlockHelper extends AppHelper {  
&nbsp;&nbsp;&nbsp; //requestAction  
&nbsp;&nbsp;&nbsp; function fetch($address = null) {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;pageTitle = $title;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$address) return;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $this-&gt;requestAction($address, array(&#39;return&#39;));  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $this-&gt;output($output);  
&nbsp;&nbsp;&nbsp; }  
}  
?&gt;
</pre>
<p>
コントローラーにhelpers宣言しておいて、テンプレートからは<br />
{$block-&gt;fetch(&quot;/tags/index&quot;)}<br />
でNucleusライクに他のアクションの描画結果を呼び出せます。 
</p>
<hr />
<p>
もっと追加＾＾）smartyでfetchした結果を再度render評価します。<br />
ブログや管理画面で本文を入力した内容にsmarty関数を書いたりした場合に、一度fetchして再度fetchすることによって巻数を展開します。<br />
smartyにはリソースプラグインという機能があり、ファイルとしてテンプレートを読み込む以外にデータベースなどからテンプレートを読み込めるわけですが、なぜかPHP変数をテンプレートとして使えません。smartyプラグインとして作成します。ここではファイル名は「resource.memory.php」
</p>
<pre class="php">
&lt;?php
function smarty_resource_memory_source($tpl_name,&amp;$tpl_source,&amp;$smarty_obj){
&nbsp; $tpl_source = $tpl_name;
&nbsp; return true;
}
function smarty_resource_memory_timestamp($tpl_name,&amp;$tpl_timestamp,&amp;$smarty_obj){
&nbsp; $tpl_timestamp = time();
&nbsp; return true;
}
function smarty_resource_memory_secure($tpl_name,&amp;$smarty_obj){
&nbsp; return true;
}
function smarty_resource_memory_trusted($tpl_name,&amp;$smarty_obj){
}
?&gt;
</pre>
<p>
/cake/dispatcher.phpの上記fetch箇所を&nbsp;
</p>
<pre class="php">
$text = $this-&gt;Smarty-&gt;fetch($___viewFn, $this-&gt;cacheid);
if(strpos($text, $this-&gt;Smarty-&gt;left_delimiter) !== false) {
&nbsp;&nbsp;&nbsp; $text = $this-&gt;Smarty-&gt;fetch(&quot;memory:&quot;.$text);
}
return $text;
</pre>
<p>
&nbsp;
</p>
</hr></hr> ]]></description>
<pubDate>29- 3·î-08 00:46</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/cakePHPsmartyCache.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2でBasic認証</title>
<link>http://www.tonttu.net/tec/cakePHP/cakePHP12_2_BASIC.html</link>
<description><![CDATA[ <p>
cakePHP1.2でBASIC認証を使いたい。BASIC認証とは会員性のホームページなどにあるログインダイアログが表示されて正しいパスワードを入力しないと先へ進めないもの。普通はApacheのhtacessとhtpasswordを使わなければならないものが、以下のように簡単にできます。<br />
Securityコンポーネントを使います。コードを読みながらなので自己責任でお願いします。<br />
データベースとログインフォームを使った認証ならAuthコンポーネントを使いましょう。&nbsp;
</p>
<pre class="php">
var $components = array(&#39;Security&#39;);
$users = array(&#39;（ユーザー名）&#39;=&gt;&#39;（パスワード）&#39;);
$this-&gt;Security-&gt;requireLogin(&#39;add&#39;,&#39;edit&#39;,&#39;delete&#39;); //使いたいアクション
$this-&gt;Security-&gt;requireLogin(array(&#39;type&#39;=&gt;&#39;basic&#39;,&#39;realm&#39;=&gt;&quot;パスワードを入力してください&quot;,&#39;users&#39;=&gt;$users));&nbsp;
</pre>
<p>
Contoroller毎にも制御したいのですが、まだわかりません。<br />
ただ、こうすると入力フォームでもトークンキーを使った認証をしようとしてくれます。($form-&gt;create()と$form-&gt;end()を使うらしい)<br />
いろいろやったけどうざったいので、<br />
$this-&gt;params[&#39;requested&#39;] = 1;<br />
を付けて回避しました。本来はReqestActionで呼び出された時の判定用みたいなので、こういう使い方をしてはいけない気がします。<br />
このままでもREST呼び出ししたときにはBASIC認証を要求してくれました。<br />
<br />
BASIC認証ではパスワードが平文で通信されるので注意。<br />
&nbsp;* An associative array of usernames/passwords used for HTTP-authenticated logins.<br />
&nbsp;* If using digest authentication, passwords should be MD5-hashed.<br />
digest認証モードではmd5ハッシュしなさいだそうです。
</p>
 ]]></description>
<pubDate>16- 3·î-08 00:15</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/cakePHP12_2_BASIC.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2でRESTfulなPUTでEDIT</title>
<link>http://www.tonttu.net/tec/cakePHP/cakePHP-RESTful-PUT.html</link>
<description><![CDATA[ <p>
ここではPUTメソッドでXML形式のデータを受信して更新します。
</p>
<p>
まずはコードを。<br />
普通アクセスの場合は、まずfindして入力フォームに送る。受信データがあればsave、失敗したら$this-&gt;dataをsetして戻す、<br />
RESTアクセスの場合は、XMLとみなしてUnserializeして$this-&gt;dataにしてsave。エラーがあればステータスコード400を返す。<br />
</p>
<pre class="php">
function edit($id = null) {  
&nbsp;&nbsp;if(!empty($this-&gt;params[&#39;id&#39;])) $id = $this-&gt;params[&#39;id&#39;];//RESTアクセスの場合idをparamsから取る  
&nbsp;&nbsp;if(!$id) die;//idがなければ終了  
&nbsp;&nbsp;$this-&gt;pageTitle = &quot;編集&quot;;//ページタイトル 
&nbsp;&nbsp;$REQUEST_METHOD = $_SERVER[&#39;REQUEST_METHOD&#39;];//RESTアクセスの判断  
&nbsp;&nbsp;if($REQUEST_METHOD == &#39;PUT&#39;) {//PUTの場合  
&nbsp;&nbsp; //認証しましょう  
&nbsp;&nbsp;&nbsp;$putdata = fopen(&quot;php://input&quot;,&quot;r&quot;);//一般入力php://inputから取るそうだ  
&nbsp;&nbsp;&nbsp;require_once(&quot;XML/Unserializer.php&quot;);//ライブラリ読み込み  
&nbsp;&nbsp;&nbsp;$param = array(&#39;complexType&#39; =&gt; &quot;array&quot;);  
&nbsp;&nbsp;&nbsp;$xml = new XML_Unserializer($param);//パラメーターを指定してインスタンス化  
&nbsp;&nbsp;&nbsp;$xml-&gt;unserialize($putdata);//データを渡す  
&nbsp;&nbsp;&nbsp;$result = $xml-&gt;getUnserializedData();//XMLから配列を得る  
&nbsp;&nbsp;&nbsp;if (PEAR::isError($result)) {//エラーがあれば  
&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;HTTP/1.0 400 Bad Request&quot;);//コード400を返す  
&nbsp;&nbsp;&nbsp;&nbsp;die($result-&gt;getMessage());//エラーメッセージも送って終了  
&nbsp;&nbsp;&nbsp;} else {  
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;data = $result;//変換成功なら$this-&gt;dateにしてしまう。  
&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;}  
&nbsp;&nbsp;if(!empty($this-&gt;data)) {//受信データがあれば  
&nbsp;&nbsp;&nbsp; //ここでデータを検証しましょう  
&nbsp;&nbsp;&nbsp;if(($this-&gt;Article-&gt;create($this-&gt;data) &amp;&amp; $this-&gt;Article-&gt;validates())) {//バリデーションチェック  
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;Article-&gt;save($this-&gt;data);//通ればsave  
&nbsp;&nbsp;&nbsp;&nbsp;$cond = array(&quot;Article.id&quot; =&gt; $id);  
&nbsp;&nbsp;&nbsp;&nbsp;$article = $this-&gt;Article-&gt;find($cond);//save後のデータを取る  
&nbsp;&nbsp;&nbsp;} else {//失敗したら  
&nbsp;&nbsp;&nbsp;&nbsp;$article = $this-&gt;data;//$this-&gt;dataを戻す  
&nbsp;&nbsp;&nbsp;&nbsp;if($REQUEST_METHOD == &#39;PUT&#39;) {//RESTアクセスの場合  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header(&quot;HTTP/1.0 400 Bad Request&quot;);//400を返す  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(join($this-&gt;validateErrors($this-&gt;Article)));//バリデーションエラーをモデルから渡す  
&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;} else {  
&nbsp;&nbsp;&nbsp;$cond = array(&quot;Article.id&quot; =&gt; $id);//通常初回アクセスの場合  
&nbsp;&nbsp;&nbsp;$article = $this-&gt;Article-&gt;find($cond);//データを取る  
&nbsp;&nbsp;}  
&nbsp;&nbsp;if($REQUEST_METHOD == &#39;PUT&#39;) exit;//RESTアクセスの場合、終了 
&nbsp;&nbsp;if(!$article) die;//データがなければ終了  
&nbsp;&nbsp;$this-&gt;set(&#39;article&#39;,$article);//VIEWに渡す  
}&nbsp; 
</pre>
<p>
apcheのhttpd.confでLIMIT GET POST PUT DELETEもしておく必要があるのかな。<br />
たいていのWWWブラウザーではメソッドにGETとPOST以外は使えないので、専用ソフトを使いました。<br />
なぜか「eXeve」ではPUT&gt;EDIT誘導がうまくいかなくて「restclient」と「RESTTest」でやったらうまく出来たよ。 
</p>
 ]]></description>
<pubDate>14- 3·î-08 01:19</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/cakePHP-RESTful-PUT.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2とPEAR:XMLでXML出力</title>
<link>http://www.tonttu.net/tec/cakePHP/PEAR-XML.html</link>
<description><![CDATA[ <p>
cakePHP1.2ではXML機能があるので、PHPのバージョンによらずXMLがあつかいやすくなったそうだ、、、けどPHP4の環境ということもあり、あえてPEAR:XMLを使うことにする。<br />
cakePHP1.2の$xml-&gt;serialize(変数)では属性に展開されてしまうのでイヤでした。配列にもどすやり方もわからなかったし（相互変換ができれば使うかも）。 
</p>
<p>
そのまえにcakePHP1.2では「webservice」が変わり、「(URL).xml」等でXML,RSS,JSONなどのフォーマットで出力できるようになった。<br />
/app/config/routes.phpに<br />
&nbsp; Router::parseExtensions(&#39;rss&#39;,&#39;xml&#39;,&#39;json&#39;);<br />
を追加して、コントローラーの頭で<br />
&nbsp;&nbsp;
var $components = array(&#39;RequestHandler&#39;);<br />
を設定しておく。これで<br />
(コントローラー)/index/page:2/serch:hoge/category:flower.xml<br />
でXML出力を試みるみたい。VIEWは<br />
/app/views/(コントローラー)/xml/フォルダに各アクション名のを置いておく。LAYOUTも同様。<br />
（余談：RequestHandlerを読むと携帯判別しているような箇所もある＾＾） 
</p>
<p>
※あらかじめ「vendors」にPEARおよびXMLを仕込んでパスを通して使えるようにしておいてください。<br />
smartyが使いたいので、smartyプラグインでserializeできるようにする。<br />
</p>
<pre class="php">
function.xml_serializer.php
&lt;?php
function smarty_function_xml_serializer($params, &amp;$smarty) {
&nbsp; if($params[&#39;value&#39;] == &#39;&#39;) return;
&nbsp;require_once &#39;XML/Serializer.php&#39;;
&nbsp;$options = array(
&nbsp;&nbsp; &quot;indent&quot; =&gt; &quot; &quot;,
&nbsp;&nbsp; &quot;linebreak&quot; =&gt; &quot;\n&quot;,
&nbsp;&nbsp; &quot;typeHints&quot; =&gt; false,
&nbsp;&nbsp; &quot;addDecl&quot; =&gt; true,
&nbsp;&nbsp; &quot;encoding&quot; =&gt; &quot;UTF-8&quot;,
&nbsp;&nbsp; &quot;rootName&quot; =&gt; &quot;root&quot;,
&nbsp;&nbsp; &quot;rootAttributes&quot; =&gt; null,
&nbsp;&nbsp; &quot;defaultTagName&quot; =&gt; &quot;data&quot;,
&nbsp;);
&nbsp;$serializer = new XML_Serializer($options);
&nbsp;if ($serializer-&gt;serialize($params[&#39;value&#39;])) {
&nbsp;&nbsp; $xml = $serializer-&gt;getSerializedData();
&nbsp;&nbsp;print($xml);
&nbsp;}
}
?&gt;
</pre>
<p>
VIEWからは<br />
&nbsp; &lt;{xml_serializer value=(変数)}&gt;<br />
layouts/default.tplには<br />
&nbsp;&nbsp;
&lt;{$content_for_layout}&gt;<br />
だけ書いておく。 
</p>
<p>
出力は<br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;<br />
&lt;data&gt;<br />
&nbsp; &lt;Article&gt;<br />
&nbsp; &lt;id&gt;2&lt;/id&gt; <br />
&nbsp; &lt;title&gt;2&lt;/title&gt; <br />
&nbsp; &lt;category_id /&gt; <br />
&nbsp; &lt;comment&gt;2&lt;/comment&gt; <br />
&nbsp; &lt;body&gt;2&lt;/body&gt; <br />
&nbsp; &lt;visible&gt;0&lt;/visible&gt; <br />
&nbsp; &lt;modified&gt;2008-03-12 14:19:48&lt;/modified&gt; <br />
&nbsp; &lt;created&gt;2008-03-12 14:19:48&lt;/created&gt; <br />
&nbsp; &lt;/Article&gt;<br />
&lt;/data&gt;<br />
となります。$xml-&gt;UnserializerにかませるとPHPの配列にしてくれるので後々扱いやすいです。 
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>14- 3·î-08 00:50</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/PEAR-XML.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2でMySQL3を使いたい</title>
<link>http://www.tonttu.net/tec/cakePHP/useMySQL3.html</link>
<description><![CDATA[ <p>
どうしてもうまくいかないと思ったらcakePHP1.2ではMySQL4以上とのこと<br />
/app/config/database.php<br />
&nbsp;* driver =&gt; The name of a supported driver; valid options are as follows:<br />
&nbsp;*&nbsp;&nbsp;mysql &nbsp;&nbsp;- MySQL 4 &amp; 5, 
</p>
<p>
Updateの時にAliasを使ってくれて、そこでエラー。複数モデルを一度に更新できるためなんだろうけどね。<br />
しかたないのでこれを1.1のように1回1モデルしかUpdateできなくする。&nbsp; 
</p>
<p>
/cake/libs/model/datasources/dbo_source.phpの1245行目を<br />
</p>
<pre class="php">
case &#39;update&#39;:
//return &quot;UPDATE {$table} {$this-&gt;alias}{$alias} {$joins} SET {$fields} {$conditions}&quot;;
$sql = &quot;UPDATE {$table} SET {$fields} {$conditions}&quot;;
$sql = str_replace(&quot;$alias&quot;.&quot;.&quot;,&quot;&quot;,$sql);
return $sql; 
</pre>
<p>
検証が十分でないので、自己責任でお願いします。 
</p>
 ]]></description>
<pubDate>14- 3·î-08 00:25</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/useMySQL3.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP1.2でRESTfulなindex</title>
<link>http://www.tonttu.net/tec/cakePHP/RESTfulIndex.html</link>
<description><![CDATA[ <p>
これからアプリケーション作るなら、せっかくなのでRESTfulを目指したいところ、、、だが、<br />
・URLをRESTfulにする<br />
・indexには条件で絞り込みをつけたい<br />
・便利なpagenatorへの対応<br />
・smartyViewも使いたい<br />
案の定とんでもないはめに。<br />
<br />
RESTfulにはURIの考え方がかかせないらしい。Webアプリの場合、データベースのテーブルやレコードに対して一意なURLアドレスを名詞として対応させておいてMethodを動詞と考えて行うといえばわかりやすい。idが指定されればレコードが特定されるのでUpdateやDeleteができ、なければテーブルに対してInsertなどを行います。<br />
cakePHPの場合、URLが「/(コントローラー)/(アクション)/(id)」というルールになっていてRESTに近いがちょっと惜しい。RESTfulではURLからアクションを省くので。  
</p>
<p>
cakePHP1.2ではRuterを使ってMethodに応じてアクションに対応させてくれます。1.2.06311では<br />
cake\libs\router.phpの118行目に記述があります。<br />
</p>
<pre class="php">
/**
* Default HTTP request method =&gt; controller action map.
*
* @var array
* @access private
*/
var $__resourceMap = array(
array(&#39;action&#39; =&gt; &#39;index&#39;, &#39;method&#39; =&gt; &#39;GET&#39;,  &#39;id&#39; =&gt; false),
array(&#39;action&#39; =&gt; &#39;view&#39;, &#39;method&#39; =&gt; &#39;GET&#39;,  &#39;id&#39; =&gt; true),
array(&#39;action&#39; =&gt; &#39;add&#39;, &#39;method&#39; =&gt; &#39;POST&#39;,  &#39;id&#39; =&gt; false),
array(&#39;action&#39; =&gt; &#39;edit&#39;, &#39;method&#39; =&gt; &#39;PUT&#39;,   &#39;id&#39; =&gt; true),
array(&#39;action&#39; =&gt; &#39;delete&#39;, &#39;method&#39; =&gt; &#39;DELETE&#39;, &#39;id&#39; =&gt; true),
array(&#39;action&#39; =&gt; &#39;edit&#39;, &#39;method&#39; =&gt; &#39;POST&#39;,  &#39;id&#39; =&gt; true)
);
</pre>
<p>
これを有効にするには<br />
app\config\routes.phpで<br />
Router::mapResources(&#39;(コントローラー)&#39;);<br />
とします。すると、<br />
(コントローラー)/(id)にGETメソッドでアクセスすると、viewアクションに渡されます。<br />
（ちなみに今のＷＷＷブラウザーではGETとPOSTメソッドしか使えません）&nbsp;  
</p>
<p>
問題は、各メソッドに引数が指定できないこと。(この記事の結論からいえば、URLからindexは外せませんでした。)<br />
indexメソッドではカテゴリーでの絞り込みなどを行いたいもので、従来(本来？)<br />
function index($serch,$category) {<br />
としてURL「(コントローラー)/index/hoge/flower/」で値を渡してやります。<br />
値の渡し方はこの引数渡しのほかに、「(コントローラー)/index?serch=hoge&amp;category=flower」のGETクエリー渡しもあります。<br />
この場合はコントローラーで「$this-&gt;params[&#39;url&#39;][&#39;serch&#39;]」で値を取得します。  
</p>
<p>
さらに問題が。indexメソッドではたいていページ送りをしたいものですが、1.2ではpagenatorを使い、<br />
コントローラー中で<br />
$this-&gt;set(&#39;(view変数名)&#39;,$this-&gt;paginate());<br />
VIEWで<br />
$paginator-&gt;numbers(true)<br />
とするだけで、<br />
「1|2|3|4」などのページ送りリンクが生成されるのですが、上記の方法では引数が簡単には引き継がれません。  
</p>
<p>
pagenatorで生成されたリンクを見ると<br />
「（コントローラー）/index/page:2」などとなっています。この「page」は$this-&gt;params[&#39;named&#39;][&#39;page&#39;]として取得できます。<br />
これを利用してURLを<br />
(コントローラー)/index/serch:hoge<br />
(コントローラー)/index/page:2/serch:hoge/category:flower<br />
などとして、コントローラー内では、<br />
</p>
<pre class="php">
$option = array();
foreach($this-&gt;params[&#39;named&#39;] as $key =&gt; $value) {
&nbsp; $option[&#39;url&#39;][$key] = $value;
}
$this-&gt;set(&#39;option&#39;, $option);
</pre>
<p>
VIEW(smarty使用)では&nbsp;<br />
&nbsp;&nbsp;&nbsp; {$paginator-&gt;numbers($option)}<br />
とします。リソースが一意になったような気がします。<br />
（cakePHPのsmartyViewの配列対応プラグイン「assign_assoc」では配列の配列がうまく扱えませんでした）  
</p>
<p>
&nbsp; 
</p>
 ]]></description>
<pubDate>13- 3·î-08 08:20</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/RESTfulIndex.html</guid>
<author>クラウス</author>
</item>
<item>
<title>リンクをWindowダイアログ内に表示する</title>
<link>http://www.tonttu.net/tec/85/link2Window.html</link>
<description><![CDATA[ <p>
ページ内のリンクをページ遷移せずにExt.Windowダイアログを作成してその中に表示します。<br />
Ext.Windowは移動や拡大縮小可能なwindowを生成します。その中にツールバーやテキストやGrid、タブなどを入れることもできます。<br />
Windowを使わない場合はExt.Panelでもかまいません。<br />
ここではいろんなことをしています。<br />
・Ext.Windowを作成する<br />
・Ext.Window.body.loadでリンクを読み込む<br />
・タイトルを表示する<br />
・ページ内のリンクを自動的にこのWindow内で開くようにする<br />
・進む、戻るのナビゲーションをタイトルバーにtoolとしてつける<br />
・同じリンクが指定された場合は、Ext.Windowダイアログを再利用する＞closeActionをhide()にしてShow()する<br />
・表示時に位置をランダムで変える<br />
・他ドメインのサイトはgetLink(url)としてiframeで表示する（説明は省きます） 
</p>
<p>
function getDoc(url,title)としてまとめます。<br />
通常のリンクからは&lt;a href=&#39;javascript:getDoc((url),(タイトル))；void(0)；&#39;&gt;とします。<br />
読み込んだページに対しても、<br />
genAjaxLink関数を使ってaタグすべてにこのWindow.body内で表示するようにします。&nbsp; 
</p>
<p>
まず、Ext.Windowダイアログを再利用するため、コードの冒頭で<br />
var modules = new Array();<br />
と宣言しておきます。<br />
modules[&#39;window&#39;]にExt.windowオブジェクトを格納します。<br />
modules[&#39;link&#39;]にナビゲーション用のリンク配列、<br />
modules[&#39;linkInc&#39;]に現在表示している[&#39;link&#39;]の順番番号(0スタート)を入れます。 
</p>
<p>
ちなみにExt.Windowの内容は、Ext.window.body.update(&#39;テキスト&#39;)で変更できます。<br />
または、modules[&#39;window&#39;].body.update(&#39;テキスト&#39;)（(urlは「/」と「.」などを「-」に変更しています＜IDに使えないため)）<br />
ID指定したい場合は、Ext.getCmp((ID)).body.update(&#39;テキスト&#39;) 
</p>
<pre class="php">
function getDoc(url,title){
&nbsp; //他ドメインの場合はgetLink(url)関数へ渡す
&nbsp;if(url.indexOf(&#39;http://&#39;) &gt; -1 || url.indexOf(&#39;https://&#39;) &gt; -1) {
&nbsp;&nbsp;getLink(url);
&nbsp;&nbsp;return false;
&nbsp;}
&nbsp; //ID設定するためにurlを変更する
&nbsp;did = url.replace(/[^0-9a-z]/ig, &quot;\-&quot;); //make id
&nbsp; //タイトル表示用に長すぎるタイトルを切る
&nbsp;//make longer Title is Short
&nbsp;if(title.length &gt; 60) {
&nbsp;&nbsp;titlestr = title.substr(0,60) + &quot;...&quot;;
&nbsp;} else {
&nbsp;&nbsp;titlestr = title;
&nbsp;}
&nbsp; //modules[url]が存在しない場合、Ext.Windowを作成する
&nbsp;if(!modules[url]){
&nbsp;&nbsp;modules[url] = new Array();
&nbsp;&nbsp;modules[url][&#39;window&#39;] = new Ext.Window({
&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&#39;doc_&#39;+did,
&nbsp;&nbsp;&nbsp;title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :titlestr,
&nbsp;&nbsp;&nbsp;layout&nbsp;&nbsp;&nbsp;&nbsp; :&#39;fit&#39;,
&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :580,
&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;&nbsp;&nbsp; :480,
&nbsp;&nbsp;&nbsp;closeAction:&#39;hide&#39;, //Closeアイコンの動作(隠す)。省略の場合、close（削除）
&nbsp;&nbsp;&nbsp;maximizable:true, //最大化有効
&nbsp;&nbsp;&nbsp;collapsible:true, //アイコン化有効
&nbsp;&nbsp;&nbsp;autoScroll :true,
&nbsp;&nbsp;&nbsp;bodyStyle&nbsp; :&#39;background-color: white;&#39;,
&nbsp;&nbsp;//enableイベントに対する動作
&nbsp;&nbsp;&nbsp;//Document Scripting after hook load callback(enable Event)
&nbsp;&nbsp;&nbsp;listeners&nbsp; :{&#39;enable&#39;:function(){
&nbsp;&nbsp;&nbsp;&nbsp;genAjaxLink($(&#39;#doc_&#39;+did), this, null);
&nbsp;&nbsp;&nbsp;}},
&nbsp; //ツールバーに追加
&nbsp;&nbsp;&nbsp;tools:[{ //make Titlebar Tool
&nbsp;&nbsp;&nbsp; //左アイコンを追加。
&nbsp;&nbsp;&nbsp;&nbsp;id:&#39;left&#39;, //Back navigation
&nbsp;&nbsp;&nbsp;&nbsp;hidden:true, //初期非表示
&nbsp;&nbsp;&nbsp; //リンクが1以上の場合、「戻る」動作をする
&nbsp;&nbsp;&nbsp;&nbsp;handler: function(event, toolEl, panel){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(panel[&#39;linkInc&#39;] &gt; 0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel[&#39;linkInc&#39;]--;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link = panel[&#39;link&#39;][panel[&#39;linkInc&#39;]];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel.body.load({url:link,params:{noTemplate:&#39;blank&#39;},callback:function(){panel.enable()},scripts:true});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(panel[&#39;linkInc&#39;] == 0) panel.tools.left.hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel.tools.right.show(); //右アイコンを表示
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;},{
&nbsp;&nbsp;&nbsp; //右アイコンを追加。
&nbsp;&nbsp;&nbsp;&nbsp;id:&#39;right&#39;, //Next navigation
&nbsp;&nbsp;&nbsp;&nbsp;hidden:true,
&nbsp;&nbsp;&nbsp;&nbsp;handler: function(event, toolEl, panel){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(panel[&#39;linkInc&#39;] &lt; panel[&#39;link&#39;].length - 1) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel[&#39;linkInc&#39;]++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link = panel[&#39;link&#39;][panel[&#39;linkInc&#39;]];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel.body.load({url:link,params:{noTemplate:&#39;blank&#39;},callback:function(){panel.enable()},scripts:true});
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(panel[&#39;linkInc&#39;] == panel[&#39;link&#39;].length - 1) panel.tools.right.hide();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;panel.tools.left.show();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;}]
&nbsp;&nbsp;});
&nbsp;&nbsp;modules[url][&#39;window&#39;].show(); //Ext.Windowを表示する
&nbsp; //ナビゲーション用リンク配列
&nbsp;&nbsp;//preparations link Navigation
&nbsp;&nbsp;modules[url][&#39;window&#39;][&#39;linkInc&#39;] = 0;
&nbsp;&nbsp;modules[url][&#39;window&#39;][&#39;link&#39;] = new Array();
&nbsp;&nbsp;modules[url][&#39;window&#39;][&#39;link&#39;].push(url);
&nbsp;&nbsp;link = modules[url][&#39;window&#39;][&#39;link&#39;][modules[url][&#39;window&#39;][&#39;linkInc&#39;]];
&nbsp; //body.loadを使い、読み込む
&nbsp; //callbackでenable()イベントを発生させる＜ページ内容を操作するのにここのcallbackでは描画が完了していないらしいので
&nbsp;&nbsp;//Document Ajax load
&nbsp;&nbsp;modules[url][&#39;window&#39;].body.load({url:link,params:{noTemplate:&#39;blank&#39;},callback:function(){modules[url][&#39;window&#39;].enable()},scripts:true});
&nbsp; //初期表示時、位置をランダムで変える＜常に中心に表示されるので
&nbsp;&nbsp;//Randam window position
&nbsp;&nbsp;box = modules[url][&#39;window&#39;].getBox(true);
&nbsp;&nbsp;pos_x = Math.floor(5*Math.random()) * 8 + box.x;
&nbsp;&nbsp;pos_y = Math.floor(5*Math.random()) * 8 + box.y;
&nbsp;&nbsp;modules[url][&#39;window&#39;].setPosition(pos_x,pos_y);
&nbsp;} else {
&nbsp; //すでにmodules[url]が存在する（hide隠れている）場合、表示してloadしなおす
&nbsp;&nbsp;modules[url][&#39;window&#39;].show();
&nbsp;&nbsp;modules[url][&#39;window&#39;].body.load({url:url,params:{noTemplate:&#39;blank&#39;},callback:function(){modules[url][&#39;window&#39;].enable()},scripts:true});
&nbsp;}
} 
</pre>
<p>
読み込んだページに対してリンク（aタグ）すべてに対して動作を変更します。しなければ通常のページ遷移が発生します。<br />
obj:ID指定されたjQueryオブジェクト<br />
wobj:Ext.Windowオブジェクト<br />
wflg:getDocに渡してWindow生成する 
</p>
<pre class="php">
function genAjaxLink(obj, wobj, wflg) {
&nbsp;//指定オブジェクト内のaタグすべてループする
&nbsp;$(&#39;a&#39;, obj).each(function(){
&nbsp; //urlがドメインのリンク(http://(自分のドメイン))であれば外す
&nbsp;&nbsp;$(this).attr(&#39;href&#39;,$(this).attr(&#39;href&#39;).replace(serverpath,&#39;&#39;));
&nbsp; //無名関数を割り当てる
&nbsp;&nbsp;$(this).click(function(){
&nbsp; //他ドメインへのリンクであればgetLinkに渡す
&nbsp;&nbsp;&nbsp;if($(this).attr(&#39;href&#39;).indexOf(&#39;http://&#39;) &gt; -1 || $(this).attr(&#39;href&#39;).indexOf(&#39;https://&#39;) &gt; -1) {
&nbsp;&nbsp;&nbsp;&nbsp;getLink($(this).attr(&#39;href&#39;));
&nbsp;&nbsp;&nbsp;} else if(wflg == &quot;-1&quot;) {
&nbsp;&nbsp;&nbsp; //getDocに渡す
&nbsp;&nbsp;&nbsp;&nbsp;getDoc($(this).attr(&#39;href&#39;),$(this).attr(&#39;href&#39;));
&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp; //ナビゲーション用リンク配列にurlを追加し、loadする
&nbsp;&nbsp;&nbsp;&nbsp;link = $(this).attr(&#39;href&#39;)
&nbsp;&nbsp;&nbsp;&nbsp;wobj[&#39;linkInc&#39;]++;
&nbsp;&nbsp;&nbsp;&nbsp;wobj[&#39;link&#39;].push(link);
&nbsp;&nbsp;&nbsp;&nbsp;wobj.load({url:link,params:{noTemplate:&#39;blank&#39;},callback:function(){wobj.enable()},scripts:true});
&nbsp;&nbsp;&nbsp; //左(戻る)アイコンを表示する
&nbsp;&nbsp;&nbsp;&nbsp;wobj.tools.left.show();
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;});
&nbsp;});
} 
</pre>
 ]]></description>
<pubDate>16- 2·î-08 03:37</pubDate>
<guid>http://www.tonttu.net/tec/85/link2Window.html</guid>
<author>クラウス</author>
</item>
<item>
<title>WayfinderでExt.tree用のjsonを出力する</title>
<link>http://www.tonttu.net/tec/modx/wayfinder2Ext.html</link>
<description><![CDATA[ <p>
WayfinderはMODXのメニューを自動生成してくれます。<br />
Ext.treeは独自のjavascript配列を解釈してWindowsのExplorer風のツリーを表示します。 
</p>
<pre class="php">
jsonの形式は
[{
&nbsp; key1:value,
&nbsp; key2:value,
&nbsp; key3:{
&nbsp;&nbsp;&nbsp; key1:value,
&nbsp;&nbsp;&nbsp; key2:value
&nbsp; },
&nbsp; key3:{
&nbsp;&nbsp;&nbsp; key1:value,
&nbsp;&nbsp;&nbsp; key2:value,
&nbsp;&nbsp;&nbsp; key3:{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key1:value,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key2:value
&nbsp;&nbsp;&nbsp; }
&nbsp; }
}]
</pre>
<p>
と配列の要素を「,(カンマ)」で区切って記述しますが、Wayfinderでは最後の要素を意識しないので、最後の要素のあとにもカンマがついてしまいます。<br />
$RowLastTplと$parentRowLastTplを使えるようにします。 
</p>
<p>
ドキュメントエイリアス：(ページ名).json<br />
テンプレート：(blank)<br />
コンテンツタイプ：text/jacvascript<br />
内容：【【Wayfinder? &amp;startId=`0` &amp;config=`Ext_menu`】】 
</p>
<p>
&amp;config=で設定ファイルを使用することができます。<br />
assets/snippets/wayfinder/configs/Ext_menu.config.php<br />
</p>
<pre class="php">
&lt;?php
$removeNewLines = &quot;true&quot;;
$outerTpl = &quot;@CODE:【【+wf.wrapper+】】&quot;;
$rowTpl = &quot;@CODE:{
&nbsp;href:&#39;javascript:getDoc(\&#39;【+wf.link+】\&#39;,\&#39;【+wf.linktext+】\&#39;);void(0);&#39;,
&nbsp;text:&#39;【+wf.linktext+】(【+wf.subitemcount+】)&#39;,
&nbsp;id:【+wf.docid+】,
&nbsp;leaf:true,
&nbsp;cls: &#39;file&#39;
【+wf.wrapper+】},&quot;;
$parentRowTpl = &quot;@CODE:{
&nbsp;href:&#39;javascript:getDoc(\&#39;【+wf.link+】\&#39;,\&#39;【+wf.linktext+】\&#39;);void(0);&#39;,
&nbsp;text:&#39;【+wf.linktext+】(【+wf.subitemcount+】)&#39;,
&nbsp;id:【+wf.docid+】,
&nbsp;cls:&#39;folder&#39;,
children:【【+wf.wrapper+】】},&quot;;
$rowLastTpl = &quot;@CODE:{
&nbsp;href:&#39;javascript:getDoc(\&#39;【+wf.link+】\&#39;,\&#39;【+wf.linktext+】\&#39;);void(0);&#39;,
&nbsp;text:&#39;【+wf.linktext+】(【+wf.subitemcount+】)&#39;,
&nbsp;id:【+wf.docid+】,
&nbsp;leaf:true,
&nbsp;cls: &#39;file&#39;
【+wf.wrapper+】}&quot;;
$parentRowLastTpl = &quot;@CODE:{
&nbsp;href:&#39;javascript:getDoc(\&#39;【+wf.link+】\&#39;,\&#39;【+wf.linktext+】\&#39;);void(0);&#39;,
&nbsp;text:&#39;【+wf.linktext+】(【+wf.subitemcount+】)&#39;,
&nbsp;id:【+wf.docid+】,
&nbsp;cls:&#39;folder&#39;,
children:【【+wf.wrapper+】】}&quot;;
$innerTpl = &quot;@CODE:【+wf.wrapper+】&quot;;
?&gt;
</pre>
<p>
(「【」と「】」は実際は「[」と「]」です)&nbsp;&nbsp;&nbsp; 
</p>
<p>
assets/snippets/wayfinder/wayfinder.inc.php<br />
98行目あたり<br />
</p>
<pre class="php">
if ($counter == ($numSubItems)) $docInfo[&#39;last&#39;] = 1;
&nbsp;&nbsp;&nbsp;//Determine if document has children&nbsp; 
</pre>
<p>
160行目あたり、<br />
</p>
<pre class="php">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elseif ($resource[&#39;isfolder&#39;] &amp;&amp; $this-&gt;_templates[&#39;parentRowTpl&#39;] &amp;&amp; ($resource[&#39;level&#39;] &lt; $this-&gt;_config[&#39;level&#39;] || $this-&gt;_config[&#39;level&#39;] == 0) &amp;&amp; $numChildren &amp;&amp; $resource[&#39;last&#39;]) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $usedTemplate = &#39;parentRowLastTpl&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elseif ($resource[&#39;isfolder&#39;] &amp;&amp; $this-&gt;_templates[&#39;parentRowTpl&#39;] &amp;&amp; ($resource[&#39;level&#39;] &lt; $this-&gt;_config[&#39;level&#39;] || $this-&gt;_config[&#39;level&#39;] == 0) &amp;&amp; $numChildren) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $usedTemplate = &#39;parentRowTpl&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elseif ($resource[&#39;level&#39;] &gt; 1 &amp;&amp; $this-&gt;_templates[&#39;innerRowTpl&#39;]) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $usedTemplate = &#39;innerRowTpl&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } elseif($resource[&#39;last&#39;]) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $usedTemplate = &#39;rowLastTpl&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $usedTemplate = &#39;rowTpl&#39;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; 
</pre>
<p>
出力の結果はこちら、<br />
<a href="Ext_menu.json?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8">http://www.tonttu.net/Ext_menu.json</a> 
</p>
<p>
Ext.treeは次のように解釈します。<br />
&nbsp;href要素でリンククリック動作、<br />
&nbsp;text要素で表示文字列、<br />
&nbsp;id要素でID、<br />
&nbsp;leaf要素がtrueの場合、終端、<br />
&nbsp;cls要素でアイコン画像、&#39;file&#39;、&#39;folder&#39;を指定してあります。 
</p>
<p>
Extの記述。ここではWindowダイアログの中にTreePanelを表示しています。 
</p>
<pre class="php">
&nbsp;&nbsp;var treeWindow&nbsp;= new Ext.Window({
&nbsp;&nbsp;&nbsp;id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :winid,
&nbsp;&nbsp;&nbsp;title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :winid,
&nbsp;&nbsp;&nbsp;layout&nbsp;&nbsp;&nbsp;&nbsp; :&#39;fit&#39;,
&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :240,
&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;&nbsp;&nbsp; :360,
&nbsp;&nbsp;&nbsp;minWidth&nbsp;&nbsp; :64,
&nbsp;&nbsp;&nbsp;closable&nbsp;&nbsp; :false,
&nbsp;&nbsp;&nbsp;collapsible:true,
&nbsp;&nbsp;&nbsp;bodyStyle:&#39;background-color: white;&#39;,
&nbsp;&nbsp;&nbsp;items:treepanel = new Ext.tree.TreePanel({
&nbsp;&nbsp;&nbsp;&nbsp;autoScroll :true,
&nbsp;&nbsp;&nbsp;&nbsp;loader: new Ext.tree.TreeLoader({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataUrl:&#39;/Ext_menu.json&#39;
&nbsp;&nbsp;&nbsp;&nbsp;}),
&nbsp;&nbsp;&nbsp;&nbsp;root: treeroot = new Ext.tree.AsyncTreeNode({
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text: &#39;Root&#39;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id:&#39;root&#39;
&nbsp;&nbsp;&nbsp;&nbsp;})
&nbsp;&nbsp;&nbsp;})]
&nbsp;&nbsp;});
&nbsp;&nbsp;treeroot.expand();
&nbsp;&nbsp;treeWindow.show(); 
</pre>
 ]]></description>
<pubDate>16- 2·î-08 02:11</pubDate>
<guid>http://www.tonttu.net/tec/modx/wayfinder2Ext.html</guid>
<author>クラウス</author>
</item>
<item>
<title>パラメーターでテンプレートを使用しない</title>
<link>http://www.tonttu.net/tec/modx/notemplate.html</link>
<description><![CDATA[ <p>
MODxはドキュメント思考のCMSです。ヘッダーやフッターなどサイトに共通する部分は「テンプレート」にまとめ、ページ毎に異なる部分は「ドキュメント」と呼ばれ、表示時にテンプレートに埋め込んで表示されます。（私はXOOPSでいう「テーマ」という言い方のほうが好みです） 
</p>
<p>
Ajaxを使ったサイトでは、あるページの一部分の内容をページ遷移せずに置き換えることが行われます。<br />
この一部分をドキュメントとしたい場合はテンプレートが不要です。MODxではドキュメント毎にテンプレートを指定することができるので、これを「(blank)」と指定すればテンプレートで囲まれずに素のままのドキュメントが得られます。<br />
実際は(blank)指定の場合はテンプレート機能をスキップするわけではなくて、内部的にヘッダー等がないテンプレートを疑似的に使用しているだけです。 
</p>
<p>
ただ、ドキュメント思考のページの優れている点、URIリソースの考え方やSEO的にも、Ajax呼び出しの場合はblank、URLアドレス呼び出しの場合はテンプレートを適用としたいものです。例えばそのページだけにリンクを張りたい時もあります。&nbsp; 
</p>
<p>
POSTまたはGETでパラメーターを渡して、テンプレートを使用しないで表示するようにします。 
</p>
<p>
manager/includes/document.parser.class.inc.php<br />
1167行目あたりの<br />
</p>
<pre class="php">
if (!$this-&gt;documentObject[&#39;template&#39;])
$this-&gt;documentContent= &quot;【*content*】&quot;; // use blank template
</pre>
<p>
がblank指定、疑似テンプレート回避をしている個所です。<br />
このブロックの終端に次のコードを追加します。<br />
if($_REQUEST[&#39;noTemplate&#39;] == &#39;blank&#39;) $this-&gt;documentContent= &quot;【*content*】&quot;;<br />
これでGETかPOSTに「noTemplate=blank」とすると、強制的にblank指定と同じ動作をさせることができます。<br />
(「【」と「】」は実際は「[」と「]」です)&nbsp; 
</p>
<p>
例：GETの場合は、<br />
(ドキュメント).html?noTemplate=blank 
</p>
<p>
Extのloadの場合は、<br />
(element).load({url:(url),params:{noTemplate:&#39;blank&#39;}}); 
</p>
<p>
jQueryのajaxの場合は、<br />
</p>
<pre class="php">
$.ajax({
&nbsp; url: (url),
&nbsp; dataType: &#39;html&#39;,
&nbsp; data:{noTemplate:&#39;blank&#39;},
&nbsp; success: function(html){
&nbsp;&nbsp;&nbsp; (targetDIV).html(html);
&nbsp; }
});
</pre>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>16- 2·î-08 01:45</pubDate>
<guid>http://www.tonttu.net/tec/modx/notemplate.html</guid>
<author>クラウス</author>
</item>
<item>
<title>perlメールフォームで文字コードUTF-8のテンプレートを使う</title>
<link>http://www.tonttu.net/tec/101/102.html</link>
<description><![CDATA[ <p>
perlのソースコードはEUCで書くこととされていますが、現在はなにかとUTF-8を使いたいものです。perl5.8以降はunicode対応もされているようですが、perl5.6.1で対応したメモです。 
</p>
<h2>概要</h2>
<p>
・メールフォームを作る<br />
・HTML::Templateテンプレートライブラリを使う<br />
・複数のページに共通したテーマを使う<br />
・メール本文に投稿内容を代入するのにテンプレートを使う<br />
・jcodeおよびJcode.pmは使わない<br />
・Unicode::Japaneseを使う<br />
・投稿内容のパースにcgi-lib.plを使う 
</p>
<p>
&nbsp;
</p>
<h2>ライブラリを読み込みます</h2>
<p>
（サーバーにライブラリがインストールされていれば不要です）<br />
CPAN等からライブラリを入手し、「lib」フォルダなどを作って配置します。 
</p>
<blockquote>
	<p>
	use lib &#39;（libへのフルパス）&#39;;<br />
	use HTML::Template;<br />
	use Unicode::Japanese;<br />
	require &quot;cgi-lib.pl&quot;; 
	</p>
	<p>
	&nbsp;
	</p>
</blockquote>
<h2>HTML::Templateテンプレートライブラリの使い方</h2>
<p>
ソースコードにhtmlの内容を埋め込まずに外部ファイルとして用意します。<br />
これでデザイナーとの協業やメンテナンスが容易になります。<br />
HTML::Temlateを使うと変数の埋め込みやIF条件などを使うことができます。<br />
<br />
１．読み込むテンプレートファイルを作成します。<br />
テーマテンプレート&rdquo;theme.html&rdquo; 
</p>
<blockquote>
	<p>
	&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;<br />
	&lt;head&gt;<br />
	&lt;meta http-equiv=&quot;Content-Type&quot; content=&#39;text/html; charset=&quot;UTF-8&quot;&#39; /&gt;<br />
	&lt;title&gt;template&lt;/title&gt;<br />
	&lt;/head&gt;<br />
	&lt;body&gt;<br />
	&lt;h1&gt;共通テーマ&lt;/h1&gt;<br />
	&lt;TMPL_VAR NAME=CONTENTS&gt;<br />
	&lt;/body&gt;<br />
	&lt;/html&gt; 
	</p>
</blockquote>
<p>
本文テンプレート&rdquo;tpl.html&rdquo; 
</p>
<blockquote>
	<p>
	&lt;h2&gt;本文&lt;/h2&gt;<br />
	&lt;TMPL_VAR NAME=ZIP&gt;<br />
	&lt;TMPL_VAR NAME=ADDRESS&gt;<br />
	&lt;TMPL_VAR NAME=TEL&gt; 
	</p>
</blockquote>
<p>
２．テンプレートを読み込み、いったん出力を変数に保持します。 
</p>
<blockquote>
	<p>
	$tplfile = &quot;tpl.html&quot;;<br />
	# テンプレート読み込み<br />
	$template = HTML::Template-&gt;new(filename =&gt; $tplfile,&#39;die_on_bad_params&#39; =&gt; 0);<br />
	# テンプレートに変数を代入する<br />
	$template-&gt;param(ZIP =&gt; &quot;373-****&quot;);<br />
	$template-&gt;param(ADDRESS =&gt; &quot;群馬県太田市******&quot;);<br />
	$template-&gt;param(TEL =&gt; &quot;0276-**-****&quot;);<br />
	# テンプレート出力<br />
	$data = $template-&gt;output; 
	</p>
</blockquote>
<p>
２．保持した変数をテーマテンプレートに入れて出力します。 
</p>
<blockquote>
	<p>
	$themetplfile = &quot;themel.html&quot;;<br />
	# テーマテンプレート読み込み<br />
	$template = HTML::Template-&gt;new(filename =&gt; $themetplfile,&#39;die_on_bad_params&#39; =&gt; 0);<br />
	# テーマテンプレートに変数を代入する<br />
	$template-&gt;param(CONTENTS =&gt; $data);<br />
	# テーマテンプレート出力<br />
	$data = $template-&gt;output; 
	</p>
	<p>
	# 出力する<br />
	print &quot;Content-Type: text/html\n\n&quot;, $themetemplate-&gt;output; 
	</p>
	<p>
	&nbsp;
	</p>
</blockquote>
<h2>cgi-lib.plの使い方</h2>
<blockquote>
	<p>
	my %in;<br />
	&amp;ReadParse(\%in);
	</p>
</blockquote>
<p>
これだけで受信したフォームデータが$in{&#39;(name属性値)&#39;}などで使うことができます。<br />
たとえば、<br />
&lt;input type=&quot;text&quot; name=&quot;hoge&quot;&gt;<br />
が<br />
$in{&#39;hoge&#39;}<br />
で使えます。 
</p>
<p>
テンプレートファイルをutf-8で作成すれば、受信データもutf-8になります。 
</p>
<p>
&nbsp;
</p>
<h2>メール送信</h2>
<p>
本来、日本語でメール送信するには文字コードiso-2022-jp形式で行います。<br />
gmailなどのウェブメーラーはutf-8とかでメールを送り、受信するメーラと中継するメールサーバーが対応していればかまわないようですが。<br />
本文以外のメールヘッダーの件名(Subject)、From,Toに日本語を使うときはさらにbase64エンコードをする必要があります。 
</p>
<p>
１．メール本文のテンプレートファイルを作成します。<br />
これもUTF-8で作成します。<br />
メール本文テンプレート&rdquo;mail.txt&rdquo;
</p>
<blockquote>
	<p>
	お問合せがありました<br />
	&lt;TMPL_VAR NAME=hoge&gt; 
	</p>
</blockquote>
<p>
２．件名をjisコードにして、さらにbase64エンコードします
</p>
<blockquote>
	<p>
	$mlsb = &quot;メールフォームからお問合せ&quot;;<br />
	$enc_mlsb = Unicode::Japanese-&gt;new($mlsb,&#39;auto&#39;);<br />
	$enc_mlsb = $enc_mlsb-&gt;conv(&#39;jis&#39;);<br />
	$enc_subject= &amp;Base64Encode($enc_mlsb); 
	</p>
</blockquote>
<blockquote>
	<p>
	sub Base64Encode {<br />
	&nbsp;my ($target) = @_;<br />
	&nbsp;my ($base) = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;<br />
	&nbsp;&nbsp;&nbsp;.&quot;abcdefghijklmnopqrstuvwxyz&quot;<br />
	&nbsp;&nbsp;&nbsp;.&quot;0123456789+/&quot;;<br />
	&nbsp;my $eStr = &quot;&quot;;<br />
	&nbsp;my $pStr = unpack(&quot;B*&quot;,$target);<br />
	&nbsp;for(my $i = 0;my $cStr = substr($pStr,$i,6); $i += 6){<br />
	&nbsp;&nbsp;$eStr .=substr($base,ord(pack(&quot;B*&quot;,&quot;00&quot;.$cStr)),1);<br />
	&nbsp;&nbsp;if(length($cStr) == 2){ $eStr .= &quot;==&quot;;}<br />
	&nbsp;&nbsp;elsif(length($cStr) == 4) { $eStr .= &quot;=&quot;;}<br />
	&nbsp;}<br />
	&nbsp;return(&quot;=?iso-2022-jp?B?$eStr?=&quot;);<br />
	} 
	</p>
</blockquote>
<p>
Unicode::Japaneseでは、<br />
$enc_mlsb-&gt;conv(&#39;jis&#39;, &#39;base64&#39;)<br />
として直接base64エンコードできますが、なぜか末尾に改行がついてメールヘッダーとして使えませんでした。<br />
この改行を取れば、「&quot;=?iso-2022-jp?B?」と「?=&quot;」で囲めばSubjectヘッダーに使えます。 
</p>
<p>
３．メール本文をテンプレートで生成する
</p>
<blockquote>
	<p>
	$mailfile = &quot;mail.txt&quot;;<br />
	$mailtemplate = HTML::Template-&gt;new(filename =&gt; $mailfile,&#39;die_on_bad_params&#39; =&gt; 0);<br />
	$mailtemplate-&gt;param(hoge =&gt; $in{&#39;hoge&#39;});<br />
	$body = $mailtemplate-&gt;output; 
	</p>
</blockquote>
<p>
４．メール送信する
</p>
<blockquote>
	<p>
	$mailer = &#39;/usr/sbin/sendmail&#39;;<br />
	$mlfr = &quot;（送信先メールアドレス）&quot;;<br />
	$err = 0;<br />
	open(MAIL, &quot;| $mailer -t -f&#39;$mlfr&#39;&quot;) or $err = 1;<br />
	if ($err == 0) {<br />
	&nbsp;print MAIL &quot;From: $mlfr\n&quot;;<br />
	&nbsp;print MAIL &quot;To: $mlfr\n&quot;;<br />
	&nbsp;print MAIL &quot;Subject: $enc_subject\n&quot;;<br />
	&nbsp;print MAIL &quot;MIME-Virsion: 1.0\n&quot;;<br />
	&nbsp;print MAIL &quot;Content-Type: text/plain; charset=iso-2022-jp\n&quot;;<br />
	&nbsp;print MAIL &quot;Content-Transfer-Encoding: 7bit\n\n&quot;;<br />
	&nbsp;print MAIL Unicode::Japanese-&gt;new($body,&#39;auto&#39;)-&gt;jis;<br />
	&nbsp; close(MAIL);<br />
	} else {<br />
	&nbsp; $errstr .= &#39;お客様メール送信エラー&#39;;<br />
	} 
	</p>
</blockquote>
<p>
Unicode::Japaneseはjisエンコード指定で、iso-2022-jp形式にしてくれます。<br />
また、いろいろテストしていた最中に<br />
$enc1 = Unicode::Japanese-&gt;new($mlsb,&#39;auto&#39;)-&gt;jis;<br />
$enc2 = Unicode::Japanese-&gt;new($mlsb,&#39;auto&#39;)-&gt;euc;<br />
$enc3 = Unicode::Japanese-&gt;new($mlsb,&#39;auto&#39;)-&gt;get;<br />
などとしているとおかしな結果が得られました。<br />
$enc = Unicode::Japanese-&gt;new($mlsb,&#39;auto&#39;);<br />
$enc1 = $enc-&gt;jis;<br />
$enc2 = $enc-&gt;euc;<br />
$enc3 = $enc-&gt;get;<br />
としていったん文字列オブジェクトとしてから使うほうがよいようです。 
</p>
 ]]></description>
<pubDate>07- 2·î-08 22:27</pubDate>
<guid>http://www.tonttu.net/tec/101/102.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Perl</title>
<link>http://www.tonttu.net/tec/101.html</link>
<description><![CDATA[ <p>
Perlは軽量言語で、文字列の取り扱いに優れています。<br />
HTML言語自体がテキストファイルなので、インターネットの動的サービス（CGI）には当初から広く用いられてきました。&nbsp;
</p>
<p>
<ul><li class="last"><a href="/tec/101/102.html" title="perlメールフォームで文字コードUTF-8のテンプレートを使う" >perlメールフォームで文字コードUTF-8のテンプレートを使う</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>07- 2·î-08 22:24</pubDate>
<guid>http://www.tonttu.net/tec/101.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext.grid.EditorGridで表形式編集2</title>
<link>http://www.tonttu.net/tec/85/100.html</link>
<description><![CDATA[ <p>
Ｅｘｔ2で試してみました。前の連載よりシンプルにしてあります。 
</p>
<pre class="jscript">
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Style-Type&quot; content=&quot;text/css&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;resources/css/ext-all.css&quot;&gt; 
&lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;adapter/jquery/jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;adapter/jquery/jquery-plugins.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;adapter/jquery/ext-jquery-adapter.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;ext-all.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt; 
&lt;br /&gt;
&lt;a href=&quot;#&quot; id=&quot;recordadd&quot;&gt;行追加&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;#&quot; id=&quot;recordput&quot;&gt;保存する&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;panelgrid&quot;&gt;&lt;/div&gt; 
&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
var store;
var grid; 
$(function(){
&nbsp;//データレコード設定
&nbsp;var record = Ext.data.Record.create([
&nbsp;&nbsp;{name:&quot;data[Doc][id]&quot;, type: &#39;int&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][title]&quot;, type: &#39;string&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][user_id]&quot;, type: &#39;int&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][modified]&quot;, type: &#39;string&#39;}
&nbsp;]); 
&nbsp;//サンプルデータ
&nbsp;var myData = [
&nbsp;&nbsp;[1,&#39;title1&#39;,10,&#39;2007-1-11 00:01:00&#39;],
&nbsp;&nbsp;[2,&#39;title2&#39;,20,&#39;2007-1-12 00:01:00&#39;],
&nbsp;&nbsp;[3,&#39;title3&#39;,30,&#39;2007-1-13 00:01:00&#39;],
&nbsp;&nbsp;[4,&#39;title4&#39;,40,&#39;2007-1-14 00:01:00&#39;],
&nbsp;&nbsp;[5,&#39;title5&#39;,50,&#39;2007-1-15 00:01:00&#39;]
&nbsp; ]; 
&nbsp;//データストア
&nbsp;store = new Ext.data.Store({
&nbsp;&nbsp;reader: new Ext.data.ArrayReader({}, record)
&nbsp;}); 
/*
&nbsp;//JSONでデータを得る場合
&nbsp;var record = Ext.data.Record.create([
&nbsp;&nbsp;{name:&quot;data[Doc][id]&quot;, mapping:&#39;Doc.id&#39;, type: &#39;int&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][title]&quot;, mapping:&#39;Article.title&#39;, type: &#39;string&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][user_id]&quot;, mapping:&#39;Article.user_id&#39;, type: &#39;int&#39;},
&nbsp;&nbsp;{name:&quot;data[Article][modified]&quot;, mapping:&#39;Article.modified&#39;, type: &#39;string&#39;}
&nbsp;]);
&nbsp;store = new Ext.data.JsonStore({
&nbsp;&nbsp;url: &#39;&#39;, //&lt;&lt;取得元アドレス設定
&nbsp;&nbsp;root: &#39;&#39;,
&nbsp;&nbsp;fields: Record
&nbsp;});
*/ 
&nbsp;//Grid内列設定
&nbsp;var cm = new Ext.grid.ColumnModel([
&nbsp;&nbsp;{header:&quot;id&quot;,width:75,dataIndex:&#39;data[Doc][id]&#39;},
&nbsp;&nbsp;{header:&quot;件名&quot;,width:75,dataIndex:&#39;data[Article][title]&#39;,
&nbsp;&nbsp;&nbsp;editor: new Ext.form.TextField({allowBlank: false})},
&nbsp;&nbsp;{header:&quot;ユーザ&quot;,width:75,dataIndex:&#39;data[Article][user_id]&#39;},
&nbsp;&nbsp;{header:&quot;更新日&quot;,width:75,dataIndex:&#39;data[Article][modified]&#39;}
&nbsp;]); 
&nbsp;//EditorGrid設定
&nbsp;var grid = new Ext.grid.EditorGridPanel({
&nbsp;&nbsp;height:480,
&nbsp;&nbsp;renderTo: &#39;panelgrid&#39;,
&nbsp;&nbsp;cm: cm,
&nbsp;&nbsp;clicksToEdit:1,
&nbsp;&nbsp;store:store,
&nbsp;&nbsp;stripeRows:true
&nbsp;}); 
&nbsp;&nbsp;&nbsp; store.loadData(myData);
//&nbsp;store.load(); //&nbsp;JSONでデータを得る場合
&nbsp;//新規行追加
&nbsp;$(&#39;#recordadd&#39;).click(function(){
&nbsp;&nbsp;var rc = new record({
&nbsp;&nbsp;&nbsp;&#39;data[Article][title]&#39;: &#39;&#39;,
&nbsp;&nbsp;&nbsp;&#39;data[Article][user_id]&#39;: &#39;&#39;,
&nbsp;&nbsp;&nbsp;&#39;data[Article][modified]&#39;: &#39;&#39;
&nbsp;&nbsp;});
&nbsp;&nbsp;grid.stopEditing();
&nbsp;&nbsp;store.insert(0, rc);
&nbsp;&nbsp;grid.startEditing(0, 0);
&nbsp;}); 
&nbsp;//保存
&nbsp;$(&#39;#recordput&#39;).click(function(){
&nbsp;&nbsp;//更新行を取得する
&nbsp;&nbsp;var mrs = store.getModifiedRecords();
&nbsp;&nbsp;//更新レコードをループする
&nbsp;&nbsp;$.each(mrs, function(i) {
&nbsp;&nbsp;&nbsp;//idがある場合、アップデート。ない場合、インサートする
&nbsp;&nbsp;&nbsp;if(this.data[&#39;data[Doc][id]&#39;]) {
&nbsp;&nbsp;&nbsp;&nbsp;$.post(&quot;&quot;, this.data); //&lt;&lt;保存先アドレス設定
&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$.post(&quot;&quot;, this.data); //&lt;&lt;保存先アドレス設定
&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;});
&nbsp;}); 
}); 
&lt;/script&gt; 
&lt;/body&gt;
&lt;/html&gt; 
</pre>
 ]]></description>
<pubDate>27- 1·î-08 16:49</pubDate>
<guid>http://www.tonttu.net/tec/85/100.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cal_test_01</title>
<link>http://www.tonttu.net/aboutus/DittoCal/cal_test_01.html</link>
<description><![CDATA[ cal_test_01
 ]]></description>
<pubDate>31-10·î-07 22:42</pubDate>
<guid>http://www.tonttu.net/aboutus/DittoCal/cal_test_01.html</guid>
<author>クラウス</author>
</item>
<item>
<title>マーケティング分析</title>
<link>http://www.tonttu.net/service/market.html</link>
<description><![CDATA[ さまざまなデータを多角的に分析して、見えにくかった戦略のご提案をします。  ]]></description>
<pubDate>28-10·î-07 21:18</pubDate>
<guid>http://www.tonttu.net/service/market.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ajaxマッシュアップ検索MUP</title>
<link>http://www.tonttu.net/labo/94.html</link>
<description><![CDATA[ http://mup.tonttu.net/ ]]></description>
<pubDate>25-10·î-07 23:35</pubDate>
<guid>http://www.tonttu.net/labo/94.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ホームページがアクセスされるまで</title>
<link>http://www.tonttu.net/tec/uml/web_access.html</link>
<description><![CDATA[ <p>
ホームページがユーザーに表示されるまでの流れです。<br />
他のページからリンクをたどる以外に、検索エンジンを利用したり広告からたどったりとさまざまな経路があります。<br />
SEOは一部分でしかなく、RSSやトラックバックなどブログマーケティングが強力なこともわかります。 
</p>
<p>
<a href="assets/images/tec/uml/webaccess.png?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" onclick="window.open('/assets/images/tec/uml/webaccess.png','','location=yes,scrollbars=yes,resizable=yes,status=yes');return false;"><img alt=" " border="0" height="402" src="assets/images/tec/uml/webaccess_520.gif" width="520" /></a> 
</p>
 ]]></description>
<pubDate>25-10·î-07 23:27</pubDate>
<guid>http://www.tonttu.net/tec/uml/web_access.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ネットショップの流れ</title>
<link>http://www.tonttu.net/tec/uml/netshop_flow.html</link>
<description><![CDATA[ <p>
ネットショップの購入完了までの流れを時系列で表した図です。 
</p>
<p>
<a href="assets/images/tec/uml/netshop_flow.png?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" onclick="window.open('/assets/images/tec/uml/netshop_flow.png','netshop_flow','scrollbars=yes,resizable=yes,status=yes');return false;"><img alt=" " border="0" height="756" src="assets/images/tec/uml/netshop_flow_520.gif" width="520" /></a> 
</p>
 ]]></description>
<pubDate>25-10·î-07 23:19</pubDate>
<guid>http://www.tonttu.net/tec/uml/netshop_flow.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ネットショップの一般的な構成</title>
<link>http://www.tonttu.net/tec/uml/netshop_class.html</link>
<description><![CDATA[ <p>
ネットショップの一般的な構成をUMLにしてみました。<br />
商品選択＞詳細画面＞カート＞配送・支払方法＞確認＞完了など、楽天やアマゾンでも変わりはありません。<br />
バックエンドでは、商品管理・お客様情報・注文管理などがあります。 
</p>
<p>
<a href="assets/images/tec/uml/netshop_class.png?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" onclick="window.open('netshop_class','','scrollbars=yes,resizable=yes,status=yes');return false;" target="_blank"><img alt=" " border="0" height="596" src="assets/images/tec/uml/netshop_class_520.gif" width="520" /></a>&nbsp; 
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>25-10·î-07 23:11</pubDate>
<guid>http://www.tonttu.net/tec/uml/netshop_class.html</guid>
<author>クラウス</author>
</item>
<item>
<title>UML</title>
<link>http://www.tonttu.net/tec/uml.html</link>
<description><![CDATA[ <p>
UMLは「汎用モデリング言語」です。<br />
世の中のさまざまなもののシステムや流れなどを図にします。目で見てわかりやすいのが特徴です。<br />
世界的な規約ですので、読み方を知っていればワークグループ作業において誤解を少なくすることができます。<br />
TONTTU.NETではコンサルティングからレポーティング、仕様書やご提案などに活用しています。&nbsp; 
</p>
<p>
<ul><li><a href="/tec/uml/netshop_class.html" title="ネットショップの一般的な構成" >ネットショップの一般的な構成</a></li>
<li><a href="/tec/uml/netshop_flow.html" title="ネットショップの流れ" >ネットショップの流れ</a></li>
<li class="last"><a href="/tec/uml/web_access.html" title="ホームページがアクセスされるまで" >ホームページがアクセスされるまで</a></li>
</ul>&nbsp; 
</p>
 ]]></description>
<pubDate>25-10·î-07 23:03</pubDate>
<guid>http://www.tonttu.net/tec/uml.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext.grid.EditorGridで表形式編集_3</title>
<link>http://www.tonttu.net/tec/85/89.html</link>
<description><![CDATA[ <p>
編集したデータを保存します。<br />
表の中のデータは、Ext.data.Storeの中の「data」プロパティに存在します。<br />
.getModifiedRecords()メソッドで、更新されたレコードのみを得ることができます。<br />
この中の各レコードををjqueryの$.eachでループしながら$.postを使って非同期にアップデートします。<br />
<br />
ツールバーを作成して、追加、保存、再読込みのボタンと関数を定義します。<br />
ds.load();の前に次のコードを記述します。 
</p>
<pre class="php">
&nbsp;// ツールバー追加  
&nbsp;var gridHead = grid.getView().getHeaderPanel(true);  
&nbsp;var tb = new Ext.Toolbar(gridHead,   
&nbsp;[  
&nbsp;&nbsp;{text: &#39;商品追加&#39;,  
&nbsp;&nbsp;handler : function(){  
&nbsp;&nbsp;&nbsp;var itm = new Item({  
&nbsp;&nbsp;&nbsp;&nbsp;id: &#39;&#39;,  
&nbsp;&nbsp;&nbsp;&nbsp;title: &#39;&#39;,  
&nbsp;&nbsp;&nbsp;&nbsp;comment: &#39;&#39;,  
&nbsp;&nbsp;&nbsp;&nbsp;categorye_id: &#39;1&#39;,  
（中略、、、）  
&nbsp;&nbsp;&nbsp;&nbsp;minimum: 0,  
&nbsp;&nbsp;&nbsp;&nbsp;visible: 0  
&nbsp;&nbsp;&nbsp;});  
&nbsp;&nbsp;&nbsp;grid.stopEditing();  
&nbsp;&nbsp;&nbsp;ds.insert(0, itm);  
&nbsp;&nbsp;&nbsp;grid.startEditing(0, 0);  
&nbsp;&nbsp;}},  
&nbsp;&nbsp;{text: &#39;保存する&#39;,  
&nbsp;&nbsp;handler : function(){  
&nbsp;&nbsp;&nbsp;displayInfoClear();  
&nbsp;&nbsp;&nbsp;//更新データのみ取得する  
&nbsp;&nbsp;&nbsp;var mrs = ds.getModifiedRecords();  
&nbsp;&nbsp;&nbsp;$.each(mrs, function(i) {  
&nbsp;&nbsp;&nbsp;&nbsp;//AJAXでPOSTする  
&nbsp;&nbsp;&nbsp;&nbsp;$.post(&quot;/items/ajaxpost/&quot;,&nbsp;{  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][id]&#39;: this.data.id,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][title]&#39;: this.data.title,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][comment]&#39;: this.data.comment,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][categorye_id]&#39;: this.data.categorye_id,  
（中略、、、）  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][minimum]&#39;: this.data.minimum,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;data[Item][visible]&#39;: this.data.visible  
&nbsp;&nbsp;&nbsp;&nbsp;},  
&nbsp;&nbsp;&nbsp;&nbsp;displayInfo);  
&nbsp;&nbsp;&nbsp;});  
&nbsp;&nbsp;&nbsp;ds.reload();  
&nbsp;&nbsp;}},  
&nbsp;&nbsp;{text: &#39;再読込み&#39;,  
&nbsp;&nbsp;handler : function(){  
&nbsp;&nbsp;&nbsp;ds.reload();  
&nbsp;&nbsp;}}  
&nbsp;]  
&nbsp;);&nbsp; 
</pre>
<p>
javascriptで以下の関数を追加します。&nbsp; 
</p>
<p>
//更新ステータスを表示する<br />
function displayInfo(data) {<br />
&nbsp;$(&quot;#postinfo&quot;).html($(&quot;#postinfo&quot;).html() + &quot;&lt;br /&gt;&quot; + data);<br />
}<br />
//更新ステータス表示を消去する<br />
function displayInfoClear() {<br />
&nbsp;$(&quot;#postinfo&quot;).html(&quot;&quot;);<br />
}&nbsp; 
</p>
<p>
cakePHP側のコントローラーに以下のメソッドを作成します。&nbsp; 
</p>
<pre class="php">
&nbsp;//表形式編集保存 -----------------------------------------------  
&nbsp; function ajaxpost() {  
&nbsp;&nbsp;if(!empty($this-&gt;data)) {  
&nbsp;&nbsp;&nbsp;if ($this-&gt;Item-&gt;save($this-&gt;data)) {  
&nbsp;&nbsp;&nbsp;&nbsp;print(&quot;Id=&quot;.$this-&gt;data[&quot;Item&quot;][&quot;id&quot;].&quot;保存しました&quot;);  
&nbsp;&nbsp;&nbsp;&nbsp;exit();  
&nbsp;&nbsp;&nbsp;} else {  
&nbsp;&nbsp;&nbsp;&nbsp;print(&quot;Id=&quot;.$this-&gt;data[&quot;Item&quot;][&quot;id&quot;].&quot;保存できませんでした&quot;);  
&nbsp;&nbsp;&nbsp;&nbsp;exit();  
&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;}  
&nbsp;&nbsp;exit();  
&nbsp; } 
</pre>
<p>
&#39;data[Item][title]&#39;: this.data.title,<br />
がフォーム部品のname属性とvalue属性に相当します。<br />
cakePHPではこのnameフォーマットで送ると、<br />
$this-&gt;Item-&gt;save($this-&gt;data)<br />
だけで更新とバリデーション（データ検証）を行ってくれます。<br />
新規追加されたレコードにはidがないので、自動的にInsetをしてくれます。<br />
成功したら「保存しました」と返されるので、displayInfo(data)関数で表示します。<br />
この一連の更新作業は各レコードごとに非同期で行われます。 
</p>
<p>
再読込みするには、Ext.data.Store.reload()とするだけです。 
</p>
 ]]></description>
<pubDate>21-10·î-07 22:26</pubDate>
<guid>http://www.tonttu.net/tec/85/89.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext.grid.EditorGridで表形式編集_2</title>
<link>http://www.tonttu.net/tec/85/88.html</link>
<description><![CDATA[ <p>
Ext.grid.EditorGridを利用して表を表示します。<br />
前準備として、<a href="tec/cakePHP/87.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8">webservicesでjsonデータを出力する</a>ができるようにcakePHPを構築しておいてください. 
</p>
<p>
ExtライブラリとjqueryAjaxライブラリを読み込みます。（app/webroot/js/extに置いています） 
</p>
<pre class="php">
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/ext/adapter/jquery/jquery.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/ext/adapter/jquery/jquery-plugins.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/ext/adapter/jquery/ext-jquery-adapter.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/ext/ext-all.js&quot;&gt;&lt;/script&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;/js/ext/source/locale/ext-lang-ja.js&quot;&gt;&lt;/script&gt;<br />
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/js/ext/resources/css/ext-all.css&quot;&gt; 
<p>
Ext.grid.EditorGridの表示にはいくつかのクラスを必要とします。<br />
Ext.grid.ColumnModel　：　カラム（列）の設定。列名、幅、表示フォーマットなど。<br />
Ext.form　：　セレクト等の編集コンポーネント<br />
Ext.data.Record.create　：　各レコードのフィールドと対応するデータフィールド、各フィールドのデータ型など。<br />
Ext.data.Store　：　データを保持するオブジェクト。Ajaxで読み込むURLやxml,Jsonの解析設定など。<br />
Ext.Toolbar　：　今回は新規追加や保存するなどのボタンをツールバーに実装します。 
</p>
<pre class="php">
&lt;script type=&quot;text/javascript&quot;&gt;  
&lt;!--  
//ロード完了後実行（jquery使用）  
$(function() {  
&nbsp;Ext.QuickTips.init(); 
&nbsp;//Bool型の表示フォーマット  
&nbsp;function formatBoolean(value){  
&nbsp;&nbsp;return value ? &#39;1&#39; : &#39;0&#39;;  
&nbsp;}; 
&nbsp;var fm = Ext.form; //フォーム部品を使用する  
&nbsp;var Ed = Ext.grid.GridEditor; //EditorGridを使用する 
&nbsp;//カラムモデル  
&nbsp;var cm = new Ext.grid.ColumnModel(  
&nbsp;[  
&nbsp;&nbsp;{header: &#39;ID&#39;, width: 32, dataIndex: &#39;id&#39;},  
&nbsp;&nbsp;{header: &#39;商品名&#39;, width: 160, dataIndex: &#39;title&#39;,  
&nbsp;&nbsp;&nbsp;editor: new Ed(new fm.TextField({allowBlank: false}))  
&nbsp;&nbsp;},  
&nbsp;&nbsp;{header: &#39;備考&#39;, width: 120, dataIndex: &#39;comment&#39;,  
&nbsp;&nbsp;&nbsp;editor: new Ed(new fm.TextField())  
&nbsp;&nbsp;},  
&nbsp;&nbsp;{header: &#39;カテゴリー&#39;, width: 120, dataIndex: &#39;categorye_id&#39;,  
&nbsp;&nbsp;&nbsp;editor: new Ed(new Ext.form.ComboBox({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; triggerAction: &#39;all&#39;,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transform:&#39;categoryes&#39;,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forceSelection:true,  
&nbsp;&nbsp;&nbsp;&nbsp;editable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :false,  
&nbsp;&nbsp;&nbsp;&nbsp;lazyRender:true  
&nbsp;&nbsp;&nbsp;}))  
&nbsp;&nbsp;},  
（中略、、、）  
&nbsp;&nbsp;{header: &#39;ロット&#39;, width: 42, dataIndex: &#39;minimum&#39;,  
&nbsp;&nbsp;&nbsp;editor: new Ed(new fm.NumberField({  
&nbsp;&nbsp;&nbsp;allowBlank: false,  
&nbsp;&nbsp;&nbsp;allowDecimals : false,  
&nbsp;&nbsp;&nbsp;allowNegative: false  
&nbsp;&nbsp;&nbsp;}))  
&nbsp;&nbsp;},  
&nbsp;&nbsp;{header: &#39;有効&#39;, width: 42, dataIndex: &#39;visible&#39;,  
&nbsp;&nbsp;&nbsp;renderer: formatBoolean,  
&nbsp;&nbsp;&nbsp;editor: new Ed(new fm.Checkbox())  
&nbsp;&nbsp;}  
&nbsp;]);  
&nbsp;cm.defaultSortable = true; 
&nbsp;//レコードモデル  
&nbsp;var Item = Ext.data.Record.create(  
&nbsp;[  
&nbsp;&nbsp;{name: &#39;id&#39;},  
&nbsp;&nbsp;{name: &#39;title&#39;, type: &#39;string&#39;},  
&nbsp;&nbsp;{name: &#39;comment&#39;, type: &#39;string&#39;},  
&nbsp;&nbsp;{name: &#39;categorye_id&#39;, type: &#39;int&#39;},  
（中略、、、）  
&nbsp;&nbsp;{name: &#39;minimum&#39;, type: &#39;int&#39;},  
&nbsp;&nbsp;{name: &#39;visible&#39;, type: &#39;bool&#39;}  
&nbsp;]) 
&nbsp;//データストア  
&nbsp;var ds = new Ext.data.Store({  
&nbsp;&nbsp;//データストアにAjaxでJSONを読み込む  
&nbsp;&nbsp;proxy:&nbsp; new Ext.data.HttpProxy(  
&nbsp;&nbsp;&nbsp;{url: &#39;http://（サーバーアドレス）/json/items/index/&#39;}  
&nbsp;&nbsp;),  
&nbsp;&nbsp;reader: new Ext.data.JsonReader(  
&nbsp;&nbsp;&nbsp;{id: &#39;id&#39;, root: &#39;Item&#39;}, Item)  
&nbsp;}); 
&nbsp;//グリッド  
&nbsp;var grid = new Ext.grid.EditorGrid(  
&nbsp;&nbsp;&#39;gridDrow&#39;,  
&nbsp;&nbsp;{ds: ds, cm: cm, enableColLock:false}  
&nbsp;);  
&nbsp;grid.render(); //グリッドの描画 
&nbsp;ds.load(); //データ生成の開始  
});  
//--&gt;  
&lt;/script&gt; 
&lt;div style=&quot;margin: 0px; padding: 0px; border:1px solid #bbb&quot;&gt;  
&lt;div id=&quot;gridDrow&quot; style=&quot;overflow:hidden;width:800px&quot;&gt;  
The grid will be placed here.  
&lt;/div&gt;  
&lt;/div&gt;  
&lt;br /&gt;  
&lt;div id=&quot;postinfo&quot; style=&quot;background-color: #ffe;&quot;&gt;&lt;/div&gt; 
&lt;select name=&quot;categoryes&quot; id=&quot;categoryes&quot; style=&quot;display: none;&quot;&gt;  
&lt;{html_options options=$categoryelists}&gt;  
&lt;/select&gt; 
</pre>
</pre>
 ]]></description>
<pubDate>21-10·î-07 22:17</pubDate>
<guid>http://www.tonttu.net/tec/85/88.html</guid>
<author>クラウス</author>
</item>
<item>
<title>webservicesでjsonデータを出力する</title>
<link>http://www.tonttu.net/tec/cakePHP/87.html</link>
<description><![CDATA[ <p>
cakePHPでwebservicesを使うと、ホームページ用にヘッダーやメニューなどのテーマで飾られたページとは別に、rssやxmlなどの生データを出力することができます。 
</p>
<p>
JSON形式はJavascriptのオブジェクト、配列の生データの形式で、よく使われるXMLなどの形式より、javascriptでしか使われることがないと確定している場合には、変換などの必要がなく取扱いが容易になります。&nbsp; 
</p>
<p>
cakePHPではあらかじめ、rest,rss,soap,xml,xmlrpcの各形式に対応していますが、JSONに対応させるためには多少の手間が必要です。（また他のやり方も存在します）<br />
１./cake/libs/router.phpの152行目あたりに、<br />
$this-&gt;connect(&#39;/json/:controller/:action/*&#39;, array(&#39;webservices&#39; =&gt; &#39;Json&#39;));<br />
を追加します。<br />
２．<br />
app/controllers/components/json.phpにコントローラーを配置（空でよい）<br />
app/views/helpers/json.phpにヘルパーを配置（空でよい）<br />
app/views/layouts/json/にレイアウトを配置（&lt;{$content_for_layout}&gt;だけでよい）<br />
app/views/(コントローラー名)/json/にアクション名のテンプレートを配置 
</p>
<p>
たとえば商品一覧をテーブルで表示するページのアドレスは、<br />
/items/index/<br />
となりますが、webservicesでは、<br />
/rss/items/index/<br />
というアドレスになります。 
</p>
<p>
商品マスタテーブル「items」のデータを、<br />
$this-&gt;set(&#39;items&#39;, $this-&gt;Item-&gt;findAll());<br />
で渡されたテンプレート(smartyを使用)の例は以下です 
</p>
<pre class="jscript">
{&quot;Item&quot;: [
&lt;{foreach from=$items item=data name=itmloop}&gt;
{&quot;id&quot;:&lt;{$data.Item.id}&gt;, 
&quot;title&quot;:&quot;&lt;{$data.Item.title}&gt;&quot;, 
&quot;categorye_id&quot;:&lt;{$data.Item.categorye_id}&gt;, 
&quot;comment&quot;:&quot;&lt;{$data.Item.comment}&gt;&quot;, 
（中略,,,）
&quot;visible&quot;:&lt;{$data.Item.visible}&gt;, 
&quot;modified&quot;:&quot;&lt;{$data.Item.modified}&gt;&quot;}
&lt;{if !$smarty.foreach.itmloop.last }&gt;
,
&lt;{/if}&gt;
&lt;{/foreach}&gt;
]} 
</pre>
 ]]></description>
<pubDate>21-10·î-07 20:26</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/87.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext.grid.EditorGridで表形式編集_1</title>
<link>http://www.tonttu.net/tec/85/86.html</link>
<description><![CDATA[ <p>
Extの代表的なウィジィット（機能コンポーネント）はGridです。<br />
Gridを使うと、従来テーブルで表現されてきた表が、エクセルのような列の入れ替え、幅の調整、ソートなどを行えるようになります。<br />
EditorGridでは表示だけではなく、セルに対して編集ができます。数値のみに限定したり、金額表示や日付に対してはミニカレンダーからの入力も行えます。 <br />
（サンプルやネットでは表示のさせかたまでは調べることができましたが、今回は編集結果のデータベースへの反映までを解説します。<br />
ただし解説の手間をはぶくため、jqueryAjaxライブラリとcakePHPWebアプリケーションフレームワークを併用させていただきます。 ） 
</p>
<p>
おおまかな手順としては、<br />
１．cakePHPで配列にデータ取得、Webservicesとしてjson形式で出力できるようにしておく<br />
２．ページ表示。jsonデータを取得してExt.grid.EditorGridを構築。<br />
３．編集したデータをデータストアExt.data.Store.getModifiedRecords()から取得<br />
４．jqueryの$.eachで各行のデータをループしながらAjaxPOST送信する。<br />
となります。 
</p>
<p>
<img alt=" " height="266" src="assets/images/tec/EditGrid_01.gif" width="481" />&nbsp; 
</p>
<p>
ほとんどのネットショップの管理画面での商品情報の更新は、商品一覧画面-＞各商品詳細画面-＞各商品更新となりますが、<br />
このExt.grid.EditorGridとAjax技術を使うと、エクセルを扱うように一覧画面から直接複数商品の設定をすることができます。 
</p>
 ]]></description>
<pubDate>21-10·î-07 19:48</pubDate>
<guid>http://www.tonttu.net/tec/85/86.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ext</title>
<link>http://www.tonttu.net/tec/85.html</link>
<description><![CDATA[ <p>
Extは「AjaxGUIライブラリ」です。<br />
GUIとはメニューやボタンなどの手にふれるユーザーインターフェースのことです。Extは高機能とその表示の美しさに定評があります。<br />
AjaxGUIライブラリを使うことで、ホームページ上でワープロソフトなどの高機能な操作性を実現することができます。&nbsp; 
</p>
<p>
<ul><li><a href="/tec/85/86.html" title="Ext.grid.EditorGridで表形式編集_1" >Ext.grid.EditorGridで表形式編集_1</a></li>
<li><a href="/tec/85/88.html" title="Ext.grid.EditorGridで表形式編集_2" >Ext.grid.EditorGridで表形式編集_2</a></li>
<li><a href="/tec/85/89.html" title="Ext.grid.EditorGridで表形式編集_3" >Ext.grid.EditorGridで表形式編集_3</a></li>
<li><a href="/tec/85/100.html" title="Ext.grid.EditorGridで表形式編集2" >Ext.grid.EditorGridで表形式編集2</a></li>
<li><a href="/tec/85/link2Window.html" title="リンクをWindowダイアログ内に表示する" >リンクをWindowダイアログ内に表示する</a></li>
<li class="last"><a href="/tec/85/EXT_treeorder.html" title="Ext.treeで並べ替え" >Ext.treeで並べ替え</a></li>
</ul>&nbsp;&nbsp; 
</p>
 ]]></description>
<pubDate>21-10·î-07 19:30</pubDate>
<guid>http://www.tonttu.net/tec/85.html</guid>
<author>クラウス</author>
</item>
<item>
<title>hasAndBelongsToMany以下の配列</title>
<link>http://www.tonttu.net/tec/cakePHP/84.html</link>
<description><![CDATA[ <p>
cakePHPはモデルにアソシエーションを設定すると、子や親のリレーション関係にあるデータも自動的に持ってきてくれるので便利です。<br />
<em><font face="Courier New">$recursive設定で、階層数やとってこないようにすることもできます。</font></em>
</p>
<p>
しかし、hasAndBelongsToManyの場合は、とっては来るのですが、それをキーで囲まないため、「id」「title」と同じ並びに0,1,2と並んでしまいます。
</p>
<p>
cake/libs/model/datasources/dbo_source.phpの845行目あたり、
</p>
<pre class="php">
foreach ($merge as $i =&gt; $row) {
&nbsp;&nbsp;if (count($row) == 1) {
&nbsp;&nbsp;&nbsp;&nbsp;$data[$association][] = $row[$association];
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$tmp = array_merge($row[$association], $row);
&nbsp;&nbsp;&nbsp;&nbsp;unset($tmp[$association]);
&nbsp;&nbsp;&nbsp;&nbsp;$data[$association][] = $tmp;
&nbsp;&nbsp;}
}
</pre>
<p>
を、
</p>
<pre class="php">
foreach ($merge as $i =&gt; $row) {
&nbsp;&nbsp;if (count($row) == 1) {
&nbsp;&nbsp;&nbsp;&nbsp;$data[$association][&#39;HABTM&#39;][] = $row[$association]; //&lt;&lt;&lt;
&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;$tmp = array_merge($row[$association], $row);
&nbsp;&nbsp;&nbsp;&nbsp;unset($tmp[$association]);
&nbsp;&nbsp;&nbsp;&nbsp;$data[$association][&#39;HABTM&#39;][] = $tmp; //&lt;&lt;&lt;
&nbsp;&nbsp;}
}
</pre>
<p>
とすると、[HABTM]=array(,,,)と囲まれます。&nbsp;
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>08-10·î-07 21:46</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/84.html</guid>
<author>クラウス</author>
</item>
<item>
<title>hasAndBelongsToManyでINNER JOIN</title>
<link>http://www.tonttu.net/tec/cakePHP/INNERJOINbyHABTM.html</link>
<description><![CDATA[ <p>
このハックが適切かどうかわかりませんので、自己責任で、、。
</p>
<p>
「hasAndBelongsToMany」アソシエーションがうまく動作しないのでSQｌを調べてみると、ただの「JOIN」となっていました。<br />
これを「INNER JOIN」に変えたい場合は、&nbsp;
</p>
<p>
cake/libs/model/datasources/dbo_source.php<br />
の1107行目あたりに、<br />
&#39;type&#39; =&gt; &quot;INNER&quot;,<br />
を追加します。
</p>
<p>
&nbsp;
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>07-10·î-07 00:51</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP/INNERJOINbyHABTM.html</guid>
<author>クラウス</author>
</item>
<item>
<title>リンクにサムネイル画像を</title>
<link>http://www.tonttu.net/tec/tec_web/tec_web_thmbnail.html</link>
<description><![CDATA[ <p>
リンク先のサイトは実際に訪れてみるまではわかりませんが、これを（プレビュー）あらかじめ表示してしまおうとするのを「リンク先サムネイル」といいます。<br />
ユーザーにとっては、事前にリンク先の様子を知ることができます。 
</p>
<p>
リンク先サムネイルの実現方法には、<br />
・リンクの脇に画像を表示しておく<br />
・ポップアップ形式で表示する&nbsp;<br />
などの方法があります。前者は自分でリンク先ページをキャプチャーして貼っておくことでもできますが、メンテナンスが面倒ですね。 
</p>
<p>
ここでは「snap」をご紹介します。&nbsp;<br />
<a href="http://www.snap.com/about/shots_central.php?pageview_logged=1&amp;lang=ja-jp">http://www.snap.com/about/shots_central.php?pageview_logged=1&amp;lang=ja-jp</a> 
</p>
<p>
登録が必要ですが、いくつかの質問に答えた後表示されるJavascriptをリンク集のページに貼り付けておくだけです。<br />
このサイトでは<a href="aboutus/link.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" target="_blank">リンク集</a>のページで使用しています。<br />
すぐにお感じになると思いますが、けっこううっとおしいかもしれません＾＾） 
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>25- 9·î-07 17:09</pubDate>
<guid>http://www.tonttu.net/tec/tec_web/tec_web_thmbnail.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Web</title>
<link>http://www.tonttu.net/tec/tec_web.html</link>
<description><![CDATA[ <p>
インターネットでは様々な技術が日々登場しています。<br />
そのいくつかをご紹介します。 
</p>
<p>
<ul><li class="last"><a href="/tec/tec_web/tec_web_thmbnail.html" title="リンクにサムネイル画像を" >リンクにサムネイル画像を</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>25- 9·î-07 17:01</pubDate>
<guid>http://www.tonttu.net/tec/tec_web.html</guid>
<author>クラウス</author>
</item>
<item>
<title>サムネイル画像が表示されない</title>
<link>http://www.tonttu.net/tec/modx/modx_NoThumbnail.html</link>
<description><![CDATA[ <p>
MODXの管理画面で、ページ編集を行う場合、TinyMCEエディーターから画像の選択やアップロード、フォルダの生成が行えます。<br />
リストには96X96のサイズのサムネイル(縮小)画像が表示されるのでたいへんわかりやすいです。<br />
この動作にはMCPUKというライブラリが使われています。 
</p>
<p>
たいていのサーバーでは問題ないのですが、WebarenaのSuite2プランではサムネイル画像の生成ができませんでした。<br />
サムネイル画像がない場合は、ファイルタイプを表す代替のアイコンが表示されますが、それもおかしいです。 
</p>
<p>
調べてみると、サムネイル画像を準備する関数「imagecreatetruecolor」をサポートしていないようです。<br />
この関数は、画像生成ライブラリGDが入っていても、GD２ライブラリがないと動作しないとか、、。&nbsp;
</p>
<p>
manager/media/browser/mcpuk/connectors/php/Commands/Thumbnail.php<br />
の221行目あたりを修正します。<br />
</p>
<pre class="php">
//&nbsp;&nbsp;$thumb=imagecreatetruecolor(96,96);
if (function_exists(&quot;imagecreatetruecolor&quot;)) {
&nbsp;&nbsp;$thumb=imagecreatetruecolor(96,96);
} else {
&nbsp;&nbsp;$thumb=imagecreate(96,96);
}
</pre>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>24- 9·î-07 17:26</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx_NoThumbnail.html</guid>
<author>クラウス</author>
</item>
<item>
<title>テーマ集</title>
<link>http://www.tonttu.net/tec/tec_wordpress/79.html</link>
<description><![CDATA[ <p>
wordpressのテーマがたくさん掲載されています。
</p>
<p>
<a href="http://themes.wordpress.net/" target="_blank">ThemeViewer</a>
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>17- 9·î-07 20:02</pubDate>
<guid>http://www.tonttu.net/tec/tec_wordpress/79.html</guid>
<author>クラウス</author>
</item>
<item>
<title>wordpress</title>
<link>http://www.tonttu.net/tec/tec_wordpress.html</link>
<description><![CDATA[ <p>
wordpress（ワードプレス）はサーバーインストール型のブログソフトです。<br />
日記形式のコンテンツ以外にも、「ページ」機能によって普通のホームページのようなページを作ることができます。 
</p>
<p>
 
</p>
 ]]></description>
<pubDate>17- 9·î-07 20:00</pubDate>
<guid>http://www.tonttu.net/tec/tec_wordpress.html</guid>
<author>クラウス</author>
</item>
<item>
<title>マネージャーユーザー毎に画像フォルダを分ける</title>
<link>http://www.tonttu.net/tec/modx/modx_userimage.html</link>
<description><![CDATA[ <p>
マネージャーユーザーとは、管理画面に入ることのできるユーザーです。<br />
（管理画面に入らず会員制のホームページにパスワードを使って入ることのできるユーザーはウェブユーザーといいます） 
</p>
<p>
&nbsp;
</p>
<p>
Modxで画像を選択したり、アップロード、削除するにはファイルブラウザダイアログを使用します。<br />
ファイルブラウザには独自の設定ファイルがあります。<br />
/manager/media/browser/mcpuk/connectors/php/config.php<br />
内の約107行目、<br />
$fckphp_config[&#39;UserFilesPath&#39;] = &quot;&quot;;<br />
を、<br />
$fckphp_config[&#39;UserFilesPath&#39;] = &quot;/users/&quot;.$user_id;<br />
とします。<br />
/assetsフォルダ内に「users」フォルダを作り、その中に「1」「2」「3」等の数字のフォルダを作ります。<br />
（これが$user_id（ユーザーid）に相当します）<br />
さらにその中に「images」フォルダを作成しておきます。 
</p>
<p>
&nbsp;
</p>
<p>
以下未確認ですが、画像編集機能も使う場合、<br />
/manager/media/ImageEditor/config.inc.php<br />
内の約51行目、<br />
$IMConfig[&#39;base_dir&#39;] = $rb_base_dir;<br />
を、<br />
$IMConfig[&#39;base_dir&#39;] = $rb_base_dir.&quot;/users/&quot;.$user_id;<br />
に、約61行目、<br />
$IMConfig[&#39;base_url&#39;] = $rb_base_url;<br />
を、<br />
$IMConfig[&#39;base_url&#39;] = $rb_base_url.&quot;/users/&quot;.$user_id;<br />
とします。 
</p>
 ]]></description>
<pubDate>12- 9·î-07 22:56</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx_userimage.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Dittoのチャンクでテンプレート変数を使う</title>
<link>http://www.tonttu.net/tec/modx/modx_TV2ditto.html</link>
<description><![CDATA[ <p>
Dittoはあるフォルダ内のドキュメントを一覧してブログ風な表示を行えます。RSS出力にも使えます。<br />
一覧での各ドキュメントはチャンクをテンプレートとして使い、さまざまな表示のカスタマイズを行うことができます。<br />
テンプレート変数は、各ドキュメントに決められたフォーマットとしての入力項目を追加することができます。商品価格やメーカー名などに使うと便利です。<br />
ページタイトルやサマリーや本文はDittoのチャンクでテンプレート変数を使うなどで置き換えることができます。<br />
テンプレート変数はと、「tv」を変数名の前につける必要があります。 
</p>
<p>
[*listImage*］というテンプレート変数があった場合は、[+tvlistImage+］([]は半角で)とチャンクに記します。&nbsp; 
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>10- 9·î-07 22:06</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx_TV2ditto.html</guid>
<author>クラウス</author>
</item>
<item>
<title>tinuMCE使用時にエラーが出る場合</title>
<link>http://www.tonttu.net/tec/modx/titnyMCE_Error.html</link>
<description><![CDATA[ <p>
assets/plugins/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/ja_utf-8.js<br />
で、<br />
&quot;1月&quot;, &quot;2月&quot;, &quot;3月&quot;,<br />
となっているべきはずの箇所が<br />
&quot;1月&quot;, &quot;2月, &quot;3月&quot;,<br />
と「&quot;」が抜けていることがあるので修正してアップします。。<br />
複数個所あるので注意。 
</p>
<p>
inserttime_months_long : new Array(&quot;1月&quot;, &quot;2月, &quot;3月&quot;, &quot;4月&quot;, &quot;5月, &quot;6月&quot;, &quot;7月&quot;, &quot;8月&quot;, &quot;9月&quot;, &quot;10月&quot;, &quot;11月&quot;, &quot;12月&quot;),<br />
inserttime_months_short : new Array(&quot;1月&quot;, &quot;2月, &quot;3月&quot;, &quot;4月&quot;, &quot;5月, &quot;6月&quot;, &quot;7月&quot;, &quot;8月&quot;, &quot;9月&quot;, &quot;10月&quot;, &quot;11月&quot;, &quot;12月&quot;),<br />
inserttime_day_long : new Array(&quot;日曜日&quot;, &quot;月曜日, &quot;火曜日&quot;, &quot;水曜日&quot;, &quot;木曜日&quot;, &quot;金曜日&quot;, &quot;土曜日&quot;, &quot;日曜日&quot;),
</p>
<p>
を、
</p>
<p>
inserttime_months_long : new Array(&quot;1月&quot;, &quot;2月&quot;, &quot;3月&quot;, &quot;4月&quot;, &quot;5月&quot;, &quot;6月&quot;, &quot;7月&quot;, &quot;8月&quot;, &quot;9月&quot;, &quot;10月&quot;, &quot;11月&quot;, &quot;12月&quot;),<br />
inserttime_months_short : new Array(&quot;1月&quot;, &quot;2月&quot;, &quot;3月&quot;, &quot;4月&quot;, &quot;5月&quot;, &quot;6月&quot;, &quot;7月&quot;, &quot;8月&quot;, &quot;9月&quot;, &quot;10月&quot;, &quot;11月&quot;, &quot;12月&quot;),<br />
inserttime_day_long : new Array(&quot;日曜日&quot;, &quot;月曜日&quot;, &quot;火曜日&quot;, &quot;水曜日&quot;, &quot;木曜日&quot;, &quot;金曜日&quot;, &quot;土曜日&quot;, &quot;日曜日&quot;),
</p>
<p>
とします。
</p>
 ]]></description>
<pubDate>09- 9·î-07 10:16</pubDate>
<guid>http://www.tonttu.net/tec/modx/titnyMCE_Error.html</guid>
<author>クラウス</author>
</item>
<item>
<title>smarty</title>
<link>http://www.tonttu.net/tec/smarty.html</link>
<description><![CDATA[ <p>
smartyは「テンプレートエンジン」です。<br />
Webアプリケーションはプログラムですが、その出力はただのホームページと同じです。<br />
テンプレートエンジンを使うことによって、プログラムは生のデータを扱い、表示はテンプレートに担当させることができます。<br />
たとえば、商品価格の表示は人間にとっては「￥30,000円」となるのが見やすいですが、プログラム内部での生のデータは「30000」のままのほうがあつかいやすくなります。smartyではテンプレートに 
</p>
<p>
￥{￥price|number_format}円 
</p>
<p>
と記述します。そのほかにも繰り返し処理やif分岐なども扱うことができ、XSS等のセキュリティ対策にも強くなります。<br />
テンプレートエンジンを使うことによって、プログラムとデザインの分離が実現され、分業やメンテナンスが容易になります。 
</p>
<p>
&nbsp;
</p>
<p>
 
</p>
 ]]></description>
<pubDate>09- 9·î-07 09:58</pubDate>
<guid>http://www.tonttu.net/tec/smarty.html</guid>
<author>クラウス</author>
</item>
<item>
<title>jquery</title>
<link>http://www.tonttu.net/tec/jquery.html</link>
<description><![CDATA[ <p>
jqueryは「Ajaxライブラリ」です。<br />
元来ホームページは大学間などでの文書公開および共有の仕組みとして生まれました。<br />
一方、掲示板などのデータ操作のインターフェースとしてもホームページは機能します（CGIといいます）。<br />
CGIはサーバー側でプログラムが動作するのに対し、ユーザーのブラウザ上でもスクリプトというプログラムを動作させることができます。簡単なものは時計の表示などです。 
</p>
<p>
このスクリプト技術を展開させたものがAjax（エージャックス）です。Ajaxが注目されたのはGoogleMapです。GoogleMapでは世界地図がなめらかにスクロールし、拡大縮小し、地点マーカーを付けてメモを付けることもできます。任意の地図画像は非同期でサーバーから取得します。<br />
これからはワープロや表計算のような高度なソフトもネットで使えるようになっていきます。<br />
Ajaxライブラリはそれを実現するために便利な機能を提供します。 
</p>
<p>
&nbsp;
</p>
<p>
<ul><li class="last"><a href="/tec/jquery/jquery_colorbox_getJSON.html" title="colorboxでgetJSONを表示する" >colorboxでgetJSONを表示する</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>09- 9·î-07 09:58</pubDate>
<guid>http://www.tonttu.net/tec/jquery.html</guid>
<author>クラウス</author>
</item>
<item>
<title>cakePHP</title>
<link>http://www.tonttu.net/tec/cakePHP.html</link>
<description><![CDATA[ <p>
cakePHPは「Webアプリケーションフレームワーク」です。<br />
フレームワークとは「半完成キット」のようなもので、必要なものが「ほぼ」「お膳立て」されています。<br />
家に例えると、たいていの家では玄関・台所・トイレ・寝室があるものでしょう。０から測量をし、土台を固め、柱を立てていっても家は作れますが、半完成状態の建売りがあれば後はお好みの壁紙にしたり照明を付けるだけです。<br />
WebアプリケーションではDBアクセス・管理画面・ログイン・セキュリティ対策などが組み込まれています。<br />
フレームワークを使うことで、開発効率や運用メンテナンスがぐっと容易になります。 
</p>
<p>
<ul><li><a href="/tec/cakePHP/INNERJOINbyHABTM.html" title="hasAndBelongsToManyでINNER JOIN" >hasAndBelongsToManyでINNER JOIN</a></li>
<li><a href="/tec/cakePHP/84.html" title="hasAndBelongsToMany以下の配列" >hasAndBelongsToMany以下の配列</a></li>
<li><a href="/tec/cakePHP/87.html" title="webservicesでjsonデータを出力する" >webservicesでjsonデータを出力する</a></li>
<li><a href="/tec/cakePHP/RESTfulIndex.html" title="cakePHP1.2でRESTfulなindex" >cakePHP1.2でRESTfulなindex</a></li>
<li><a href="/tec/cakePHP/useMySQL3.html" title="cakePHP1.2でMySQL3を使いたい" >cakePHP1.2でMySQL3を使いたい</a></li>
<li><a href="/tec/cakePHP/PEAR-XML.html" title="cakePHP1.2とPEAR:XMLでXML出力" >cakePHP1.2とPEAR:XMLでXML出力</a></li>
<li><a href="/tec/cakePHP/cakePHP12_2_BASIC.html" title="cakePHP1.2でBasic認証" >cakePHP1.2でBasic認証</a></li>
<li><a href="/tec/cakePHP/cakePHP-RESTful-PUT.html" title="cakePHP1.2でRESTfulなPUTでEDIT" >cakePHP1.2でRESTfulなPUTでEDIT</a></li>
<li><a href="/tec/cakePHP/cakePHPsmartyCache.html" title="cakePHP+smartyでキャッシュを効かせる" >cakePHP+smartyでキャッシュを効かせる</a></li>
<li><a href="/tec/cakePHP/cakePHP_mobile.html" title="cakePHP1.2で携帯用" >cakePHP1.2で携帯用</a></li>
<li class="last"><a href="/tec/cakePHP/cakephpHABTMwith.html" title="同じモデルをHABTMプラスwithする" >同じモデルをHABTMプラスwithする</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>09- 9·î-07 09:57</pubDate>
<guid>http://www.tonttu.net/tec/cakePHP.html</guid>
<author>クラウス</author>
</item>
<item>
<title>セカンドライフ</title>
<link>http://www.tonttu.net/tec/secondlife.html</link>
<description><![CDATA[  ]]></description>
<pubDate>09- 9·î-07 09:57</pubDate>
<guid>http://www.tonttu.net/tec/secondlife.html</guid>
<author>クラウス</author>
</item>
<item>
<title>テクノロジー</title>
<link>http://www.tonttu.net/tec.html</link>
<description><![CDATA[ <p>
TONTTU.NETでは、インターネット技術に対しての研究開発に力を入れております。 <br />
どんな技術が注目されているかアンテナを張ることに加え、その技術そのものを扱えるようにしていきます。 
</p>
<p>
<img alt=" " height="290" src="assets/images/tec/webskill.gif" width="500" /> 
</p>
<p>
<p>記事がありません。</p> 
</p>
 ]]></description>
<pubDate>09- 9·î-07 09:49</pubDate>
<guid>http://www.tonttu.net/tec.html</guid>
<author>クラウス</author>
</item>
<item>
<title>RSSFeed</title>
<link>http://www.tonttu.net/rssfeed.html</link>
<description><![CDATA[ <div style="text-align: right;">
各社の提供するRSS最新ニュースを取得して表示しています.
</div>
<h2>＠IT自分戦略研究所</h2>
<div style="text-align: right;">
<a href="http://jibun.atmarkit.co.jp" target="_blank">http://jibun.atmarkit.co.jp</a>
</div>
<div style="float: left;">
<img src="http://www.atmarkit.co.jp/aboutus/copyright/jibun_links.gif" alt="＠IT自分戦略研究所" /><br />
</div>
<div style="float: left;">
ITエンジニアの中長期的なスキルとキャリアの向上を支援するサイト<br />
</div>
<div style="clear:both;"></div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/iN.ygwvgTIav/b4e2d867ba26ade2710b08f04ddf4dde?ul=zK9dF2lM5NUOwxOGmcpFnuSzFRXbhHdUXDzT2Ygy..T9.kIxxfR1j3ccSUSi9.o.hZmArsp6nJkwGPvTab1JW2ytn5bO" target="_blank">1万時間の業務経験＋愛で、38歳PGデビュー</a><br />
<div style="font-size: 90%;">
<p>　本音が語れるエンジニア参加型メディア「＠IT自分戦略研究所 エンジニアライフ」...
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/iN.ygwvgTIav/b4e2d867ba26ade2710b08f04ddf4dde"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/iN.ygwvgTIav/WRHtI9TusxW7?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/iN.ygwvgTIav/WRHtI9TusxW7?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/11&nbsp;エンジニアライフ&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/iN.ygwvgTIav/d8fb5bbb45065a18b6740f8656291b11?ul=xkdwvnDuWEH11GSmQ8rueY9WeYXGWt1MGbiaOBli6yoHUJ6FZhezrfanS3.A.CSfjAzD4lFwbhpKRXTi1SVcmlkCfbpj" target="_blank">Gmailをキーボードから操作してみよう</a><br />
<div style="font-size: 90%;">
<p>　皆様、お久しぶりです。リーディング・エッジ社の安田です。 　今回は1億以上のア...
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/iN.ygwvgTIav/d8fb5bbb45065a18b6740f8656291b11"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/iN.ygwvgTIav/btgb9WA5GzFb?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/iN.ygwvgTIav/btgb9WA5GzFb?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/11&nbsp;エンジニアライフ&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/iN.ygwvgTIav/61e6a05abd7432989948cdb84ceb963b?ul=ZJ1QeycOFbalIBVrpRrNgnOYV7Q0xSqSGhAWiNQhxcAyPXDOMAulx_O_E1QyUckc2piFIP6c3PIOXL7HVFQKwaTJyyfW" target="_blank">ITが仕掛ける仕組みはシンプルがよい</a><br />
<div style="font-size: 90%;">
■第4章　業務プロセス革新を実現するITの仕掛けと進化する仕組み 　要求定義工程...
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/iN.ygwvgTIav/61e6a05abd7432989948cdb84ceb963b"/>
<div style="text-align: right;">
2010/03/11&nbsp;エンジニアライフ&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/iN.ygwvgTIav/1dca308e61c5054fec04deec3eec52ed?ul=Hg2UTKoE4u.wxEIIrU_NKL4KwhpJQNQ.kCeTn805xaGHz8GFiDi9sG4KGEB6hdZthy43BS8.k142HaFVxtrW5sQBhgum" target="_blank">調達先との連携は、同一の仕組みは無理？</a><br />
<div style="font-size: 90%;">
<p>■調達先との連携は、同一の仕組みは無理？ 　取引先から見て得意先にあたる場合を想...
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/iN.ygwvgTIav/1dca308e61c5054fec04deec3eec52ed"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/iN.ygwvgTIav/os1YUeBqvUUU?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/iN.ygwvgTIav/os1YUeBqvUUU?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/11&nbsp;エンジニアライフ&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/iN.ygwvgTIav/37872a1f4f9d93beaa6587bd352481ed?ul=eRlOpTUDxAc99ye_.TRAvFV9aqQY8sDPHzO5P7Aw0Nnu1M2Co.i.fgaEB2RXnI81frKuGeVbQDNSK6DpK.3TZIkCFXgt" target="_blank">「予算はあとで確保するから」――その言葉にご用心</a><br />
<div style="font-size: 90%;">
<p>　本音が語れるエンジニア参加型メディア「＠IT自分戦略研究所 エンジニアライフ」...
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/iN.ygwvgTIav/37872a1f4f9d93beaa6587bd352481ed"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/iN.ygwvgTIav/EJgcQPVsWAgJ?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/iN.ygwvgTIav/EJgcQPVsWAgJ?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/11&nbsp;エンジニアライフ&nbsp;
</div>
</div>

<h2>＠IT情報マネジメント：IT戦略　カテゴリ</h2>
<div style="text-align: right;">
<a href="http://www.atmarkit.co.jp/im/cits/" target="_blank">http://www.atmarkit.co.jp/im/cits/</a>
</div>
<div style="float: left;">
<img src="http://www.atmarkit.co.jp/aboutus/copyright/atit_links.gif" alt="＠IT情報マネジメント：IT戦略　カテゴリ" /><br />
</div>
<div style="float: left;">
＠IT情報マネジメント − 企業におけるIT企画から投資、ガバナンスなどのIT戦略を担う人々に実践情報を提供<br />
</div>
<div style="clear:both;"></div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/desLJR67upVv/613d6b58ead7b4f3abe1f4eb5a67eb97?ul=pd8NkHJaGF8oBcc3tkYsfZf.IC5E5d_CO5vlQ7iPEpfffkPGsyc6xnsEmjUSl84812jUqWyPJHXRW6KjzhGyVCWcQs2." target="_blank">経理部の見解と態度</a><br />
<div style="font-size: 90%;">
<p>　ディルバートが経費精算の件で経理部とひともんちゃく。追い詰められたディルバートは、どうやってこの危機を突破するのか？
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/desLJR67upVv/613d6b58ead7b4f3abe1f4eb5a67eb97"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/desLJR67upVv/W2Sie7h3H6zi?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/desLJR67upVv/W2Sie7h3H6zi?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/05&nbsp;IT戦略&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/desLJR67upVv/0a48020a1fe66f0a587445ed9fcb7e79?ul=T1.q96DKgp8_Al97cuMQYyapVHHtW1gSpCHxk.uE7cvrGhK1yxsJ0T1w9cgEoYhZDuoP7VAquZBHwe5Zhr3pZamJSO3." target="_blank">目的の明確化が、ログ活用の必須条件</a><br />
<div style="font-size: 90%;">
　ただ漫然とログを取得しても、そこから何らかの意味や兆候を見出すことは難しい。しかし目的に応じて取得すると、ログはがぜん意味を持つ
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/desLJR67upVv/0a48020a1fe66f0a587445ed9fcb7e79"/>
<div style="text-align: right;">
2010/03/05&nbsp;IT戦略&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/desLJR67upVv/2e107aa3913c0fa2263d5669a72fb704?ul=FHOoj3pdYgMALgjLRvNC4xtXx1U5_BHss5ivldy9UX30bLbTjZzuNfwScihBYXQNcICgH0RBh2hY0RGhLM0iednjA_cu" target="_blank">ベンダ任せにしないで情シスもPDCAサイクルを回せ！</a><br />
<div style="font-size: 90%;">
<p>　一般的にシステム開発は予定通りに完了しない。今回はこの問題を解決する情シス部門が一緒にプロジェクト管理する方法を紹介する
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/desLJR67upVv/2e107aa3913c0fa2263d5669a72fb704"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/desLJR67upVv/_pu6a96mlVQn?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/desLJR67upVv/_pu6a96mlVQn?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/03/02&nbsp;IT戦略&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/desLJR67upVv/64c590b1c27ff00710c6a7867e8a9c18?ul=BUononwrqEhTR73wsqEWq76wfurh4yK0SxDO9BP3IT9Dq6CczlhA29VF5TyXGUGOJq_rWN00K1Sxf.KwtVYsv34w.U0K" target="_blank">ログは取り始めて初めて分かることがある</a><br />
<div style="font-size: 90%;">
　大企業でログ管理が普及しつつある中、その取引先の中小企業でもログ管理が始まりつつある。では、どのように展開すればよいのか
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/desLJR67upVv/64c590b1c27ff00710c6a7867e8a9c18"/>
<div style="text-align: right;">
2010/03/01&nbsp;IT戦略&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/desLJR67upVv/bc001c69edce484c63a92a10b7be907d?ul=5p3wZawedChrdoMi6GN9fSP0NZbeCLj1_nakD9JRI8T3WZVOvcxczjqgJPU.10aob5HNmdJwGtwOFijVGSiCj.b2JaPI" target="_blank">エルゴノミクスの秘術</a><br />
<div style="font-size: 90%;">
<p>　人事部によって送りこまれてきた男は、ウォーリーの仕事ぶりに次々ダメ出し。さてはて、エルゴノミクスでウォーリーを改善できるの？
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/desLJR67upVv/bc001c69edce484c63a92a10b7be907d"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/desLJR67upVv/x2aD7Warcmn4?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/desLJR67upVv/x2aD7Warcmn4?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/02/26&nbsp;IT戦略&nbsp;
</div>
</div>

<h2>＠IT情報マネジメント：ビジネスプロセス　カテゴリ</h2>
<div style="text-align: right;">
<a href="http://www.atmarkit.co.jp/im/cbp/" target="_blank">http://www.atmarkit.co.jp/im/cbp/</a>
</div>
<div style="float: left;">
<img src="http://www.atmarkit.co.jp/aboutus/copyright/atit_links.gif" alt="＠IT情報マネジメント：ビジネスプロセス　カテゴリ" /><br />
</div>
<div style="float: left;">
＠IT情報マネジメント − 競争優位を築くためのビジネスモデル構築など、経営革新や業務改革を担う人々に実践情報を提供<br />
</div>
<div style="clear:both;"></div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/DYk2hUZ2Fqpy/7d9049c6bc01d7bdd790951124b4284c?ul=c7MtUvKixsGHGvBuHUaHqBNIF2vb2dnkwjY60PcO5yMCukDx2zHVFQLB.a6eyAnZMyjdcfBMqrt1Qq.Cl6XoHWsCHV5M" target="_blank">小さな工夫で大きく変わるヘルプデスク業務</a><br />
<div style="font-size: 90%;">
<p>　手間と時間ばかりがかかりがちな社内ヘルプデスク業務だが、少しの工夫で対応の負荷を減らし、利用者の満足度を高めることができる
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/DYk2hUZ2Fqpy/7d9049c6bc01d7bdd790951124b4284c"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/DYk2hUZ2Fqpy/Nm..h4opCl.F?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/DYk2hUZ2Fqpy/Nm..h4opCl.F?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2010/01/21&nbsp;仕事の改善&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/DYk2hUZ2Fqpy/e01349518ef3d4febe50b442abeab9c6?ul=wnFoJ4t9PX8E_i7pGVxlHhpwsTPAEIp13_vKhfwX7LcWeq8Wa8vDulp.ooDkLthGfFM2GJob1plbGXAaQCqvNGCNYjnU" target="_blank">あどみちゃん昇進!?</a><br />
<div style="font-size: 90%;">
　ユーザーサポート中、怖いユーザーからクレーム電話が。あどみちゃん得意のキレ対応で見事解決！ それが社長に認められ……
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/DYk2hUZ2Fqpy/e01349518ef3d4febe50b442abeab9c6"/>
<div style="text-align: right;">
2009/12/24&nbsp;仕事の改善&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/DYk2hUZ2Fqpy/03f66ff4673671da353eb17b52d01551?ul=CBCC2hMK7IjglYAQQx4sqKyRD09BW74jhAzVrvJ_RgCUgjlwSd_3JICFxgPlwiT8Hlk8XZC5yA0oE_k2y1hGASQmYxR9" target="_blank">下請けいじめ？</a><br />
<div style="font-size: 90%;">
　コスト削減に必死な社長は、知り合いのSIerに格安でシステムを発注。しかし、修理段階の見積もりを見てみたら……
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/DYk2hUZ2Fqpy/03f66ff4673671da353eb17b52d01551"/>
<div style="text-align: right;">
2009/12/16&nbsp;仕事の改善&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/DYk2hUZ2Fqpy/d86c7f55fd310a21cb4963e89c7b293d?ul=_udLXlyQiDqgeuFAOpPSPkCHwTmdkccchLGF5S6fDh27mJXnqRXBIvJ8HWNqLSvIPGXN33wqH8e.6WuRdt_fTdwRhWYM" target="_blank">あどみ＆カルタ</a><br />
<div style="font-size: 90%;">
<p>　IT音痴なためにあどみちゃんにからかわれてきたカルタちゃん。そんなカルタちゃんも勉強した結果、だいぶ詳しくなり……
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/DYk2hUZ2Fqpy/d86c7f55fd310a21cb4963e89c7b293d"/></p>
<br clear="all" /><a href="http://rss.rssad.jp/rss/ad/DYk2hUZ2Fqpy/Nyly1ynVXNUP?type=1" target="_blank"><img src="http://rss.rssad.jp/rss/img/DYk2hUZ2Fqpy/Nyly1ynVXNUP?type=1" border="0"/></a><br/>
<div style="text-align: right;">
2009/12/09&nbsp;仕事の改善&nbsp;
</div>
</div>
<hr />
<a href="http://rss.rssad.jp/rss/artclk/DYk2hUZ2Fqpy/9bd982968c2ce211b5657382cb1083d9?ul=wXH2xs_Vee6z2XcU8x76eNam.f19iBgedy9JiUqfSgJaUVdvi1TLlpIrxYR0BaMxad7b5s7PPzruFeCdWtusabL_tMFp" target="_blank">そして、次のステージへの旅立ち</a><br />
<div style="font-size: 90%;">
　業界再編に伴い新会社への異動が決まった坂口。しかし、恩人豊若は佐藤専務の陰謀の影響で米国へと旅立つことに……
<img border="0" width="1" height="1" src="http://rss.rssad.jp/rss/artimg/DYk2hUZ2Fqpy/9bd982968c2ce211b5657382cb1083d9"/>
<div style="text-align: right;">
2009/12/07&nbsp;仕事の改善&nbsp;
</div>
</div>

<h2>CNET Japan 特集</h2>
<div style="text-align: right;">
<a href="http://japan.cnet.com/sp/" target="_blank">http://japan.cnet.com/sp/</a>
</div>
<div style="float: left;">
CNET Japan 特集<br />
</div>
<div style="float: left;">
テクノロジー＆ビジネス情報のメディアサイト。ニュースだけでなく、オピニオンリーダーによるコラムやインタビュー、ブログなども掲載。<br />
</div>
<div style="clear:both;"></div>
<hr />
<a href="http://feeds.japan.cnet.com/click.phdo?i=0a4d34a2303172ec7c2905e67c305424" target="_blank">ソニー復権への道--熱烈なファンの期待に応えることはできるか</a><br />
<div style="font-size: 90%;">
ソニーが、ゲーム機能を備えたスマートフォンと、メディアプラットフォームに接続可能なタブレットを準備しているとの報道がある。同社の強みであるテクノロジとコンテンツをうまく活かした統合デバイスは誕生するだろうか。<br clear="both"/>
<img alt="" border="0" src="http://feeds.japan.cnet.com/img.phdo?i=0a4d34a2303172ec7c2905e67c305424"/>
<div style="text-align: right;">
2010/03/11&nbsp;&nbsp;
</div>
</div>
<hr />
<a href="http://www.pheedo.jp/feeds/ht.php?t=c&amp;i=0a4d34a2303172ec7c2905e67c305424&amp;p=4" target="_blank">AD: 約５分でサーバの準備を可能にするオンデマンドクラウドサービス</a><br />
<div style="font-size: 90%;">
<table border="0" cellpadding="0" cellspacing="0">
<tr><td rowspan="2" valign="top"><a href="http://www.pheedo.jp/feeds/ht.php?t=c&amp;i=0a4d34a2303172ec7c2905e67c305424&amp;p=4"><img src="http://www.pheedo.jp/html/images/5/6/icon-56abad9492b54b9d9ae289a243e0d8db-1267770561.gif"/></a></td><td rowspan="2">&nbsp;&nbsp;</td><td valign="top">@niftyからパブリック型クラウドサービスが登場。サーバ準備やスペック変更、ディスク増加をブラウザから約５分で実現。</td></tr>
<tr><td><a href="http://www.pheedo.jp/feeds/ht.php?t=c&amp;i=0a4d34a2303172ec7c2905e67c305424&amp;p=4">cloud.nifty.com/</a></td></tr>
</table>
<div><span>
<br/>
Ads by Pheedo</span><img alt="" border="0" src="http://www.pheedo.jp/feeds/ht.php?t=v&amp;i=0a4d34a2303172ec7c2905e67c305424&amp;p=4"/>
<br/>
</div>
<div style="text-align: right;">
2010/03/11&nbsp;&nbsp;
</div>
</div>
<hr />
<a href="http://feeds.japan.cnet.com/click.phdo?i=5e1cee7930b052d72f466b31c9785f7b" target="_blank">FAQ：「iPad」の発売迫る--購入前に知っておくべきこと</a><br />
<div style="font-size: 90%;">
アップル製タブレット「iPad」の発売が近づいてきた。本記事では購入前に知っておくべきことや、スマートフォン、ノートPC、電子書籍端末との相違点などを簡潔に解説する。<br clear="both"/>
<img alt="" border="0" src="http://feeds.japan.cnet.com/img.phdo?i=5e1cee7930b052d72f466b31c9785f7b"/>
<div style="text-align: right;">
2010/03/10&nbsp;&nbsp;
</div>
</div>
<hr />
<a href="http://feeds.japan.cnet.com/click.phdo?i=cf20881893b8f07c932fc88870b7c323" target="_blank">今だから得するブロードバンドネット回線選び：フレッツ編</a><br />
<div style="font-size: 90%;">
新生活が間近に迫り、ISPはさまざまなキャンペーンを実施している。この時期にネットワークインフラの見直しを図ってはいかがだろうか。今回は、NTT東西を回線事業者として利用するFTTHサービスと、そのキャンペーンを紹介する。<br clear="both"/>
<img alt="" border="0" src="http://feeds.japan.cnet.com/img.phdo?i=cf20881893b8f07c932fc88870b7c323"/>
<div style="text-align: right;">
2010/03/09&nbsp;&nbsp;
</div>
</div>
<hr />
<a href="http://feeds.japan.cnet.com/click.phdo?i=ac46c26d5a5f894aa4319fcdf77d390d" target="_blank">アップルの特許訴訟--HTCが標的になった理由</a><br />
<div style="font-size: 90%;">
アップルが携帯電話機メーカーHTCに対して起こした特許侵害訴訟は、始まりにすぎないのかもしれない。なぜHTCが標的になったのか、またグーグルやマイクロソフトも巻き込まれる可能性があるかについて考える。<br clear="both"/>
<img alt="" border="0" src="http://feeds.japan.cnet.com/img.phdo?i=ac46c26d5a5f894aa4319fcdf77d390d"/>
<div style="text-align: right;">
2010/03/09&nbsp;&nbsp;
</div>
</div>

 ]]></description>
<pubDate>12- 2·î-07 16:25</pubDate>
<guid>http://www.tonttu.net/rssfeed.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Dittoのオプション</title>
<link>http://www.tonttu.net/tec/modx/Ditto.html</link>
<description><![CDATA[ <p>
「Ditto」スニペットは特定のフォルダ以下のドキュメントを一覧表示するものです。<br />
「NewsListing」と同じくブログ形式の表示に適しています。<br />
オプションの指定をまとめてみました（完全ではありませんのであしからず）
</p>
<p>
&nbsp; // ---------------------------------------------------<br />
&nbsp; // Parameters<br />
&nbsp; // ---------------------------------------------------
</p>
<p>
$mode = isset($mode)? $mode : &quot;development&quot;;<br />
&nbsp;// determines whether variable sanity checks are run.<br />
&nbsp;// use &quot;development&quot; while creating the snippet call and &quot;production&quot; when your site goes live for a little speed boost.
</p>
<p>
$startID = isset($startID) ? $ditto-&gt;cleanStartIDs($startID, $mode) : $modx-&gt;documentIdentifier;<br />
&nbsp;&nbsp;&nbsp; //記事が格納されているフォルダーID(デフォルト:現在のフォルダー)。カンマ区切りで複数指定<br />
&nbsp;&nbsp;&nbsp; // the folder that contains post entries. separate by commas to use multiple folders
</p>
<p>
$paginate = isset($paginate)? $paginate : 0;<br />
&nbsp;&nbsp;&nbsp; //0:ページ送りを表示しない(デフォルト)、1:ページ送りを表示する<br />
&nbsp;&nbsp;&nbsp; //以下ページ送りのサンプルコード<br />
&nbsp;&nbsp;&nbsp; //&lt;div id=&rdquo;ditto_wrapper&ldquo;&gt;Page &lt;strong&gt;&lt;/strong&gt; of &lt;strong&gt;&lt;/strong&gt; Articles &lt;div id=&quot;ditto_pages&quot;&gt;  &lt;/div&gt;&lt;/div&gt;<br />
&nbsp;&nbsp; // paginatation enabled or disabled
</p>
<p>
$summarize = isset($summarize) ? $summarize : 3;<br />
&nbsp;&nbsp;&nbsp; //一覧表示する投稿の数。これ以上はアーカイブリストに表示(デフォルト:3)<br />
&nbsp;&nbsp;&nbsp; // number of posts of which to show a summary<br />
&nbsp;&nbsp;&nbsp; // remainder (to total) go as an arhived/other posts list
</p>
<p>
$trunc = isset($trunc) ? $trunc : 1;<br />
　　//0:本文の表示文字数制限をしない、1:する(デフォルト)<br />
&nbsp;&nbsp;&nbsp; // should there be summary/short version of the posts?
</p>
<p>
$truncSplit = isset($truncSplit) ? $truncSplit : 1;<br />
&nbsp;&nbsp;&nbsp; //0:任意の文字列までで区切らない、1:任意の文字列までで区切る(デフォルト)<br />
&nbsp;&nbsp;&nbsp; // should the post be summarized at the &quot;splitter&quot;?
</p>
<p>
$truncAt = isset($truncAt) ? $truncAt : $_lang[&#39;default_splitter&#39;];<br />
&nbsp;&nbsp;&nbsp; //区切る任意の文字(デフォルト:&lt;!-- splitter --&gt;)<br />
&nbsp;&nbsp;&nbsp; // where to split the text
</p>
<p>
$truncLen = isset($truncLen) ? $truncLen : 300;<br />
&nbsp;&nbsp;&nbsp; //表示する本文の最大文字数(デフォルト:300)<br />
&nbsp;&nbsp;&nbsp; // how many characters to show of blogs
</p>
<p>
$truncOffset = isset($truncOffset) ? $truncOffset : 30;<br />
&nbsp;&nbsp;&nbsp; // how many characters to show of blogs
</p>
<p>
$truncText = isset($truncText)? $truncText : $_lang[&#39;more_text&#39;];<br />
&nbsp;&nbsp;&nbsp; //もっと読むの表示テキスト(デフォルト:Read more...)<br />
&nbsp;&nbsp;&nbsp; // text to be displayed in item link
</p>
<p>
$truncChars = isset($truncChars) ? $truncChars : 0;<br />
&nbsp;&nbsp;&nbsp; //0:HTMLタグを考慮しないで区切る、1:HTMLタグを考慮し区切る(デフォルト)<br />
　　// truncate based on characters and not html tags
</p>
<p>
$tpl = isset($tpl) ? $modx-&gt;getChunk($tpl): $_lang[&#39;default_template&#39;];<br />
&nbsp;&nbsp;&nbsp; //テンプレートチャンク名<br />
&nbsp;&nbsp;&nbsp; // optional user defined chunk name to format the summary posts
</p>
<p>
$showPublishedOnly = isset($showPublishedOnly) ? $showPublishedOnly : 1;<br />
&nbsp;&nbsp;&nbsp; //0:非公開のみ表示、1:公開のみ表示(デフォルト)<br />
&nbsp;&nbsp;&nbsp; // allows you to show unpublished docs if needed
</p>
<p>
$showInMenuOnly = isset($showInMenuOnly) ? $showInMenuOnly : 0;<br />
&nbsp;&nbsp;&nbsp; //0:メニュー表示可のみ表示(デフォルト)、1:メニュー表示不可も表示<br />
&nbsp;&nbsp;&nbsp; // allows you to show docs marked not to show in the menus
</p>
<p>
$emptyText = isset($emptyText)? $emptyText : $_lang[&#39;no_entries&#39;];<br />
&nbsp;&nbsp;&nbsp; //表示該当がない場合のテキスト(デフォルト:&lt;p&gt;No entries found.&lt;/p&gt;)<br />
&nbsp;&nbsp;&nbsp; // text to be displayed when there are no results
</p>
<p>
$dateFormat = isset($dateFormat)? $dateFormat : $_lang[&#39;date_format&#39;];<br />
&nbsp;&nbsp;&nbsp; //日付フォーマット(デフォルト:%d-%b-%y %H:%M)<br />
&nbsp;&nbsp;&nbsp; // format for the summary post date format
</p>
<p>
$displayArchive = isset($displayArchive)? $displayArchive : 1;<br />
&nbsp; //0:アーカイブを表示しない、1:表示する(デフォルト)<br />
&nbsp; // whether or not to show the archive
</p>
<p>
$archiveText = isset($archiveText)? $archiveText : $_lang[&#39;archives&#39;];<br />
&nbsp;&nbsp;&nbsp; //アーカイブのテキスト(デフォルト:Archives)<br />
&nbsp;&nbsp;&nbsp; // text to use for the Archives listing
</p>
<p>
$commentsChunk = isset($commentsChunk)? &#39;&#39; : &#39;&#39;;<br />
&nbsp;&nbsp;&nbsp; //コメント表示のチャンク名<br />
&nbsp;&nbsp;&nbsp; // if you&#39;re using comments, the name of the chunk used to format them
</p>
<p>
$hiddenTVs = (isset($hiddenTVs))? $hiddenTVs : &quot;&quot; ;<br />
&nbsp;// allows the snippet to filter by tv&#39;s not in the template. separate by comma.
</p>
<p>
$ditto-&gt;hiddenTVs = $hiddenTVs;<br />
&nbsp;// send the variable to the class
</p>
<p>
$sortDir = isset($sortDir) ? strtoupper($sortDir) : &#39;DESC&#39;;<br />
&nbsp;&nbsp;&nbsp; //ASC:昇順、DESC:降順(デフォルト)<br />
&nbsp;&nbsp;&nbsp; // get sort dir
</p>
<p>
$sortBy = isset($sortBy) ? $ditto-&gt;checkSort($sortBy, $dateFormatType, $mode) : &quot;createdon&quot;;<br />
&nbsp;&nbsp;&nbsp; //`menuindex`でメニューの並び順、(デフォルト:作成日順)<br />
&nbsp;&nbsp;&nbsp; // get sortBy
</p>
<p>
$hiddenTVs = $ditto-&gt;hiddenTVs;<br />
&nbsp;// grab latest hiddenTV additions
</p>
<p>
$dateFormatType = $ditto-&gt;checkDateFormat($sortBy,$dateFormatType);<br />
&nbsp;// date type to display (values can be createdon, pub_date, editedon)
</p>
<p>
if ($paginate == 1 &amp;&amp; $_GET[&#39;start&#39;] != 0) {<br />
&nbsp;$start= isset($_GET[&#39;start&#39;])? $_GET[&#39;start&#39;]: 0;<br />
&nbsp;&nbsp;// get post # to start at<br />
}else{<br />
&nbsp;$start = isset($start) ? $start : 0;<br />
&nbsp;&nbsp;// get start number<br />
}
</p>
<p>
$debug = isset($debug)? $debug : 0;<br />
&nbsp;&nbsp;&nbsp; //0:デバッグをしない(デフォルト)、1:デバッグする<br />
&nbsp;&nbsp;&nbsp; // for testing odittoy
</p>
<p>
$archiveDateType = isset($archiveDateType) ? $archiveDateType : $dateFormatType;<br />
&nbsp;// date type to display for archives (values can be createdon, pub_date, editedon)
</p>
<p>
$paginateAlwaysShowLinks = isset($paginateAlwaysShowLinks)? $paginateAlwaysShowLinks : 0;<br />
&nbsp;&nbsp;&nbsp; //0:前へなどのリンクがない場合、リンクを表示しない(デフォルト)、1:常に表示する<br />
&nbsp;&nbsp;&nbsp; // determine whether or not to always show previous next links
</p>
<p>
$paginateSplitterCharacter = isset($paginateSplitterCharacter)? $paginateSplitterCharacter : $_lang[&#39;button_splitter&#39;];<br />
&nbsp;// splitter to use of always show is disabled
</p>
<p>
$archivePlaceholder = isset($archivePlaceholder)? $archivePlaceholder : 0;<br />
&nbsp;// output archive (older posts section) as a placeholder called 
</p>
<p>
$filter = isset($filter)? $filter : false;<br />
&nbsp;// odittoy show items meeting a criteria<br />
&nbsp;// differant filters are | (pipe) delimited while each filter is comma delimited<br />
&nbsp;// documentobjectortvwithtvprefix,criteria
</p>
<p>
$hideFolders = isset($hideFolders)? $hideFolders : 0;<br />
&nbsp; //0:フォルダを表示する(デフォルト)、1:フォルダを表示しない<br />
&nbsp;// don&#39;t show folders in the returned results
</p>
<p>
$descendentDepth = (isset($descendentDepth))? $descendentDepth : 10;<br />
&nbsp; //ネストする階層を指定。(デフォルト:10)<br />
&nbsp;// number of levels deep to go
</p>
<p>
$seeThruUnpub = (isset($seeThruUnpub))? $seeThruUnpub : 0 ;<br />
&nbsp;// allows the snippet to see unpublished folders children
</p>
<p>
$format = (isset($format))? $format : &quot;html&quot; ;<br />
&nbsp; //`rss`とするとRSS形式で出力。(デフォルト:html)<br />
&nbsp;// tells the snippet whether to output html, archive, or rss
</p>
<p>
&nbsp;
</p>
<p>
&nbsp;
</p>
<p>
&nbsp;
</p>
<p>
&nbsp;
</p>
 ]]></description>
<pubDate>12- 2·î-07 15:18</pubDate>
<guid>http://www.tonttu.net/tec/modx/Ditto.html</guid>
<author>クラウス</author>
</item>
<item>
<title>関連キーワードマップ</title>
<link>http://www.tonttu.net/labo/keywordseachplus.html</link>
<description><![CDATA[ http://www.tonttu.net/keywordseachplus/keywordSearch.html ]]></description>
<pubDate>24- 1·î-07 20:48</pubDate>
<guid>http://www.tonttu.net/labo/keywordseachplus.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ラボラトリー</title>
<link>http://www.tonttu.net/labo.html</link>
<description><![CDATA[ <p>
いろいろな取り組みのコーナーです。 
</p>
<p>
<ul><li><a href="http://www.tonttu.net/keywordseachplus/keywordSearch.html" title="関連キーワードマップ" >関連キーワードマップ</a></li>
<li><a href="http://mup.tonttu.net/" title="Ajaxマッシュアップ検索MUP" >Ajaxマッシュアップ検索MUP</a></li>
<li class="last"><a href="http://www.tonttu.net/contents/canvas/canvasDraw.html" title="HTML5CANVASお絵かき" >HTML5CANVASお絵かき</a></li>
</ul>  
</p>
 ]]></description>
<pubDate>24- 1·î-07 20:47</pubDate>
<guid>http://www.tonttu.net/labo.html</guid>
<author>クラウス</author>
</item>
<item>
<title>mobile-top</title>
<link>http://www.tonttu.net/mobile/index.html</link>
<description><![CDATA[ モバイルTOP ]]></description>
<pubDate>08-12·î-06 16:26</pubDate>
<guid>http://www.tonttu.net/mobile/index.html</guid>
<author>クラウス</author>
</item>
<item>
<title>MODxで会員制のページを作成する</title>
<link>http://www.tonttu.net/tec/modx/modx-webuser.html</link>
<description><![CDATA[ MODxで会員制のページを作成する<br /><br />ホームページでは、しばしばパスワードを知っているユーザーだけに公開したいページを作成したいという要望があります、<br />従来「.htaccess」を利用する方法が取られていました。<br />MODxではユーザ管理機能を使用します。<br /><br />１．[ユーザ]-[ウェブパーミッション]-[ウェブユーザグループ]で、「accesses」ユーザグループを作成する。<br />３．[ユーザ]-[パーミッション管理]-[ドキュメントグループ]で、「DocAccess」ドキュメントグループを作成する。<br />４．[ユーザ]-[パーミッション管理]-[ユーザ/ドキュメントグループリンク]で、「accesses」ウェブユーザグループに「 DocAccess」ドキュメントグループを追加する。<br /><br />５．[ユーザ]-[ウェブユーザの管理]で、「access」ユーザを作成する。<br />　　アクセス許可で「accesses」を選択する。<br /><br />６．[コンテンツ]-[フォルダの作成]で、[会員ページへようこそ]フォルダを作成する<br />　　アクセス許可で、「Docaccess」を選択する。<br />　　（作成するのはドキュメントでもかまいませんが、ここでは子ページを作成できるようにフォルダを作成します）<br />　　（ドキュメント内の追加ドキュメントではフォルダのアクセス許可が引き継がれます）<br /><br />サイトを見るとまだログイン前なので、６．で作成したフォルダはメニューには表示されていません。<br /><img width="146" height="120" alt="" src="http://www.tonttu.net/assets/images/modx/modx_wu_02.gif" /><br /><br />次にパスワードを入力してログインするフォームを作成します。<br />管理画面からではなく、サイトからログインさせるには「WebLogin」スニペットを使用します。<br /><br />７．スニペットを表示させるドキュメントに［[WebLogin? &amp;loginhomeid=`56`]］と貼り付けます。loginhomeidの値は６．で作成したフォルダのドキュメントidです（管理画面の左ツリーで確認できます）。<br />[ページ設定]でキャッシュのチェックを外しておきます。<br />（TOPページに表示してもよいですし、専用のログインページを作成するのもよいでしょう。ただし、キャッシュを外す必要があるのでテンプレートに入れるのはおすすめできません。）<br /><br />動作確認しましょう。<br />８．ログイン画面で、ユーザ名とパスワードを入力してログインします。<br /><img width="280" height="138" alt="" src="http://www.tonttu.net/assets/images/modx/modx_wu_03.gif" /><br />　　成功すると会員ページが表示されます。メニューにも表示されます。<br />９．ログイン画面に戻ると「Logout」のリンクが表示されています。<br /><img width="169" height="61" alt="" src="http://www.tonttu.net/assets/images/modx/modx_wu_04.gif" /> ]]></description>
<pubDate>01-12·î-06 05:51</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx-webuser.html</guid>
<author>クラウス</author>
</item>
<item>
<title>最新情報だけ編集できるユーザを作成する</title>
<link>http://www.tonttu.net/tec/modx/topnewsuser.html</link>
<description><![CDATA[ 最新情報だけ編集できるユーザを作成する<br /><br />企業などで担当者を立てて、サイト全体には触らせずに一部のページだけを編集させることができます。<br />注！以下の操作の前に、あらゆるドキュメントに対してデフォルトの設定を外す操作が必要です。後述します。<br /><br />１．[ユーザ]-[権限設定]で、パスワードの変更・保存とドキュメントの編集・保存のみを許可した「AcsTopnews」権限を作成する。<br />２．[ユーザ]-[パーミッション管理]-[ユーザグループ]で、「MngTopnewses」ユーザグループを作成する。<br />３．[ユーザ]-[パーミッション管理]-[ドキュメントグループ]で、「DocTopnews」ドキュメントグループを作成する。<br />４．[ユーザ]-[パーミッション管理]-[ユーザ/ドキュメントグループリンク]で、「MngTopnewses」ユーザグループに「DocTopnews」ドキュメントグループを追加する。<br /><br />５．[ユーザ]-[ユーザ管理]で、「topnews」ユーザを作成する。<br />　　ユーザ権限で「AcsTopnews」を選択する。<br />　　アクセス許可で「MngTopnewses」を選択する。<br /><img width="452" height="425" src="http://www.tonttu.net/assets/images/modx/modx_mu_02.gif" alt="" /><br /><br />６．ドキュメント「topnews」を作成する。<br />　　アクセス許可で「DocTopnews」を選択する。<br /><img width="376" height="155" src="http://www.tonttu.net/assets/images/modx/modx_mu_03.gif" alt="" /><br /><br />７．「topnews」ユーザが管理画面にログインすると、<br /><img width="277" height="241" src="http://www.tonttu.net/assets/images/modx/modx_mu_01.gif" alt="" /><br />ドキュメント「topnews」しか編集することができません。<br /><br />MODxでは、ドキュメントを追加する際に６．のドキュメント-アクセス許可でデフォルトで「全ドキュメントグループ(Public)」が選択されます。<br />このTIPのように、一部のページだけ一部のユーザに編集させたい場合は、あらかじめ管理者しか編集できないパーミッションを作成し、追加したドキュメントはそこへ所属させるようにします。<br />このサイトでは「DocAdmins」ドキュメントグループを作成しておいています。 ]]></description>
<pubDate>01-12·î-06 05:13</pubDate>
<guid>http://www.tonttu.net/tec/modx/topnewsuser.html</guid>
<author>クラウス</author>
</item>
<item>
<title>MODxのユーザー管理</title>
<link>http://www.tonttu.net/tec/modx/modx-user.html</link>
<description><![CDATA[ MODxのユーザー管理<br /><br />MODxではユーザーは大きく３つに分かれます。<br />１．管理者：1名だけ作成されるMODxのすべてを管理するユーザーです。<br />２．マネージャーユーザ：ドキュメントの作成や編集を行います。<br />３．ウェブユーザ：単に割り当てられたページを見ることができるユーザーです。従来のホームページで言う「会員ページ」のようなアクセス制限を行います。<br /><br />[ユーザ]メニュー：<br /><img width="505" height="52" src="http://www.tonttu.net/assets/images/modx/modx_usr_01.gif" alt="" /><br />「ユーザ管理」と「ウェブユーザの管理」、<br />「パーミッション管理」と「ウェブパーミッション」<br />は画面が似ていますが、それぞれ「マネージャユーザ」と「ウェブユーザ」に相当します。<br /><br />２．マネージャーユーザは単に「ユーザ」と表記されます。<br />管理者も含め、フルネームや、電話番号、住所、誕生日、写真など属性の入力ができます。<br />パスワードとメールアドレスの入力が必須で、サイト内に同じメールアドレスを持つユーザーは存在できません。<br />ユーザとウェブユーザは、アクセス・操作できるページを管理者によって割り当てることができます。<br />（ユーザとウェブユーザの設定次第で両者の用途は混在できるようですが、ここでは断定的に区別しておきます）<br /><br />権限設定：<br />MODxのあらゆる操作に関して細かい許可、不許可を与えることができます。<br />[ユーザ]-[権限設定]にて名前を付けた設定をユーザーに対して割り当てます。<br /><img width="246" height="367" src="http://www.tonttu.net/assets/images/modx/modx_acs_01.gif" alt="" /> ]]></description>
<pubDate>01-12·î-06 04:20</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx-user.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ドキュメントの編集</title>
<link>http://www.tonttu.net/tec/modx/documentedit.html</link>
<description><![CDATA[ ドキュメントの編集<br />1.コンテンツ-ドキュメントの追加もしくは、フォルダを右クリック-ドキュメントの追加でドキュメントを追加します。<br />[ドキュメント設定]では、<br /><img width="489" height="440" src="http://www.tonttu.net/assets/images/modx/modx_doc_01.gif" alt="" /><br /><br />最低限必須なのは、[タイトル]と[ドキュメントエイリアス]の２つです。<br />タイトル：ドキュメントの日本語名です。<br />ドキュメントエイリアス：URLアドレスに使われます。半角英数字で入力してください。<br />長いタイトル、説明、要約：ドキュメントは掲示板やブログの一投稿のようにも扱うことができます。これらの設定は一覧表示の際に使われます。<br />使用テンプレート：ブログのデザインのように指定したテンプレートで見た目を変える事ができます。<br />メニュータイトル：メニューに表示されます。空の場合、タイトルが使用されます。<br />メニューインデックス：値が小さいほどメニューの上のほうに表示されます。<br />メニューに表示：メニューに表示させたくない場合は、チェックを外します。<br />親ドキュメント：左ツリーから入れたいフォルダを選択します。<br /><br /><br /><br /><br /><br /><br /> ]]></description>
<pubDate>01-12·î-06 03:50</pubDate>
<guid>http://www.tonttu.net/tec/modx/documentedit.html</guid>
<author>クラウス</author>
</item>
<item>
<title>GoogleMap</title>
<link>http://www.tonttu.net/tec/modx/googlemap.html</link>
<description><![CDATA[ Googleマップを表示するスニペットがありました。<br />
http://modxcms.com/forums/index.php/topic,5576.0.html<br />
<br />
しかし、アメリカなどは郵便番号から緯度と経度が算出できるのに対して、日本は対応していません。<br />
なので、緯度と経度を直接入力します。<br />
37行目あたり<br />
# geocode the postcode<br />
<pre class="php">
$coord = geocode($zip); // coord[0]=lng and coord[1]=lat
$coord[1] = 36.285221; //&lt;追加
$coord[0] = 139.383945; //&lt;追加
</pre>
なぜか座標が中央表示されません。<br />
＊GooglemapAPIを取得する必要があります。<br />
＊緯度と経度はがんばって見つけてください＾＾）<br />
http://modxcms.com/forums/index.php/topic,5576.0.html
 ]]></description>
<pubDate>10-10·î-06 11:49</pubDate>
<guid>http://www.tonttu.net/tec/modx/googlemap.html</guid>
<author>クラウス</author>
</item>
<item>
<title>リンク集</title>
<link>http://www.tonttu.net/link.html</link>
<description><![CDATA[ <h2>リンク集</h2>
<p>
<a href="http://www.icon.gr.jp/" target="_blank">NPO法人太田IT市民ネットワーク</a>　1000回を超えるパソコン講習会ITリテラシーの向上を目指すNPO
</p>
<p>
<a href="http://www.itc-gunma.com/" target="_blank">NPO法人ITC群馬</a>　ITによる経営改善をサポートするITコーディネーター集団
</p>
<hr />
<p>
<a href="http://www.and-planning.com/" target="_blank">株式会社&nbsp;安堂プランニング</a>　企画・広告制作・対人コミュニケーション向上<br />
<a href="http://www.andkids.net/" target="_blank">全国私立園元気化計画-アンドキッズ</a>　幼稚園・保育園経営改善をサポート 
</p>
<p>
<a href="http://www.prostar.co.jp/" target="_blank">株式会社プロスター</a>　Webソリューション・セキリュティ対策・不動産・会計 
</p>
<p>
<a href="http://www.koei-corp.jp/" target="_blank">コーエィ株式会社</a>　建機レンタル・総合レンタル・イベントプロデュース
</p>
<p>
<a href="http://www.palbit.co.jp/" target="_blank">パルビット研究所</a>　人材育成・経営コンサルタント・講師派遣・技術者教育 
</p>
<p>
<a href="http://itc-fukuzawa.net/" target="_blank">ITC福沢オフィス</a>　ITコーディネータ・IT経営支援・コンサルタント 
</p>
<p>
<a href="http://www.y-media.co.jp/" target="_blank">柳田メディア株式会社</a>　総合オフィスソリューション・事務機器販売 
</p>
<hr />
<p>
<a href="http://www.d-ic.com/" target="_blank">ウェブサービス　ディック</a>　ホームページ制作・CGI制作 
</p>
<p>
<a href="http://www.bhnt.co.jp/" target="_blank">有限会社ブロードヒューマンネットワーク</a>　システム・Webアプリケーション開発 
</p>
<p>
<a href="http://www2u.biglobe.ne.jp/~daishin/" target="_blank">有限会社大進経営</a>　システム開発・ERP・人材派遣パッケージ販売 
</p>
<p>
<font color="#0000ff"><a href="http://www.d-labo.net" target="_blank">Design LABO&lt; デザイン ラボ &gt;</a> </font>　&nbsp;Web・店舗・印刷物各種グラフィックデザイン・企画提案 
</p>
<p>
<a href="http://rad37.com/" target="_blank">ラディカルサポート</a>　&nbsp;ホームページ制作・パブリッシング 
</p>
<p>
<a href="http://www.nmox.com/" target="_blank">nmox</a> Webシステム開発・導入支援 
</p>
<p>
<a href="http://www.webnettechnology.com/" target="_blank">株式会社ウェブネットテクノロジー</a> システム開発・高度画像処理 
</p>
<p>
<a href="http://www.t-pod.jp/" target="_blank">有限会社トリポッド</a> システム開発・インターネットメディア媒体運営 
</p>
<p>
<a href="http://www.la3-beam.com/" target="_blank">La3-BEAM</a> 映像・ビデオ撮影・DVD制作・ホームページ制作 
</p>
<hr />
<p>
<a href="http://www.iwasawa.co.jp/" target="_blank">岩澤建設株式会社</a>　舗装工事・土木工事&nbsp; 
</p>
<p>
<a href="http://www.yoshi-ken.biz/" target="_blank">吉田建設株式会社</a>　宮大工・住宅施工・リフォーム&nbsp; 
</p>
<p>
<a href="http://www.i-joylife.jp/" target="_blank">有限会社ジョイライフ</a>　結婚仲介 
</p>
<p>
<a href="http://www.marusa.biz/" target="_blank">株式会社まるさ</a>　人材派遣 
</p>
<p>
<a href="http://www.tonttu.net/~plest/" target="_blank">株式会社プレスト</a>　各種パイプ洗浄・配水管・温泉管洗浄 
</p>
<hr />
<p>
<a href="http://www.ima.co.jp/index.html" target="_blank">国際魅力学会</a>　魅力学・セミナー講師育成 
</p>
<p>
<a href="http://smile-communication.net/" target="_blank">スマイルコミュニケーション</a>　&nbsp;コーチング・コーチングセミナー 
</p>
<p>
<a href="http://www17.plala.or.jp/yumepuro/" target="_blank">夢・舞台プロデュース</a>　&nbsp;演劇・劇団 
</p>
<p>
&nbsp;
</p>
<script type="text/javascript" src="http://shots.snap.com/snap_shots.js?ap=1&amp;key=cd5a432025aa91ec45c033b22b4a89e1&amp;sb=0&amp;th=green&amp;cl=0&amp;si=0&amp;po=0&amp;df=0&amp;oi=0&amp;lang=ja-jp&amp;domain=www.tonttu.net"></script>
</hr></hr></hr></hr> ]]></description>
<pubDate>24- 9·î-06 12:42</pubDate>
<guid>http://www.tonttu.net/link.html</guid>
<author>クラウス</author>
</item>
<item>
<title>トントゥって？</title>
<link>http://www.tonttu.net/aboutus/AboutTONTTU.html</link>
<description><![CDATA[ <h2>トントゥとは、、、</h2><br />
クリスマスに世界中のよい子達にプレゼントを届けるサンタクロースのおじさん。<br />
サンタクロースのお手伝いをするのが「トントゥ」と呼ばれる妖精たちです。<br />
<br />
<img height="256" src="assets/images/mil38057-s1.jpg" width="320" /><br />
サンタクロースは北欧のスカンジナビア半島、森と湖の国フィンランド（ラップランド）のロシアとの境にある｢耳の山（コルヴァ・トゥントゥリ）｣（実在します）に住んでいます。<br />
トントゥはサンタクロースの誕生以前から住んでいて、精霊として森の中やあらゆるところにいます。あまり目にすることはありません。<br />
クリスマスの理念である「夢」や「思いやり」を体現していて、フィンランドでは「幸せを運んで来てくれる」と信じられています。<br />
人間の家の中に住み着いたトントゥは、家事や病気から守ってくれますが、いたずら好きなのでときどき料理のつまみ食いもしたりするかもしれません。<br />
<br />
挿絵などに書かれるのは小人で多くは老人の姿をしています。必ず赤い帽子をかぶっています。<br />
クリスマスの前には子供達が良い子でいたか確かめたり、手紙の整理をしたり、プレゼントを用意したりと大忙し！とても有能で働き者です。<br />
<br />
<h3>関連リンク</h3><a href="http://www.moimoifinland.com/thisweek/tonttu.html">フィンランドのトントゥ</a><br />
<a href="http://www.finland.or.jp/ja/">フィンランド大使館</a><br />
<a href="http://www.seymour.co.jp/jpnz_tonttu.html">フィンランド在住・トントゥ人形作家タイナ・マルヤネンの人形</a><br />
<a href="http://www.akita-airport.com/airportliner/shirakami/tour2.html">サンタランド白神サンタ－クロ－ス学校トントゥ養成講座</a>　<br />
<br />
トントゥの存在はあまり知られていませんが、<br />
・「森のトントたち」というアニメがあります。<br />
・「森のトントゥ」フィンランドの画家エバ・ハツカライネンと立松和平の絵本があります。<br />
・「踊る大捜査線」テレビシリーズの最終回で青島刑事が「はい、幸せを運ぶトントゥ」と真下警部にお見舞いを渡しています。<br />
・フィンランドでは「トントゥ」という妖精の国家資格があるそうです。<br />
・余談ですが「水曜どうでしょう」でフィンランドのサンタクロースに会いに行ったら日本語ベラベラなのには笑いました。<br />
<br />
<br />
<h3>TONTTU.NETについて</h3><img align="right" height="240" src="assets/images/xms112-s11.jpg" width="160" /> 「トントゥ」の名前をはじめて知ったのはカーラジオから流れてきた、来日したサンタさんのお話の中でした。<br />
トントゥたちはそれぞれが専門分野を持ち、普段はひっそりと自然の中で暮らしていて、幸せのために働くモノ作り集団であることに感銘しました。<br />
小人であることから原型はGNOME（ノーム）であることは容易に想像がつきますが、白雪姫で描かれるような陽気な姿とはうらはらに、その原点は中世の悲しい事情があるのを知っています。ここでは言及しません。<br />
精霊があらゆるところに存在する思想は、日本の八百万の神に似ていると思いませんか？いたずら好きなところも。<br />
<br />
ご覧のホームページが運用されているサーバーのOS「LINUX」も、フィンランドヘルシンキ大学のリーナス・トーバルス氏 によって作成され、インターネットを通じて多くのプログラマの助力により、発展してきたのでした。<br />
私達も多くのみなさんと職能集団としてコラボレーションを重ねながら人のお役に立てたら、、、と願います。<br />
ドメイン名を取るために、その当時はスペルがわからなくて一生懸命ネットで調べました。その多くは英語ですらない（＾＾ 
 ]]></description>
<pubDate>21- 9·î-06 19:13</pubDate>
<guid>http://www.tonttu.net/aboutus/AboutTONTTU.html</guid>
<author>クラウス</author>
</item>
<item>
<title>制作実績</title>
<link>http://www.tonttu.net/works.html</link>
<description><![CDATA[ 一部ですが、手がけた仕事をご紹介します。<br />
<h2>■ホームページ制作・デザイン案 </h2>
<table border="0" cellspacing="4">
	<tbody>
		<tr>
			<td><img alt=" " height="120" src="assets/images/sample/hp_01.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_02.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_03.gif" width="120" /></td>
		</tr>
		<tr>
			<td><img alt=" " height="120" src="assets/images/sample/hp_04.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_05.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_06.gif" width="120" /></td>
		</tr>
		<tr>
			<td><img alt=" " height="120" src="assets/images/sample/hp_07.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_08.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_09.gif" width="120" /></td>
		</tr>
		<tr>
			<td><img alt=" " height="120" src="assets/images/sample/hp_10.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_11.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_12.gif" width="120" /></td>
		</tr>
		<tr>
			<td><img alt=" " height="120" src="assets/images/sample/hp_13.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_14.gif" width="120" /></td>
			<td><img alt=" " height="120" src="assets/images/sample/hp_15.gif" width="120" /></td>
		</tr>
	</tbody>
</table>
<br />
<h2>■システム開発　他 </h2>
<div id="table2grid">
<table border="1">
	<tbody>
		<tr>
			<th>種類</th><th>概要</th><th>納品先</th><th>開発言語・ソフト</th><th>その他</th>
		</tr>
		<tr>
			<td>ホームページ制作</td>
			<td>サプライチェーン</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ホームページ制作</td>
			<td>結婚紹介業</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ホームページ制作</td>
			<td>工場清掃会社</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ホームページ制作</td>
			<td>エアコンメンテナンスノウリッジベース</td>
			<td>電気メーカー</td>
			<td>&nbsp;</td>
			<td>携帯対応</td>
		</tr>
		<tr>
			<td>ホームページ更新代行</td>
			<td>広告代理店</td>
			<td>広告代理店</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ホームページ更新代行</td>
			<td>広域圏ＨＰ</td>
			<td>官公庁</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ビジネスブログ構築</td>
			<td>クロムめっき処理会社</td>
			<td>企業</td>
			<td>PHP+wordpress+MySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ビジネスブログ構築</td>
			<td>建設施工会社</td>
			<td>建設業</td>
			<td>
			<p>
			PHP+ppBlog 
			</p>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ビジネスブログ構築</td>
			<td>結婚紹介業</td>
			<td>企業</td>
			<td>PHP+ppBlog</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>開発人材派遣社内システム</td>
			<td>人材派遣業</td>
			<td>PHP+postgrSQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>ショッピングモール</td>
			<td>企業</td>
			<td>ASP+SQLServer</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>ショッピングモール</td>
			<td>企業</td>
			<td>PHP+Smarty+postgreSQL</td>
			<td>外部決済サービス</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>結婚仲介会員制システム</td>
			<td>企業</td>
			<td>PHP+Smarty+postgreSQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>フランチャイズチェーン検索システム</td>
			<td>企業</td>
			<td>PHP+postgreSQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>社内販売システム</td>
			<td>企業</td>
			<td>PHP+Smarty+postgreSQL</td>
			<td>PEAR</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>勤怠管理支援システム</td>
			<td>企業</td>
			<td>PHP+Smarty</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>DM集計システム</td>
			<td>企業</td>
			<td>ASP+SQLServer</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>イベント幹事システム</td>
			<td>企業</td>
			<td>PHP+Smarty+postgreSQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>お問合せフォームメール</td>
			<td>企業</td>
			<td>PHP+Smarty+postgreSQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>お問合せフォームメール</td>
			<td>企業</td>
			<td>Perl</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>更新情報システム</td>
			<td>企業</td>
			<td>PHP+Smarty</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>人材派遣連携システム</td>
			<td>企業</td>
			<td>PHP+Smarty</td>
			<td>携帯対応</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>AJAXWebservice検索</td>
			<td>企業</td>
			<td>PHP+cakePHP</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>Webシステム開発</td>
			<td>イベントカレンダー</td>
			<td>企業</td>
			<td>PHP+cakePHP</td>
			<td>PEAR</td>
		</tr>
		<tr>
			<td>アプリケーション開発</td>
			<td>メールマガジン発行ソフト</td>
			<td>企業</td>
			<td>C++Builder</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>アプリケーション開発</td>
			<td>メールヘッダー集計ツール</td>
			<td>企業</td>
			<td>WSH</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>建築施工会社</td>
			<td>建築施工会社</td>
			<td>PHP+XOOPS+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>建築施工会社</td>
			<td>建築施工会社</td>
			<td>PHP+XOOPS+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>NPO法人</td>
			<td>NPO法人</td>
			<td>PHP+XOOPS+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>大手電気メーカーグループ会社</td>
			<td>電気メーカー</td>
			<td>PHP+MODx+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>建設施工会社</td>
			<td>建設施工会社</td>
			<td>PHP+MODx+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>建設会社</td>
			<td>建設会社</td>
			<td>PHP+MODx+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>複数ブログシステム構築</td>
			<td>企業</td>
			<td>PHP+Nucleus+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>テーマ制作・構築支援</td>
			<td>企業</td>
			<td>PHP+XOOPS+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>オープンソースCMS構築</td>
			<td>カスタマイズ・機能追加</td>
			<td>企業</td>
			<td>PHP+osCommerce+mySQL</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>３ＤＣＧ制作</td>
			<td>ＴＶ番組ＤＶＤ特典映像</td>
			<td>企業</td>
			<td>Lightwave3D</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>４ＤＣＧ制作</td>
			<td>コンサートＤＶＤＯＰ映像</td>
			<td>企業</td>
			<td>Lightwave3D</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ＤＶＤ制作</td>
			<td>劇団公演ＤＶＤ制作</td>
			<td>企業</td>
			<td>Premiere</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>ＤＶＤ制作</td>
			<td>セミナーＤＶＤ制作</td>
			<td>企業</td>
			<td>Premiere</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>DTP</td>
			<td>パンフレット制作</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>その他</td>
			<td>セミナー講師</td>
			<td>組合・団体</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>その他</td>
			<td>ITコンサルティング</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>その他</td>
			<td>新規事業コンサルティング</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>その他</td>
			<td>マーケティング分析</td>
			<td>官公庁</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td>その他</td>
			<td>ブログ開設サポート</td>
			<td>企業</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
	</tbody>
</table>
</div>
 ]]></description>
<pubDate>21- 9·î-06 18:50</pubDate>
<guid>http://www.tonttu.net/works.html</guid>
<author>クラウス</author>
</item>
<item>
<title>お問合せ</title>
<link>http://www.tonttu.net/contactus.html</link>
<description><![CDATA[ 
<p></p>
※：入力必須項目<br />
<form action="rss.xml.html" method="post">
<input name="formid" type="hidden" value="feedbackForm" />
<table>
<tr><th>お名前※</th>
<td><input maxlength="60" name="Name" type="text"  /></td></tr>
<tr><th>会社名</th>
<td><input maxlength="60" name="company" type="text"  /></td></tr>
<tr><th>メールアドレス※</th>
<td><input maxlength="40" name="email" size="40" type="text"  /></td></tr>
<tr><th>お問合せ項目</th>
<td><select name="department">
<option>選択してください</option>
<option value="wordpress">wordpress構築&カスタマイズ</option>
<option value="eccube">eccube構築&カスタマイズ</option>
<option value="modx">modx構築&カスタマイズ</option>
<option value="xoops">xoops構築&カスタマイズ</option>
<option value="IT">ITに関するアドバイス</option>
<option value="ホームページ">ホームページ制作</option>
<option value="デザイン・ムービー">デザイン・ムービー</option>
<option value="その他">その他</option>
</select></td></tr>
<tr><th>お問合せ内容※</th>
<td><textarea cols="40" rows="10" name="comments"  ></textarea></td></tr>
<tr><th></th><td>
<input name="submit" type="submit" value="送信" />(確認画面を出さずに送信します)</td></tr>
</table>
</form>
 ]]></description>
<pubDate>21- 9·î-06 18:44</pubDate>
<guid>http://www.tonttu.net/contactus.html</guid>
<author>クラウス</author>
</item>
<item>
<title>サービスプラン・料金表</title>
<link>http://www.tonttu.net/rentalserver.html</link>
<description><![CDATA[ http://www.tonttu.net/contents/rentalserver.html ]]></description>
<pubDate>21- 9·î-06 17:40</pubDate>
<guid>http://www.tonttu.net/rentalserver.html</guid>
<author>クラウス</author>
</item>
<item>
<title>サイトマップ</title>
<link>http://www.tonttu.net/sitemap-j.html</link>
<description><![CDATA[ <ul class="topnav">
<li><a href="index.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">TOP(Normal)</a></li>
<li><a href="service.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">サービス</a>
<div class="subdiv">
<ul>
<li><a href="service/hpdesign.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ホームページ制作</a></li>
<li><a href="service/marketing.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">SEO対策</a></li>
<li><a href="service/programing.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ｗｅｂシステム開発</a></li>
<li><a href="service/opensouce.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">オープンソースCMS</a></li>
<li><a href="service/contents.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">デジタルコンテンツ</a></li>
<li class="last"><a href="service/market.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">マーケティング分析</a></li>
</ul>
</div>
</li>
<li><a href="CMSconstraction.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">CMS構築・カスタマイズ</a></li>
<li><a href="works.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">制作実績</a></li>
<li><a href="aboutus.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">AboutUS</a>
<div class="subdiv">
<ul>
<li class="last"><a href="aboutus/AboutTONTTU.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">トントゥって？</a></li>
</ul>
</div>
</li>
<li><a href="case.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">事例</a>
<div class="subdiv">
<ul>
<li><a href="case/case_cms.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">CMS構築</a>
<div class="subdiv">
<ul>
<li><a href="case/case_cms/case_001.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">NPO会員向けに、会員性のホームページで情報共有したい</a></li>
<li class="last"><a href="case/case_cms/case_006.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">柔軟性の高いホームページを制作して欲しい</a></li>
</ul>
</div>
</li>
<li><a href="case/case_multimedia.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">マルチメディア制作</a>
<div class="subdiv">
<ul>
<li class="last"><a href="case/case_multimedia/case_002.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">TV番組のDVD特典用のムービーを作成して欲しい</a></li>
</ul>
</div>
</li>
<li><a href="case/case_system.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">システム制作</a>
<div class="subdiv">
<ul>
<li><a href="case/case_system/case_003.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">メールマガジン配信サービスを構築したい</a></li>
<li><a href="case/case_system/case_007.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">独自アイデアの広告サイトを立ち上げたい</a></li>
<li><a href="case/case_system/case_008.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">人材派遣システムを構築したい</a></li>
<li class="last"><a href="case/case_system/case_010.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">大量の商品紹介を伴うホームページを制作したい</a></li>
</ul>
</div>
</li>
<li class="last"><a href="case/case_homepage.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ホームページ制作</a>
<div class="subdiv">
<ul>
<li><a href="case/case_homepage/case_004.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">地域イベントの開催ホームページを制作して欲しい</a></li>
<li><a href="case/case_homepage/case_005.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">HTMLコーディングとサーバー設定をして欲しい</a></li>
<li class="last"><a href="case/case_homepage/case_009.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Smartyテンプレート制作をして欲しい</a></li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li><a href="tec.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">テクノロジー</a>
<div class="subdiv">
<ul>
<li><a href="tec/secondlife.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">セカンドライフ</a></li>
<li><a href="tec/cakePHP.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP</a>
<div class="subdiv">
<ul>
<li><a href="tec/cakePHP/INNERJOINbyHABTM.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">hasAndBelongsToManyでINNER JOIN</a></li>
<li><a href="tec/cakePHP/84.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">hasAndBelongsToMany以下の配列</a></li>
<li><a href="tec/cakePHP/87.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">webservicesでjsonデータを出力する</a></li>
<li><a href="tec/cakePHP/RESTfulIndex.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2でRESTfulなindex</a></li>
<li><a href="tec/cakePHP/useMySQL3.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2でMySQL3を使いたい</a></li>
<li><a href="tec/cakePHP/PEAR-XML.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2とPEAR:XMLでXML出力</a></li>
<li><a href="tec/cakePHP/cakePHP12_2_BASIC.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2でBasic認証</a></li>
<li><a href="tec/cakePHP/cakePHP-RESTful-PUT.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2でRESTfulなPUTでEDIT</a></li>
<li><a href="tec/cakePHP/cakePHPsmartyCache.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP+smartyでキャッシュを効かせる</a></li>
<li><a href="tec/cakePHP/cakePHP_mobile.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">cakePHP1.2で携帯用</a></li>
<li class="last"><a href="tec/cakePHP/cakephpHABTMwith.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">同じモデルをHABTMプラスwithする</a></li>
</ul>
</div>
</li>
<li><a href="tec/modx.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ModX</a>
<div class="subdiv">
<ul>
<li><a href="tec/modx/usetemplete.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">テンプレートの使い方</a></li>
<li><a href="tec/modx/contactform2j.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ContactForm日本語化</a></li>
<li><a href="tec/modx/modx-seach.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">検索機能</a></li>
<li><a href="tec/modx/docdelete.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ドキュメントの削除</a></li>
<li><a href="tec/modx/NewsPublisher.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">NewsPublisher</a></li>
<li><a href="tec/modx/NewsListing.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">NewsListing</a></li>
<li><a href="tec/modx/googlemap.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">GoogleMap</a></li>
<li><a href="tec/modx/documentedit.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ドキュメントの編集</a></li>
<li><a href="tec/modx/modx-user.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">MODxのユーザー管理</a></li>
<li><a href="tec/modx/topnewsuser.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">最新情報だけ編集できるユーザを作成する</a></li>
<li><a href="tec/modx/modx-webuser.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">MODxで会員制のページを作成する</a></li>
<li><a href="tec/modx/Ditto.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Dittoのオプション</a></li>
<li><a href="tec/modx/titnyMCE_Error.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">tinuMCE使用時にエラーが出る場合</a></li>
<li><a href="tec/modx/modx_TV2ditto.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Dittoのチャンクでテンプレート変数を使う</a></li>
<li><a href="tec/modx/modx_userimage.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">マネージャーユーザー毎に画像フォルダを分ける</a></li>
<li><a href="tec/modx/modx_NoThumbnail.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">サムネイル画像が表示されない</a></li>
<li><a href="tec/modx/notemplate.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">パラメーターでテンプレートを使用しない</a></li>
<li class="last"><a href="tec/modx/wayfinder2Ext.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">WayfinderでExt.tree用のjsonを出力する</a></li>
</ul>
</div>
</li>
<li><a href="tec/jquery.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">jquery</a>
<div class="subdiv">
<ul>
<li class="last"><a href="tec/jquery/jquery_colorbox_getJSON.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">colorboxでgetJSONを表示する</a></li>
</ul>
</div>
</li>
<li><a href="tec/smarty.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">smarty</a></li>
<li><a href="tec/tec_wordpress.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">wordpress</a>
<div class="subdiv">
<ul>
<li class="last"><a href="tec/tec_wordpress/79.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">テーマ集</a></li>
</ul>
</div>
</li>
<li><a href="tec/tec_web.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Web</a>
<div class="subdiv">
<ul>
<li class="last"><a href="tec/tec_web/tec_web_thmbnail.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">リンクにサムネイル画像を</a></li>
</ul>
</div>
</li>
<li><a href="tec/85.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext</a>
<div class="subdiv">
<ul>
<li><a href="tec/85/86.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext.grid.EditorGridで表形式編集_1</a></li>
<li><a href="tec/85/88.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext.grid.EditorGridで表形式編集_2</a></li>
<li><a href="tec/85/89.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext.grid.EditorGridで表形式編集_3</a></li>
<li><a href="tec/85/100.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext.grid.EditorGridで表形式編集2</a></li>
<li><a href="tec/85/link2Window.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">リンクをWindowダイアログ内に表示する</a></li>
<li class="last"><a href="tec/85/EXT_treeorder.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ext.treeで並べ替え</a></li>
</ul>
</div>
</li>
<li><a href="tec/tec_eccube.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">eccube</a>
<div class="subdiv">
<ul>
<li><a href="tec/tec_eccube/ECCUBE_thickbox.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">EC-CUBEの商品一覧でThickboxを使う</a></li>
<li class="last"><a href="tec/tec_eccube/ECCUBE_uriage.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">売上集計でエラーが出る</a></li>
</ul>
</div>
</li>
<li><a href="tec/uml.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">UML</a>
<div class="subdiv">
<ul>
<li><a href="tec/uml/netshop_class.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ネットショップの一般的な構成</a></li>
<li><a href="tec/uml/netshop_flow.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ネットショップの流れ</a></li>
<li class="last"><a href="tec/uml/web_access.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ホームページがアクセスされるまで</a></li>
</ul>
</div>
</li>
<li><a href="tec/101.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Perl</a>
<div class="subdiv">
<ul>
<li class="last"><a href="tec/101/102.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">perlメールフォームで文字コードUTF-8のテンプレートを使う</a></li>
</ul>
</div>
</li>
<li class="last"><a href="tec/tec_xoops.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">XOOPS</a>
<div class="subdiv">
<ul>
<li class="last"><a href="tec/tec_xoops/tec_xoops_xeblog.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">うぇブログ(xeblog2)をPHP5で動かす</a></li>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li><a href="labo.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">ラボラトリー</a>
<div class="subdiv">
<ul>
<li><a href="labo/keywordseachplus.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">関連キーワードマップ</a></li>
<li><a href="labo/94.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">Ajaxマッシュアップ検索MUP</a></li>
<li class="last"><a href="labo/html5canvas.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">HTML5CANVASお絵かき</a></li>
</ul>
</div>
</li>
<li><a href="rentalserver.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">サービスプラン・料金表</a></li>
<li><a href="sitemap-j.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">サイトマップ</a></li>
<li><a href="contactus.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">お問合せ</a></li>
<li><a href="link.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">リンク集</a></li>
<li class="last"><a href="rssfeed.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8" title="">RSSFeed</a></li>
</ul>
 
 ]]></description>
<pubDate>21- 9·î-06 13:28</pubDate>
<guid>http://www.tonttu.net/sitemap-j.html</guid>
<author>クラウス</author>
</item>
<item>
<title>NewsPublisher</title>
<link>http://www.tonttu.net/tec/modx/NewsPublisher.html</link>
<description><![CDATA[ スニペット「NewsPublisher」は掲示板のように投稿してページを作成できます。<br />専用のユーザーを作成して、そのユーザーだけから作成できるようにするべきですが、それは別の機会に、、。<br /><br />NewsPublisherを貼り付けると、投稿フォームが表示されます。<br />投稿フォームはチャンクで置き換えることができます。<br />投稿された内容は新規ページとなります。<br /><br />［!NewsPublisher? &amp;makefolder=&quot;1&quot; &amp;showinmenu=1 &amp;aliastitle=&quot;1&quot; !］<br />&amp;makefolder=&quot;1&quot;：投稿ページをフォルダとし、その下に配置されます。<br />&amp;showinmenu=1：デフォルトでは公開はされるのですが、メニューに表れません。１を指定すると表示できます。<br />&amp;aliastitle=&quot;1&quot;：デフォルトではタイトルが「article-(投稿日時シリアル値)」自動生成されます。１を指定すると、「article-（title）」がエイリアスとなります。<br /><br />いままでスニペットの引数がうまくいかないことがままありました。<br />値に０か１を指定する引数で、<br />（引数）=&quot;1&quot;<br />でうまくいかず、<br />（引数）=1<br />でうまくいくケースです。下記のケースはスニペットコードで、<br />if( （引数） ==1 )<br />と値を数値と見ているのに対し、上記は、<br />if( （引数） )<br />と値はなんでもよく、とにかく値があるかないかを見ています。<br />PHPでは真偽判定は0を空とみますので注意が必要です。<br />（issetを使うと丁寧なのですが、、）<br /><br />あとはNewsListingで一覧表示します。<br />［!NewsListing? &amp;startID=`（フォルダ番号）`!］<br /> ]]></description>
<pubDate>21- 9·î-06 08:16</pubDate>
<guid>http://www.tonttu.net/tec/modx/NewsPublisher.html</guid>
<author>クラウス</author>
</item>
<item>
<title>4</title>
<link>http://www.tonttu.net/NewsPublish/article-4.html</link>
<description><![CDATA[ 4 ]]></description>
<pubDate>21- 9·î-06 08:12</pubDate>
<guid>http://www.tonttu.net/NewsPublish/article-4.html</guid>
<author></author>
</item>
<item>
<title>title</title>
<link>http://www.tonttu.net/NewsPublish/article-title.html</link>
<description><![CDATA[ summary ]]></description>
<pubDate>21- 9·î-06 08:02</pubDate>
<guid>http://www.tonttu.net/NewsPublish/article-title.html</guid>
<author></author>
</item>
<item>
<title>ドキュメントの削除</title>
<link>http://www.tonttu.net/tec/modx/docdelete.html</link>
<description><![CDATA[ ドキュメントの削除<br /><strong><font color="#0000ff"><br /></font></strong>１．MODxの管理画面でドキュメントを選択する<br />２．ドキュメントフレームの上部メニューで「削除」ボタンをクリックする<br />&nbsp;&nbsp;&nbsp;&nbsp; または左ツリーのドキュメント名を右クリック-＞削除をクリックする<br /><img height="263" alt="" src="http://www.tonttu.net/assets/images/modx/modx_del_01.gif" width="248" /><br />３．「本当に削除しますか？」と確認ダイアログが出るので「OK｝ボタンをクリックする<br />　　-＞左のツリービューでドキュメント名に横線が引かれる<br />４．ツリービュー上部のゴミ箱アイコンをクリックする<br /><img height="136" alt="" src="http://www.tonttu.net/assets/images/modx/modx_del_02.gif" width="278" /><br />５．「完全に削除しますか？」と確認ダイアログが出るので「OK｝ボタンをクリックする<br /><br />余談ですが、MODxでリニューアルして2週間たっていないのに、グーグルで16位にランキングされていて驚きました。 ]]></description>
<pubDate>19- 9·î-06 15:16</pubDate>
<guid>http://www.tonttu.net/tec/modx/docdelete.html</guid>
<author>クラウス</author>
</item>
<item>
<title>検索機能</title>
<link>http://www.tonttu.net/tec/modx/modx-seach.html</link>
<description><![CDATA[ MODxで作成したページ(ドキュメント)では検索機能を使うことが出来ます。<br />静的なサイト作成方法では全文検索namazuなどを使う必要がありました。<br /><br />スニペット「FlexSearchForm」を使用します。<br />キモは、同一のスニペットでオプションによって、検索入力ボックスの表示と検索結果の一覧表示を切り替え（もしくは同時に表示）を行うところです。<br />スニペットコードの中の$searchStyleの値を「partial」にしておきます。<br /><br />１．検索結果を表示するページを作成します。<br />２．以下のコードを記述します。<br />［[FlexSearchForm? &amp;FSF_showForm=`0`]］<br />&amp;FSF_showForm=`0`で、入力ボックスを非表示にします。省くか1だと表示します。<br /><br />３．検索フォームを表示するには、<br />［!FlexSearchForm? &amp;FSF_showResults=`0` &amp;FSF_landing=`21`!］ <br />ここではテンプレートの上部に設置し、このテンプレートを使用するすべてのページから検索できるようにしました。<br />&amp;FSF_landing=`(ページid)`で、１．で作成されたページidを指定します。<br />&amp;FSF_showResults=`0`を指定しない場合、検索フォームに続いて検索結果を表示します。<br /><br />&amp;FSF_showResults=`0`を指定しないで、検索専用ページを作成できるかもしれません。 ]]></description>
<pubDate>18- 9·î-06 08:52</pubDate>
<guid>http://www.tonttu.net/tec/modx/modx-seach.html</guid>
<author>クラウス</author>
</item>
<item>
<title>デジタルコンテンツ</title>
<link>http://www.tonttu.net/service/contents.html</link>
<description><![CDATA[ お客様の目を釘付けにする、魅力的なコンテンツをご提供します ]]></description>
<pubDate>15- 9·î-06 00:44</pubDate>
<guid>http://www.tonttu.net/service/contents.html</guid>
<author>クラウス</author>
</item>
<item>
<title>オープンソースCMS</title>
<link>http://www.tonttu.net/service/opensouce.html</link>
<description><![CDATA[ 高機能、高信頼性のオープンソースソフトを活用し、
低コストで魅力的なサイトを構築します。 ]]></description>
<pubDate>15- 9·î-06 00:40</pubDate>
<guid>http://www.tonttu.net/service/opensouce.html</guid>
<author>クラウス</author>
</item>
<item>
<title>NewsListing</title>
<link>http://www.tonttu.net/tec/modx/NewsListing.html</link>
<description><![CDATA[ 基本的には、新規作成されたページの一覧を表示する機能です。<br /><br />１．テンプレートとするチャンクを作成しておきます。
<pre>&lt;dt&gt;［+title+］&lt;/dt&gt;<br />&lt;dd style=&quot;padding-left: 16px;&quot;&gt;&lt;a href=&quot;［(site_url)］<br />［~13~]&quot;&gt;［(site_url)］［~13~］&lt;/a&gt;&lt;/dd&gt;<br />&lt;dd style=&quot;padding-left: 16px;&quot;&gt;［+date+］&lt;/dd&gt;<br />&lt;dd style=&quot;padding-left: 16px;&quot;&gt;クラウス&lt;/dd&gt;<br /></pre>
<p>２．任意のページか、テンプレートにNewsListingを配置します。</p>
<p>(以下はオプションを分かりやすいように改行してありますが、一行で書いてください。［は本当は小文字です。)</p>
<pre>［!NewsListing? <br />&amp;startID=`0`<br />&amp;tpl=`（チャンク名）`<br />&amp;summarize=3<br />&amp;total=5<br />&amp;dataformat='%Y-%m-%d %H:%i:%s'<br />!］</pre>
<p>startID：フォルダ番号以下をリストの対象とする。TOPからすべてを対象とする場合は「0」を指定する。<br />tpl：チャンク名「NesLiting-TEST」をテンプレートとして使う<br />summarize：サマリー（要約）を含める数。ここでは「3」を指定。<br />total：リストの全件。ここでは「5」を指定。<br />dataformat：日時フォーマット。<br />以下サンプル表示。dlで囲って、ddを字下げしています。<br /></p>
<dl><dt>事例</dt>
<dd style="padding-left: 16px;"><a href="http://www.tonttu.net/case.html?">http://www.tonttu.net/case.html</a></dd>
<dd style="padding-left: 16px;">11- 1·î-10 21:19</dd>
<dd style="padding-left: 16px;">クラウス</dd>
<dt>CMS構築・カスタマイズ</dt>
<dd style="padding-left: 16px;"><a href="http://www.tonttu.net/CMSconstraction.html?">http://www.tonttu.net/CMSconstraction.html</a></dd>
<dd style="padding-left: 16px;">07-10·î-09 21:49</dd>
<dd style="padding-left: 16px;">クラウス</dd>
<dt>Ext_最新情報</dt>
<dd style="padding-left: 16px;"><a href="http://www.tonttu.net/Ext_news.json.html?">http://www.tonttu.net/Ext_news.json.html</a></dd>
<dd style="padding-left: 16px;">13- 2·î-08 08:16</dd>
<dd style="padding-left: 16px;">クラウス</dd>
<h3>Older Items</h3><div id="nl_archivelist"><ul><li><span class="nl_month">2 2008</span><ul><li class="nl_archpost"><a href='Ext_serch.html'?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8>Ext_サイト検索</a> (<span class="nl_date">11- 2·î-08 17:21</span>)</li><li class="nl_archpost"><a href='Ext_menu.json.html'?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8>Ext_menu</a> (<span class="nl_date">11- 2·î-08 13:27</span>)</li></ul></li></ul></div><br /></dl>全部で5件中、先頭から3件がテンプレートの対象になっていることがわかります。日付フォーマットがうまくいっていません。<br />startIDでフォルダを指定するのがミソですね。これを利用してブログや最新情報などが作成できます。 ]]></description>
<pubDate>08- 9·î-06 20:29</pubDate>
<guid>http://www.tonttu.net/tec/modx/NewsListing.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ContactForm日本語化</title>
<link>http://www.tonttu.net/tec/modx/contactform2j.html</link>
<description><![CDATA[ <p>
公式フォーラムとは違う方法ですが、PHPのMail関数で日本語が文字化けするのを回避する手法を適用してみました。<br />
<br />
MODxの管理画面に入ります。<br />
１．[リソース]-[リソース管理]-[スニペット]を選択します。<br />
２．[ContactForm]をクリックします。<br />
３．[スニペット コード (php)]の中の以下の行の間に挿入します。<br />
<br />
</p>
<pre class="php">
$body = &quot;Name: $from\nEmail: $from_email\nMessage:\n\n&quot; . $message;
// huck of Japanese encord --------------------------
// 元のエンコーディングを保存
$orgEncoding = mb_internal_encoding();
mb_language(&quot;Ja&quot;);
mb_internal_encoding(&quot;UTF-8&quot;);
$headers = mb_encode_mimeheader($headers, &quot;JIS&quot;, &quot;B&quot;);
$subject = mb_encode_mimeheader($subject, &quot;JIS&quot;, &quot;B&quot;);
$body = mb_convert_encoding($body, &quot;JIS&quot;, &quot;UTF-8&quot;);
// 保存しておいたエンコーディングに戻す
mb_internal_encoding($orgEncoding);
// end huck -----------------------------------------
</pre>
<p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mail($to, $subject, $body, $headers)) { <br />
<br />
４．上部の「保存」をクリックします。 
</p>
 ]]></description>
<pubDate>07- 9·î-06 18:43</pubDate>
<guid>http://www.tonttu.net/tec/modx/contactform2j.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Ｗｅｂシステム開発</title>
<link>http://www.tonttu.net/service/programing.html</link>
<description><![CDATA[ 多くの実績を糧に、お客様のビジネスアイデアをすばやく形にします。 ]]></description>
<pubDate>07- 9·î-06 07:14</pubDate>
<guid>http://www.tonttu.net/service/programing.html</guid>
<author>クラウス</author>
</item>
<item>
<title>AboutUS</title>
<link>http://www.tonttu.net/aboutus.html</link>
<description><![CDATA[ <h3>概要</h3>
<table>
	<tbody>
		<tr>
			<td class="waku">屋号</td>
			<td class="waku">トントゥドットネット</td>
		</tr>
		<tr>
			<td class="waku">代表者名</td>
			<td class="waku">藤枝　哲哉</td>
		</tr>
		<tr>
			<td class="waku" rowspan="2">所在地</td>
			<td class="waku">〒373-0851<br />
			群馬県太田市飯田町542　遠田ビル1F</td>
		</tr>
		<tr>
			<td class="waku">542, Iida-cho, Ota-city, Gunma 373-0851,JAPAN</td>
		</tr>
		<tr>
			<td class="waku">　</td>
			<td class="waku"><a class="yellow" href="aboutus/accessmap.html?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8">Google Map</a></td>
		</tr>
		<tr>
			<td class="waku">連絡先</td>
			<td class="waku">Tel:0276-49-4815<br />
			FAX:0276-49-4815<br />
			E-Mail:<a href="mailto:klaus@tonttu.net">klaus@tonttu.net</a></td>
		</tr>
		<tr>
			<td class="waku">URL:</td>
			<td class="waku"><a href="/?phpMyAdmin=Z8pO8EUqcJJo4ZQoH%2C3X2jhiT-8">http://www.tonttu.net/</a></td>
		</tr>
		<tr>
			<td class="waku">事業内容</td>
			<td class="waku">イラスト制作、アニメーター、映像制作、3DCG(Lightwave3D)<br />
			HP製作、Webプログラミング(PHP+Smarty+PEAR+PostgreSQL)、<br />
			レンタルサーバー、XOOPSカスタマイズ、<br />
			ITコンサルト、講師 </td>
		</tr>
		<tr>
			<td class="waku">届出</td>
			<td class="waku">届出電気通信事業者　A-16-8012</td>
		</tr>
		<tr>
			<td class="waku">資格</td>
			<td class="waku">日本IBM社　ホームページ・ビルダー認定プロフェッショナル<br />
			初級システムアドミニストレーター（2003年）<br />
			NTTコミュニケーションズ　.com　Master　2003　★★ </td>
		</tr>
	</tbody>
</table>
<br />
<h3>代表者来歴</h3>
<table>
	<tbody>
		<tr>
			<td class="waku">専門学校卒業後、アニメ作画会社勤務</td>
		</tr>
		<tr>
			<td class="waku">TV、映画等多数参加</td>
		</tr>
		<tr>
			<td class="waku">独学でプログラミングを学習</td>
		</tr>
		<tr>
			<td class="waku">退職後、ネットワークソフト会社に勤務</td>
		</tr>
		<tr>
			<td class="waku">インターネット商用化開始。調査研究に従事</td>
		</tr>
		<tr>
			<td class="waku">ネットワーク技術、HP制作、画像制作スキルを得る</td>
		</tr>
		<tr>
			<td class="waku">Lightwave3dによる3D映像制作開始</td>
		</tr>
		<tr>
			<td class="waku">ActiveServerPagesによる3階層Webアプリケーション開発</td>
		</tr>
		<tr>
			<td class="waku">SQLServer、オラクルなどデータベース連携を手がける</td>
		</tr>
		<tr>
			<td class="waku">退職後、フリーランス</td>
		</tr>
		<tr>
			<td class="waku">NPO団体にてパソコン講師</td>
		</tr>
		<tr>
			<td class="waku">HP制作、Webシステムなどアウトソーシング含め多く手がける</td>
		</tr>
		<tr>
			<td class="waku">DVD制作、映像制作などを手がける</td>
		</tr>
		<tr>
			<td class="waku">XOOPS等オープンソースの導入支援を開始</td>
		</tr>
		<tr>
			<td class="waku">PHP+PostgreSQL+Smarty+PEARを開発の中心とする</td>
		</tr>
		<tr>
			<td>XOOPS,MODx,Wordpressをサービスの中心とする</td>
		</tr>
		<tr>
			<td>cakePHP+Smarty+Jqueryを主軸とする</td>
		</tr>
		<tr>
			<td>
			<p>
			Webサービス、RSS、携帯を基本実装とする
			</p>
			</td>
		</tr>
		<tr>
			<td>Extの実験中、、、</td>
		</tr>
	</tbody>
</table>
<br />
<h3>所属団体</h3>・NPO法人&nbsp;<a href="http://www.icon.gr.jp/" target="_blank">おおたIT市民ネットワーク</a><br />
&nbsp;&nbsp;（1000回を超える講習会実績の市民のITリテラシーの向上を目的とした団体）<br />
・NPO法人&nbsp;<a href="http://www.itc-gunma.com/" target="_blank">ITC群馬</a><br />
&nbsp;&nbsp;（企業の業務改善を会計とITの両面から支えるITコーディネータ資格等保持者で構成された団体） 
 ]]></description>
<pubDate>07- 9·î-06 07:09</pubDate>
<guid>http://www.tonttu.net/aboutus.html</guid>
<author>クラウス</author>
</item>
<item>
<title>SEO対策</title>
<link>http://www.tonttu.net/service/marketing.html</link>
<description><![CDATA[ ホームページを強力なマーケティングツールとするために
必要なノウハウをご提供します。 ]]></description>
<pubDate>07- 9·î-06 06:58</pubDate>
<guid>http://www.tonttu.net/service/marketing.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ホームページ制作</title>
<link>http://www.tonttu.net/service/hpdesign.html</link>
<description><![CDATA[ インターネット商用化当初から取り組んできた、確かな技術力をもって、
最新のホームページをお届けします。
華やかに利用者を惹き付けるFLASH制作や、
ストリーミング動画配信も別途承っております。 ]]></description>
<pubDate>07- 9·î-06 06:49</pubDate>
<guid>http://www.tonttu.net/service/hpdesign.html</guid>
<author>クラウス</author>
</item>
<item>
<title>Service</title>
<link>http://www.tonttu.net/service.html</link>
<description><![CDATA[ <p>
<p>記事がありません。</p> 
</p>
 ]]></description>
<pubDate>07- 9·î-06 06:47</pubDate>
<guid>http://www.tonttu.net/service.html</guid>
<author>クラウス</author>
</item>
<item>
<title>テンプレートの使い方</title>
<link>http://www.tonttu.net/tec/modx/usetemplete.html</link>
<description><![CDATA[ <p>
<img align="left" alt=" " height="160" src="assets/images/mil38057-s1.jpg" style="width: 228px; height: 160px" width="228" /> <font size="2">ブログではデザインを変更すると、すべてのページに適用されてしまいますが、<br />
MODxは個々のページ（コンテンツ）を作成してから、「テンプレート」というデザインを各ページに割り当てることができます。<br />
企業などで異なる商品やサービスのページに対して違うデザインを提供することができます。</font> 
</p>
<p>
&nbsp;
</p>
<p>
&nbsp;
</p>
<h3><font color="#ff0000">■テンプレートの適用</font></h3>
<p>
１．ドキュメントの編集画面を開きます。<br />
２．[使用テンプレート]で、適用したいテンプレートを選択します。<br />
３．上部の「保存」をクリックします。 
</p>
<h3><font color="#ff0000">■テンプレートの入手</font></h3>
<p>
MODx公式ページのForrumsのDevelopment &amp; Coding-Templates <br />
http://modxcms.com/forums/index.php/board,4.0.html<br />
に有志がアップロードしてくれているものがあります。<br />
掲示板なので、テンプレートに関する質問やTipsなども入り混じっていますが、最近の発言では、投稿の題名の先頭に[template] と付けるのがマナーとなっているようです。<br />
サムネイルがあるものもあります。多くはzip圧縮されています。<br />
<br />
<strong>１．任意のテンプレートを選択し、ダウンロードします。<br />
２．ダウンロードした圧縮ファイルを解凍します。ここでは「andreas01」を参考に解説します。<br />
３．圧縮ファイルの中に同名のフォルダ「andreas01」がひとつあり、その中にフォルダが３つ「images」「Install」「style」あります。<br />
４．「Install」の中の「INSTALL.txt」を読みます。（英語です＾＾）<br />
５．FTPで、[assets]-[templates]の中に「andreas01」（「images」「style」）をアップします。</strong><br />
<br />
MODxの管理画面に入ります。<br />
１．[リソース]-[リソース管理]-[テンプレート管理]をクリックします。<br />
２．[テンプレートの作成]をクリックします。<br />
３．テンプレート名に「andreas01」と入力します（本当は任意でかまいません）。テンプレート説明も任意で入力します。<br />
４．「Install」の中の「Andreas01.template.html」をメモ帳で開き、全文をコピーして、[テンプレート コード (html)]に貼り付けます。<br />
５．上部の「保存」をクリックします。<br />
<br />
■スニペットの作成<br />
スニペットとは、MODxの表示時の機能を拡張するプログラムです。<br />
andreas01では自動的にメニューを作成するスニペット「DropMenu」を拡張した「DropMenuS」が提供されています。<br />
<br />
１．[リソース]-[リソース管理]-[スニペット]を選択します。<br />
２．[スニペットの作成]をクリックします。<br />
３．スニペット名に「DropMenuS」と入力します。間違えてはいけません。<br />
４．「Install」の中の「DropMenuS.snippet.php」をメモ帳で開き、全文をコピーして、[スニペット コード (php)]に貼り付けます。<br />
５．上部の「保存」をクリックします。<br />
<br />
■チャンクの作成<br />
チャンクとはHTMLコードの部品で、複数のテンプレートから名前で呼び出して表示することができます。例えば、会社の住所や連絡先を記述してあるチャンクをフッターとして作成し、各テンプレートから「Footer」名で呼び出しておけば、修正はこのチャンクひとつで済みます。<br />
<br />
[リソース]-[リソース管理]-[チャンク管理]を選択します。<br />
[チャンクの作成]をクリックします。<br />
チャンク名に「Footer」と入力します。間違えてはいけません。<br />
「Install」の中の「Footer.chunk.html」をメモ帳で開き、全文をコピーして、[チャンク コード (html)]に貼り付けます。（修正してもかまいませんよ）<br />
上部の「保存」をクリックします。 
</p>
 ]]></description>
<pubDate>07- 9·î-06 04:29</pubDate>
<guid>http://www.tonttu.net/tec/modx/usetemplete.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ModX</title>
<link>http://www.tonttu.net/tec/modx.html</link>
<description><![CDATA[ <p>
ブログのような日記形式でなく、<br />
XOOPSのようなモジュールの組み合わせでもなく、<br />
普通のホームページのようなページ（ドキュメント）単位での管理に適したCMS、<br />
オープンソース「MODx」について 。<br />
<br />
特に取り扱う商品やサービスの数が多い企業に最適です。<br />
個々の商品を階層管理できますので、一覧性に優れます。各商品の公開可否なども容易に設定できます。 <br />
このサイトもMODxで作成されています。 
</p>
<p>
<ul><li><a href="/tec/modx/usetemplete.html" title="テンプレートの使い方" >テンプレートの使い方</a></li>
<li><a href="/tec/modx/contactform2j.html" title="ContactForm日本語化" >ContactForm日本語化</a></li>
<li><a href="/tec/modx/modx-seach.html" title="検索機能" >検索機能</a></li>
<li><a href="/tec/modx/docdelete.html" title="ドキュメントの削除" >ドキュメントの削除</a></li>
<li><a href="/tec/modx/NewsPublisher.html" title="NewsPublisher" >NewsPublisher</a></li>
<li><a href="/tec/modx/NewsListing.html" title="NewsListing" >NewsListing</a></li>
<li><a href="/tec/modx/googlemap.html" title="GoogleMap" >GoogleMap</a></li>
<li><a href="/tec/modx/documentedit.html" title="ドキュメントの編集" >ドキュメントの編集</a></li>
<li><a href="/tec/modx/modx-user.html" title="MODxのユーザー管理" >MODxのユーザー管理</a></li>
<li><a href="/tec/modx/topnewsuser.html" title="最新情報だけ編集できるユーザを作成する" >最新情報だけ編集できるユーザを作成する</a></li>
<li><a href="/tec/modx/modx-webuser.html" title="MODxで会員制のページを作成する" >MODxで会員制のページを作成する</a></li>
<li><a href="/tec/modx/Ditto.html" title="Dittoのオプション" >Dittoのオプション</a></li>
<li><a href="/tec/modx/titnyMCE_Error.html" title="tinuMCE使用時にエラーが出る場合" >tinuMCE使用時にエラーが出る場合</a></li>
<li><a href="/tec/modx/modx_TV2ditto.html" title="Dittoのチャンクでテンプレート変数を使う" >Dittoのチャンクでテンプレート変数を使う</a></li>
<li><a href="/tec/modx/modx_userimage.html" title="マネージャーユーザー毎に画像フォルダを分ける" >マネージャーユーザー毎に画像フォルダを分ける</a></li>
<li><a href="/tec/modx/modx_NoThumbnail.html" title="サムネイル画像が表示されない" >サムネイル画像が表示されない</a></li>
<li><a href="/tec/modx/notemplate.html" title="パラメーターでテンプレートを使用しない" >パラメーターでテンプレートを使用しない</a></li>
<li class="last"><a href="/tec/modx/wayfinder2Ext.html" title="WayfinderでExt.tree用のjsonを出力する" >WayfinderでExt.tree用のjsonを出力する</a></li>
</ul> 
</p>
 ]]></description>
<pubDate>07- 9·î-06 04:27</pubDate>
<guid>http://www.tonttu.net/tec/modx.html</guid>
<author>クラウス</author>
</item>
<item>
<title>ホームページ制作　ITシステム構築</title>
<link>http://www.tonttu.net/index.html</link>
<description><![CDATA[ <p>
<strong>デザイン、動画の表現力を生かすデジタルコンテンツ制作と、<br />
高いプログラミングスキルで、あなたのネットビジネスをサポートします。&nbsp;</strong> 
</p>
<p>
<a href="CMSconstraction.html"><img alt="ワードプレス構築&amp;カスタマイズ" border="0" height="64" src="assets/images/top/top_svc_wordpress.gif" width="274" /></a> <a href="CMSconstraction.html"><img alt="eccube&amp;カスタマイズ" border="0" height="64" src="assets/images/top/top_svc_eccube.gif" width="274" /></a> <a href="CMSconstraction.html"><img alt="MODx構築&amp;カスタマイズ" border="0" height="64" src="assets/images/top/top_svc_modx.gif" width="274" /></a> <a href="CMSconstraction.html"><img alt="xoops構築&amp;カスタマイズ" border="0" height="64" src="assets/images/top/top_svc_xoops.gif" width="274" /></a>
</p>
20009/10/18&nbsp; <a href="contents/canvas/canvasDraw.html" target="_blank">HTML5のCANVASでお絵かきツールを作成しました。</a> <br />
<br />
<h2>最新の技術でホームページ制作をします</h2>
<p align="right">
<font size="2"><strong>[ Web制作 ]</strong></font> 
</p>
<p>
<font size="2"><img align="left" height="166" src="assets/images/tonttu.gif" width="209" />インターネット商用化当初からホームページ制作をはじめ、デザイン、Webシステム開発等の研究に取り組んできた数々のスキルをもって、みなさまのご要望にお答えします。ＣＳＳによるブログデザインのカスタマイズ、FLASHを駆使してのゲーム制作、携帯のｉアプリまでご提供できます。</font> 
</p>
<p>
<font size="2">現在では当たり前となったSEO対策はもちろんのこと、ホームページを攻めのマーケティングツールと変身させるSEM、運用コストを大幅に下げるCMSツールのご提案もできます。お望みであれば、あなたのホームページにも魔法をかけてさしあげます！</font> 
</p>
<script src="js/swfobject.js" type="text/javascript">
</script>
<script type="text/javascript">
var flashvars = {};
var params = {
menu: "false",
scale: "noScale",
bgcolor: "#FFFFFF"
};
swfobject.embedSWF("particle.swf", "altContent", "100%", "120", "9.0.0", "expressInstall.swf", flashvars, params);</script>
<div id="altContent">
<p>
<a href="http://www.adobe.com/go/getflashplayer"><img alt="Get Adobe Flash player" height="33" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" width="112" /></a> 
</p>
</div>
<div align="center">
(Papervision3DによるFLASH3D) 
</div>
<script src="js/easySlider1.5.js" type="text/javascript">
</script>
<script type="text/javascript">
$(document).ready(function(){	
$("#slider").easySlider({
auto: true,
controlsShow: false,
continuous: true 
});
});	</script>
<div align="center">
<div id="slider">
<ul>
	<li><img height="120" src="assets/images/sample/hp_01.gif" width="120" /><img height="120" src="assets/images/sample/hp_02.gif" width="120" /><img height="120" src="assets/images/sample/hp_03.gif" width="120" /></li>
	<li><img height="120" src="assets/images/sample/hp_04.gif" width="120" /><img height="120" src="assets/images/sample/hp_05.gif" width="120" /><img height="120" src="assets/images/sample/hp_06.gif" width="120" /></li>
	<li><img height="120" src="assets/images/sample/hp_08.gif" width="120" /><img height="120" src="assets/images/sample/hp_09.gif" width="120" /><img height="120" src="assets/images/sample/hp_10.gif" width="120" /></li>
</ul>
</div>
</div>
<div align="center">
（制作事例） 
</div>
<p>
&nbsp;
</p>
<h2>ITビジネスをすばやく形にします</h2>
<p align="right">
<strong><font size="2">[ ITシステム開発・Webプログラミング ]</font></strong> 
</p>
<font size="2">ホームページ制作の現場も進化していきます。ブログやネットオークションなど、日常を変えてしまう楽しみを支えているのがWebシステム開発技術です。<br />
ネットショップ、社内システム開発などの多数の実績を持って、データベースやメールとの連携などのプログラミングスキルに加え、独自レンタルサーバーを運用している強みを生かして、あなたのアイデアを素早く実現します。<br />
MVCフレームワーク、RESTful、AJAXの活用でワンランク上の操作性が手に入ります。<br />
お客様と二人三脚で歩むため、わかりやすい仕様書作成にも力を注ぎます。<br />
現在では見過ごすことのできない暗号化やセキュリティ対策ももちろん含まれます。 </font>
<p>
&nbsp;
</p>
<h2>たくさんのご提案ができます</h2>
<p align="right">
<strong><font size="2">[ 外部SE・ITコンサルタント ]</font></strong> 
</p>
<p align="left">
<font size="2">「ITで困った！」なんてことはありませんか？<br />
通常のホームページ制作のみを提供する業者より、ネットショップやWebサービスも構築させていただいているため、セキュリティや最新技術など様々な面にアンテナを張っています。<br />
ドッグイヤーと呼ばれる昨日までの成功体験が通用しない世界であり、かつわくわくするようなチャレンジしがいのある世界でもあります。ぜひ、あなたさまのビジネスの夢をお聞かせください。<br />
例えば、安価ながら高機能高信頼性のXOOPS等のオープンソースソフトウェアのご提案、構築もお手伝いさせていただきます。<br />
初級システムアドミニストレーター・.COM&nbsp;Master2004★★・パソコン教室講師経験を生かして、最新技術を分かりやすく解説します。</font> 
</p>
<p align="left">
<font size="2"><img alt=" " height="285" src="assets/images/top/TONTTU_Skill.gif" width="550" /></font> 
</p>
<p align="left">
<font size="2"></font>
</p>
<h2>思わず魅入ってしまうデジタルコンテンツを制作します</h2>
<p align="right">
<font size="2"><strong>[ デジタルコンテンツ制作 ]</strong><br />
</font>
</p>
<p align="left">
<font size="2">TV・映画制作の長年の経験を生かして、魅力的なデジタルコンテンツを制作します。見たこともないフォトリアルで映画的な３DCG、デジタルビデオカメラからのオリジナルDVD編集、お客様に驚きと感動をお届けします。<br />
Web2.0の成功の要因のひとつ、「リッチなユーザー体験」でお客様をとりこにしてみませんか？</font> 
</p>
<p align="center">
<img alt=" " height="195" src="assets/images/top_graphics_01.jpg" width="260" />　<img alt=" " height="195" src="assets/images/top_graphics_02.jpg" width="260" /> 
</p>
<p align="center">
&nbsp;
</p>
<h2>安心のサーバー運用もおまかせください</h2>
<p align="right">
<font size="2"><strong>[ レンタルサーバーサービス ]</strong><br />
</font>
</p>
<p align="left">
<font size="2">ITビジネスには相応のサーバー環境が不可欠です。Webシステム開発,即実行できる安心で高機能なサーバーをご用意しました。<br />
話題のブログ、高機能ポータルXOOPSの運用もおまかせください。<br />
扱いやすいコントロールパネル「PLESK」で日々のメンテナンスも容易です。<br />
もちろん独自ドメインの運用、メール発行も可能です。<br />
稼働率は99.90%の「スリーナインクラス」を実現しております。<br />
</font>
</p>
 ]]></description>
<pubDate>26-10·î-05 14:32</pubDate>
<guid>http://www.tonttu.net/index.html</guid>
<author>クラウス</author>
</item>

</channel>
</rss>
