<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>サイト制作・研究中の内容を紹介するラボブログ &#124; 株式会社トライアド</title>
	<atom:link href="http://www.the-triad.jp/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.the-triad.jp/blog</link>
	<description></description>
	<lastBuildDate>Thu, 08 Mar 2012 04:58:49 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/" />
		<item>
		<title>WordPressのテンプレートを一時的にプラグインで差し替える方法</title>
		<link>http://www.the-triad.jp/blog/?p=699</link>
		<comments>http://www.the-triad.jp/blog/?p=699#comments</comments>
		<pubDate>Thu, 08 Mar 2012 04:58:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=699</guid>
		<description><![CDATA[こんにちわ、さっそくアップデートしたiOS5.1でSiriに翻弄されている @nihimoto です。 今回はWordpressネタを一つ書いてみたいと思います。 テンプレートをこのデバイスにはこっちを表示、あのデバイス [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、さっそくアップデートしたiOS5.1でSiriに翻弄されている @nihimoto です。<br />
今回はWordpressネタを一つ書いてみたいと思います。</p>
<p>テンプレートをこのデバイスにはこっちを表示、あのデバイスにはあっちを表示、と変える必要があることがあります。<br />
実現する手段はまぁ色々あります。</p>
<p>が、下記の条件にマッチする手段がなかなか見つからないので自分で書きました。</p>
<ul>
<li>テンプレートの設定は変えたくない</li>
<li>特定のデバイスで表示するときに一時的に変えるだけ</li>
<li>フォルダは通常のテンプレートと同じフォルダで管理したい</li>
</ul>
<div><span id="more-699"></span></div>
<div>-</div>
<div>下記のコードのように、プラグイン内などに書いておくだけです。</div>
<div>
<blockquote>
<pre>        add_filter('stylesheet', function () {
            return 'テーマディレクトリ名';
        });
        add_filter('template', function () {
            return 'テーマディレクトリ名';
        });</pre>
</blockquote>
<p>こんな感じのコードが特定の条件の時に実行されるようにしておけば、その条件の時だけ指定したテーマに切り替えられます。お手軽に違うテーマを表示したいときなどは便利だと思います。（プラグインとして作らないといけない時点でお手軽でない気もしますが・・）</p>
<p>ではでは。</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=699</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=699" />
	</item>
		<item>
		<title>WordPress の管理画面のロゴをテーマファイルから置き換える</title>
		<link>http://www.the-triad.jp/blog/?p=640</link>
		<comments>http://www.the-triad.jp/blog/?p=640#comments</comments>
		<pubDate>Thu, 05 Jan 2012 04:19:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=640</guid>
		<description><![CDATA[新年あけましておめでとうございます、@nihimoto です。 今年はよい年になるといいですね。 - さて、Wordpressをクライアントワークに使っていると、管理画面のロゴにクライアントのロゴを入れたくなると思います [...]]]></description>
			<content:encoded><![CDATA[<p>新年あけましておめでとうございます、@nihimoto です。<br />
今年はよい年になるといいですね。</p>
<p>-</p>
<p>さて、Wordpressをクライアントワークに使っていると、管理画面のロゴにクライアントのロゴを入れたくなると思います。</p>
<p>しかし、たったそれだけのためにやたらと高度な管理画面のカスタマイズ用プラグインを導入するのもいささか面倒くさい。それに、プラグインでロゴを変えてしまうと、DB側にその情報が保存されるのでテスト環境から本番に持って行ったときに設定をやり直したりする必要が出てきて、これもまた面倒くさい。</p>
<p>ということで、今回はプラグインにたよらずにテンプレ側からロゴを書き換える手段をご説明しようと思います。これならテンプレを本番環境に入れるだけで管理画面のロゴも変わってくれるのでらくちんです。</p>
<p><span id="more-640"></span></p>
<p>さて、管理画面の左上のロゴはHTML内で id=&#8221;site-title&#8221; でマークアップされています。<br />
ということはCSSで#site-titleと書けばロゴ画像などのスタイルの上書きができるということです。ただ、単純にテンプレのCSSに書いても、管理画面側ではそれは読み込まれないので、管理画面側に書いたCSSを埋め込まれるようにしなければいけません。</p>
<p>ということで下記のコードをテンプレートフォルダ内のfunctions.phpに追加します。<br />
これにより管理画面が表示された際に、footerの後ろに下記の&lt;style&gt;タグが埋め込まれて、既存のCSSが上書きされ好きなロゴを設置することができます。</p>
<p>※ *〜〜*の所は適宜適切なものに置き換えてください。</p>
<blockquote>
<pre>function add_admin_style () {
$style = &lt;&lt;&lt;___END___
&lt;style type='text/css'&gt;
#site-title {
display: block;
text-indent: -1000px;
background-image: url(../wp-content/themes/*テンプレ名*/*ロゴファイル名*); 
background-repeat: no-repeat; 
width: *ロゴの横幅*;
height: *ロゴの縦幅*;
}
/* ヘッダの余計なモノを消す */ 
#header-logo, #privacy-on-link { display: none; }
&lt;/style&gt;
___END___;
echo $style;
}
add_action('admin_footer', 'add_admin_style');</pre>
</blockquote>
<p>ついでにログイン画面にあるロゴも変えてしまいましょう。</p>
<p>ログイン画面のロゴは #login h1 a で指定できるので、下記のコードをfunctions.phpに追記することで上書きが可能です。</p>
<blockquote>
<pre>function add_login_style () {
$style = &lt;&lt;&lt;___END___
&lt;style type='text/css'&gt;
#login h1 a {
    background-image: url(wp-content/themes/*テンプレ名*/*ロゴファイル名*);
    width: *ロゴの横幅*;
    height: *ロゴの縦幅*;
}
&lt;/style&gt;
___END___;
echo $style;
}
add_action('login_footer', 'add_login_style');
&lt;/code&gt;</pre>
</blockquote>
<p>ということで、お手軽にテンプレ側からロゴを書き換える方法のご説明でした。</p>
<p>なお、原理的には footerにstyleタグを加えているだけですので、ロゴ以外のCSSも当然書き加えることができます。文字色を変えたり余計なものをdisplay:noneで消したりと、応用範囲は広いと思います。管理画面のCSSをいじりたくなったら、ぜひこの方法を思い出してみてください。</p>
<p>ではでは、@nihimoto でした。<br />
何かご質問等などあればtwitterまでお気軽にどうぞ。</p>
<p>P.S.</p>
<p>それにしても、プラグインの保存先が基本的には全部DBなのはなんとかならないものでしょうかね。<br />
全プラグインで統一的なフォーマットで設定値を吐き出せるような処置があれば、テスト環境から本番環境への移行を気にして、無理やりテンプレ側にデータを記載する必要がなくなるのですが・・</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=640</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=640" />
	</item>
		<item>
		<title>WordPressのプラグイン その1</title>
		<link>http://www.the-triad.jp/blog/?p=618</link>
		<comments>http://www.the-triad.jp/blog/?p=618#comments</comments>
		<pubDate>Wed, 07 Dec 2011 04:35:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=618</guid>
		<description><![CDATA[久しぶりの更新です。 @ksmonkeyです。 WordPressは非常に使い勝手がよく、トライアドでもサイトを構築する際にはお薦めをさせてもらってます。 デフォルトのままでも良いのですが、せっかくなのでクライアントごと [...]]]></description>
			<content:encoded><![CDATA[<p>久しぶりの更新です。<br />
@ksmonkeyです。</p>
<p>WordPressは非常に使い勝手がよく、トライアドでもサイトを構築する際にはお薦めをさせてもらってます。<br />
デフォルトのままでも良いのですが、せっかくなのでクライアントごとにカスタマイズした方が、ビジネスをしていく上で効率よく活用できるサイトになるかなと。<br />
そこで、トライアドでも利用しているプラグインを紹介していこうかと思い、その１としてこれを。<br />
<span id="more-618"></span><br />
■<a href="http://wordpress.org/extend/plugins/adminimize/" target="_blank">Adminimize</a><br />
Wordpressはデフォルトでユーザーに権限を割り当てられます。</p>
<p>・管理者<br />
・編集者<br />
・投稿者<br />
・寄稿者<br />
・購読者</p>
<p>これでも十分かと思いますが、編集者でもカスタム投稿を利用していると、ここは不要だとかここは必要だとかなるわけです。<br />
管理画面に表示・非表示させる項目や投稿の細かな権限設定など、ちょっとオーバースペック気味ですがあると便利なプラグインです。</p>
<p>使い方はいたって簡単で、管理画面 > プラグイン > インストール済みプラグインで有効化してあげるだけ。<br />
そうすると、設定のメニューにAdminimizeという項目が表示されます。<br />
ちなみに、管理画面の一部はこんな感じ</p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/12/adminimize.jpg" alt="" title="adminimize" width="500" height="461" class="alignnone size-full wp-image-620" /></p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/12/adminimize2.jpg" alt="" title="adminimize2" width="500" height="449" class="alignnone size-full wp-image-623" /></p>
<p>チェックボックスにチェックをするとその機能がoffになる仕組みなので、非常に簡単に操作できデザイナーの方が作業するときも簡単に扱えます。<br />
画像はデフォルトのWordpressにプラグインを入れただけなので特にメニューに変わりがないですが、カスタム投稿タイプを利用したときはメニューが表示され管理することができるようになります。</p>
<p>例えば、制作の都合上カスタム投稿タイプを利用した際に、権限の違いでカスタム投稿タイプのメニューを非表示にさせたい時があると思います。<br />
その時に、制作会社が管理者権限を持ち、クライアントが編集者権限を割り振り、Adminimizeで不要な項目を編集者権限には非表示と設定してあげることができます。<br />
こうすることで、うっかり操作ミスで削除などの事故などを未然に防ぐことができ、また、クライアントにしても不要なメニューがないだけで非常に管理しやすくなると思います。</p>
<p>非常に小さなことですが、こうすることでサイトのメンテナンス性が向上し、運営者（クライアント）にとって有益なサイトになると思います。</p>
<p>ただ、昨今の制作事情を考えると・・・</p>
<p>表示部分により制作の時間を費やしたい！<br />
管理画面（ユーザー権限）のカスタマイズ費用までは請求できない！</p>
<p>と、なりなかなか管理画面の制作費まで予算が回らないのが現状です。<br />
そんなときに、Adminimizeは非常にありがたいプラグインになっています。</p>
<p>と、いろいろ書いてきましたが、管理画面をカスタマイズできるプラグインはこの他にたくさんあります。<br />
ではなぜ、管理画面をカスタマイズするプラグインはたくさんある中でこれを紹介したのか。<br />
実は理由があってこのプラグインを紹介しました。<br />
その理由については・・・次回に紹介します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=618</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=618" />
	</item>
		<item>
		<title>カスタムフィールドテンプレートのオプション値をテンプレファイルから設定する</title>
		<link>http://www.the-triad.jp/blog/?p=606</link>
		<comments>http://www.the-triad.jp/blog/?p=606#comments</comments>
		<pubDate>Fri, 09 Sep 2011 02:44:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=606</guid>
		<description><![CDATA[こんにちわ、最近旅行以外でさっぱり自転車に乗ってない @nihimoto です。来週末に80km（その内55kmは上り坂）走る予定なので体を鍛えなきゃと思いつつ、もう手遅れなのでたいして気にもしていません。なに、死にはせ [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、最近旅行以外でさっぱり自転車に乗ってない @nihimoto です。来週末に80km（その内55kmは上り坂）走る予定なので体を鍛えなきゃと思いつつ、もう手遅れなのでたいして気にもしていません。なに、死にはせぬ。</p>
<p>-</p>
<p>さて、Wordpressで記事の投稿画面をカスタマイズして、投稿記事の内容に合わせて便利に投稿できるようにするツールとして、定番の<a href="http://wpgogo.com/development/custom-field-template.html">カスタムフィールドテンプレート</a>というプラグインですが、もちろん私どもも使わせていただいております。感謝感謝。</p>
<p>&nbsp;</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/09/c8350a917e5c5de841fd59d48204642d.png"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/09/c8350a917e5c5de841fd59d48204642d-300x181.png" alt="" title="スクリーンショット 2011-09-09 11.16.38" width="300" height="181" class="alignnone size-medium wp-image-607" /></a></p>
<p>しかしながら、ちょっと不満な点が出てきてしまいました。</p>
<p>このカスタムフィールドテンプレートというプラグインの設定値はDB側に保存されます。</p>
<p>ということは、インストール後は設定が空っぽなので環境毎に設定を行う必要が出てきてしまい、少々面倒くさい。まだ一人でやっているうちはいいのですが、複数人で作業をしておりテスト環境が分散してしまうような時はなおさらです。</p>
<p>できれば、カスタムポストタイプやカスタム分類などと同様に、設定値をテンプレファイル側でもてないだろうか？そうすればテンプレのコピペだけで全ての環境に設定を反映することができます。</p>
<p>と、いうことで、強引になんとかしてみました、というのが今回のネタになります。</p>
<p><span id="more-606"></span></p>
<p>-</p>
<p>やり方を大雑把に言うと、このプラグインはDBのオプションに、custom_field_template_dataという名前で設定値をまとめて保存しているので、プラグインが起動する前にその設定値をテンプレ側で用意した値に差し替えてあげればOK。<br />
ということで、テーマフォルダ内のfunction.phpに下記を追記します。</p>
<blockquote>
<pre>function overwrite_custom_field_template_data () {
    $custom_field_template_data = get_option('custom_field_template_data');
    $custom_field_template_data["custom_fields"] = array(
        array(

            // 有効/無効スイッチ
            "disable" =&gt; 0, // 1: 無効  0:有効

            // テンプレートタイトル
            "title" =&gt; "サンプル",

            // テンプレートインストラクション
            // * 説明？？？
            //"instruction" =&gt; "", 

            // 投稿タイプ
            // * デフォルトの投稿タイプによって適用範囲を指定する
            // * 投稿:"post"  固有ページ:"page" 両方:""
            //"post_type" =&gt; "post",

            // カスタムポストタイプ （カンマ区切り）
            // * カスタムポストタイプで適用範囲を指定する
            //"custom_post_type" =&gt; "post1,post2",

            // Post ID （カンマ区切り）
            // * POST ID（記事番号）で適用範囲を指定する
            //"post" =&gt; "111", // POST ID 指定

            // カテゴリーID （カンマ区切り）
            // * カテゴリで適用範囲を指定する
            //"category" =&gt; "cat1,cat2", // カテゴリ指定

            // ページテンプレートファイル名 （カンマ区切り）
            // * 使うテンプレを指定できる????
            //"template_files" =&gt; "moge.php",

            // テンプレートコンテンツ:
            // * 使用するカスタムフィールドの設定
            // * 使用できる値は設定画面の「オプションリスト」を参照してください
            "content"   => <<<___END___
# 「カスタムフィールドテンプレートオプション」項の設定はwp-content/themes/functions-common.php によって上書きされています。管理画面からは更新できませんのでご注意ください。

[Plan]
type = text
size = 35
label = Where are you going to go?

[Plan]
type = textfield
size = 35
hideKey = true

[Hidden Thought]
type = textarea
rows = 4
cols = 40
tinyMCE = true
htmlEditor = true
mediaButton = true

[File Upload]
type = file
___END___
        ),
    );

    // var_dump(get_option('custom_field_template_data')); // debug
    // delete_option('custom_field_template_data'); // debug
    update_option('custom_field_template_data', $custom_field_template_data);
}
overwrite_custom_field_template_data();</pre>
</blockquote>
<p>※ //から始まる行はコメントです<br />
※ 一部の設定値がコメント化されているので、必要がある場合には//を外して有効化してください<br />
※ 設定内容はもちろんあなたのブログに合わせて変えてください<br />
※ 設定値の書き方はコメントで説明している通りか、設定画面の同一の設定値名と同じです</p>
<p>これで、管理画面側で行われた設定値が、このテーマフォルダ内のfunction.phpに記載した設定値で上書きされるようになりました。同一のテーマを使っている限りいつも同じカスタムフィールドテンプレートの設定になります。</p>
<p>環境毎に設定を行ったり、設定内容を周知しなくてもいいので大変便利ですね。</p>
<p>ではでは。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=606</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=606" />
	</item>
		<item>
		<title>jQueryMobileのデフォルトのスタイルを解除する方法</title>
		<link>http://www.the-triad.jp/blog/?p=593</link>
		<comments>http://www.the-triad.jp/blog/?p=593#comments</comments>
		<pubDate>Wed, 17 Aug 2011 06:49:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jquery mobile]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=593</guid>
		<description><![CDATA[こんにちわ、毎日暑いですね、MacBookAirが加熱しすぎてキーボードを触っていると火傷しそうでビビってる @nihimoto です。 - 本日はjQueryMobileネタで一つ。 jQueryMobileはお手軽に [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、毎日暑いですね、MacBookAirが加熱しすぎてキーボードを触っていると火傷しそうでビビってる @nihimoto です。</p>
<p>-</p>
<p>本日はjQueryMobileネタで一つ。</p>
<p>jQueryMobileはお手軽にスマートフォンサイトっぽくしてくれる便利なものですが、デザインのカスタマイズを高度に組み込んでると、強制的に適用してくるスタイルが邪魔になったりしませんか？<br />
しかもスタイルが適用されるクラス名とかがわからないので、解除するのもなかなか厄介なんですよね。</p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/08/jq_form_sample.gif" alt="" title="jq_form_sample" width="350" height="200" class="alignnone size-full wp-image-594" /></p>
<p>実はあのスタイルは、jQueryMobieのJavascriptをロードした際に、自動的に専用のクラス名を各要素に割り振り、そのクラス名に対してjQueryMobileがスタイルを適用しているので、普通にスタイルシートに書いただけだと、後からスタイル上書きされちゃうんですよね。</p>
<p>今回はこの問題に対処する方法を説明してみたいと思います</p>
<p><span id="more-593"></span>-</p>
<p>まず、第一の方法は data-role=&#8221;none&#8221; 属性を使います。<br />
要素に対してdata-role=&#8221;none&#8221;と書くことで、その要素へはスタイル指定が行われず、ブラウザのデフォルトのまま表示されます。</p>
<p>たとえば図の入力欄で言えば、</p>
<blockquote><p>&lt;input type=&#8221;text&#8221; name=&#8221;20&#8243; value=&#8221;" size=&#8221;20&#8243; data-role=&#8221;none&#8221; /&gt;</p></blockquote>
<p>と、こうなります。<br />
jQueryMobileの基本機能の一つとして持っているものなのでおすすめです。</p>
<p>-</p>
<p>ただ、この方法は、一個の要素にだけ適用するならいいのですが、たくさん要素があって全部にいちいちdata-role=&#8221;none&#8221;を書くのはいかにも面倒くさい。</p>
<p>そんな時は下記のコードをheaderタグの中に書いてあげてください。</p>
<blockquote>
<pre>&lt;script type="text/javascript"&gt;&lt;!--
$(document).bind('mobileinit',function(){
    $.mobile.page.prototype.options.keepNative
        = ".data-role-none, .data-role-none *";
});
// --&gt;
&lt;/script&gt;</pre>
</blockquote>
<p><span style="color: #ff6600;">※このコードは必ず jquery-***.js の読み込みと、jquery.mobile-***.js の読み込みの間に記載してください。jsの実行順が違うと動作しません。</span></p>
<p>スタイルシートのセレクタの形式でkeepNativeという設定値に記載すると、その要素に対してはスタイルの適用が行われません。そこで、keepNativeにdata-role-noneクラスと、その子要素全てを指定しています。</p>
<p>これにより、たとば &lt;form action=&#8221;index.php&#8221; method=&#8221;get&#8221; class=&#8221;data-role-none&#8221;&gt; というformタグを書けば、そのフォーム内の要素は全てスタイルが適用されません。formでなくても&lt;div class=&#8221;data-role-none&#8221;&gt;〜&lt;/div&gt; とかでもいいと思います。</p>
<p>状況に応じて、data-role=&#8221;none&#8221; と class=&#8221;data-role-none&#8221;を使い分ければそれなりに便利になるかなと思いますので、試してみてください。</p>
<p>なお、JS内のセレクタは状況に応じて自由に書き換えられますので、追加したければカンマ区切りで自由に追加して問題ありませんし、邪魔なら削除しても問題ないです。</p>
<p>-</p>
<p>以上となりますが、いかがでしたでしょうか。</p>
<p>本件に関しまして何か情報や質問がありましたら @nihimoto までご連絡いただけるととてもうれしいです。よろしくお願いいたします。</p>
<p>-</p>
<p>※ちなみにFirebugsなどの開発ツールを使えば、jQueryMobile動作後の特殊クラス名を割り出すことはそんなに難しくなくできるので、それのクラス名に対してスタイルを適用すれば上書きは可能です。ただ、なぜか上書きできない場所もあったり、共用で使ってるクラスもあったり、トラブルの元になるのであまりおすすめはできません。</p>
<p>※参考：Preventing auto-initialization of form elements<br />
<a href="http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/forms/docs-forms.html  " target="_blank">http://jquerymobile.com/demos/1.0b2/#/demos/1.0b2/docs/forms/docs-forms.html</a></p>
<p>※あとついでにですが、このdata-role以外の部分のデザインはdata-role=&#8221;page&#8221;を割り当てているタグにdata-theme=&#8221;xyz&#8221;などの存在しないdata-themeを指定してあげると、大部分のデザインが解除されます。特に色指定あたり。それでも取りきれないのは先述のクラス名割り出しからのスタイル上書きをするしかないっぽいけど・・（未確認）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=593</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=593" />
	</item>
		<item>
		<title>WordPressのエディタが独自拡張の属性値を消してしまう問題への対処</title>
		<link>http://www.the-triad.jp/blog/?p=571</link>
		<comments>http://www.the-triad.jp/blog/?p=571#comments</comments>
		<pubDate>Tue, 02 Aug 2011 10:27:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=571</guid>
		<description><![CDATA[こんにちわ、Wii・PS3・Xbox360 のゲーム機3種を持っているくせに、テレビが無いという宝の持ち腐れという言葉にふさわしい生活をしていた@nihimotoです。最近兄からテレビをもらってようやく遊べるようになりま [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、Wii・PS3・Xbox360 のゲーム機3種を持っているくせに、テレビが無いという宝の持ち腐れという言葉にふさわしい生活をしていた@nihimotoです。最近兄からテレビをもらってようやく遊べるようになりました。ありがたい。</p>
<p>ついでに、テレビ買ったこと無い歴も32年に伸びました。たぶん50年くらいまで行けるんじゃないでしょうか。がんばります。</p>
<p>-</p>
<p>さて、今回のネタはWordpressについてです。<br />
wordpressは非常に便利に使えるCMSなのですが、時折融通が効かなくて苦労します。<br />
特に 融通が効かないと思うのは、ビジュアル／HTMLエディタです。</p>
<p>勝手に&lt;p&gt;タグ付けるわ、連続する&lt;br /&gt;タグを&lt;p&gt;にまとめるわ、&lt;iframe&gt;タグは削除するわ、なかなか堅苦しい仕様です。もちろん文法的にはそうあるべきなんですが、もう少し臨機応変にやってくれよと言いたくなります。</p>
<p>これらの問題は、昔からある問題なので、当然のことながら先達たちがプラグインを作ったりして対処方法を用意してくれています。ありがたいことです。</p>
<p>-</p>
<p>ところが、スマートフォン対応のサイトを作るに当たって、jQuery Mobileを使ったテンプレートを作ってみたところ、あまり例のなさそうな（Google調べ）トラブルに遭遇しました。</p>
<p>jQuery Mobile ではタグに独自の属性値の data-role=&#8221;page&#8221; などをつけて、各タグのjQuery Mobileの中での取り扱いを決めていくのですが、これをなんとWordpressのエディタは削除してしまいます。</p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/08/f22743a9a1aaed717c806cf44d62d6ae.gif" alt="" title="WPエディタ説明" width="440" height="414" class="alignnone size-full wp-image-583" /></p>
<p>確かにHTMLの中では<del>正しい記法ではないので</del>(data-*** という書き方は HTML5 では Custom Data Attributeという正しい記法だそうです)消されても文句は言えないのですが、それでは困るので対処してみたいと思います。</p>
<p><span id="more-571"></span></p>
<p>-</p>
<p>対処方法としては、data-roleやdata-themaなどのひとつひとつの属性値に対処したりするのは調べる手間がもったいないので、エディタのデフォルトの設定を変えて、「どんな属性値でも許可する」という変更を加えてみたいと思います。</p>
<p>そのために下記のコードをテンプレートのfunctions.phpに貼り付けます。</p>
<blockquote>
<pre>if ( !function_exists('pnd_allow_all_attr') ) {
    function pnd_allow_all_attr ($init) {
        $ext_elements = '';

        $target_elements = array(
        'a', 'b', 'base', 'big', 'blockquote', 'body', 'br', 'caption', 'dd', 'div', 'dl',
        'dt', 'em', 'embed', 'font', 'form', 'h', 'head',  'hr', 'html', 'i', 'img', 'input',
        'li', 'link', 'meta', 'nobr', 'noembed', 'object', 'ol', 'option', 'p', 'pre', 's',
        'script', 'select', 'small',  'span', 'strike', 'strong', 'sub', 'sup', 'table',
        'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'tt', 'u', 'ul',
        'iframe'
        );
        $target_attr = array(
            '*'
        );

        foreach ($target_elements as $target_element) {
            $ext_elements .= ",".$target_element."[".implode('|',$target_attr)."]";
        }

        if ( !empty($ext_elements) ) {
            if ( !empty($init['extended_valid_elements']) )
                $init['extended_valid_elements'] .= $ext_elements;
            else
                $init['extended_valid_elements'] = trim($ext_elements, ',');
        }

        return $init;
    }
    add_filter( 'tiny_mce_before_init', 'pnd_allow_all_attr', 100 );
}</pre>
</blockquote>
<p>これでWordpressのエディタは、コード内のリストに含まれるタグでは、どんな属性値が渡ってきてもそれを消したりしないようになりました。</p>
<p>簡単に動作を説明すると、WordpressのエディタはTinyMCEという別のオープンソースのプロダクトを、多少のカスタマイズを加えつつ取り込んでいます。</p>
<p>このTinyMCEというエディタは多様な設定を持っていて、エディタ内で取り扱うべき正しいHTMLタグや属性値がなんなのかも設定値として持っています。その設定値を<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">extended_valid_elementsという値で上書きできるので、ここに考えられるHTMLタグを全部、属性値は「*」を渡す処理を作っています。</span></p>
<p>&nbsp;</p>
<p>そしてadd_filterでエディタの初期化が行われる都度その処理が行われるようにすることで、属性値が一切削除されなくなります。</p>
<p>-</p>
<p>と、言うことで、これでjQuery Mobile等の独自属性値を使う時に、エディタがそれを消す問題は解決できます。ぜひお試しいただき、何かご要望やご意見などありましたら@nihimotoまでご連絡ください。</p>
<p>それと、今回はテンプレ関数側に追加する形で説明を行いましたが、これでは導入が面倒なので機会を見て正式にプラグイン化しようと考えています。プラグイン化しましたら改めてこのブログで報告いたしますのでぜひご利用ください。</p>
<p>ではでは 。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=571</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=571" />
	</item>
		<item>
		<title>IE6のゴースト現象</title>
		<link>http://www.the-triad.jp/blog/?p=545</link>
		<comments>http://www.the-triad.jp/blog/?p=545#comments</comments>
		<pubDate>Wed, 22 Jun 2011 03:29:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[coding]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=545</guid>
		<description><![CDATA[最近コーディングの数をかなりこなしている@ksmonkeyです。 もうさすがにIE6はサポートが切れているので今後の役に立つかはわかりませんが、自分の備忘録的な感じでIE6のゴースト現象について書きたいと思います。 まず [...]]]></description>
			<content:encoded><![CDATA[<p>最近コーディングの数をかなりこなしている<a href="http://twitter.com/#!/ksmonkey" target="_blank">@ksmonkey</a>です。<br />
もうさすがにIE6はサポートが切れているので今後の役に立つかはわかりませんが、自分の備忘録的な感じでIE6のゴースト現象について書きたいと思います。</p>
<p>まずはゴーストが起きる前の現象になります。<br />
なぜかって？<br />
ゴーストの前はもっと分かりやすくレイアウト崩れが起きたからです。<br />
3コラムのレイアウトをfloatを利用して実現しようとしました。<br />
レイアウトのためにdivでコンテンツを囲い、widthで幅を設定してからfloat:left;をそれぞれに設定しました。<br />
コンテンツ自体は横並びになってくれましたが・・・一番右側のboxで不可思議なことが発生しました、画像がdivの外に大きくはずれて表示されました。</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/ie6_ghost01.gif"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/ie6_ghost01-300x228.gif" title="ie6_ghost01" width="300" height="228" class="alignnone size-medium wp-image-553" /></a></p>
<p><span id="more-545"></span><br />
書いたソースコードはコレです。</p>
<blockquote><p><code>&lt;div class="clearfix"&gt;</code></p>
<p><code>&lt;!-- left box --&gt;</code></p>
<p><code>&lt;div class="BoxLeft"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</p>
<p>&lt;h4&gt;サブタイトル&lt;/h4&gt;</p>
<p>&lt;dl&gt;</p>
<p>&lt;dt&gt;定義語&lt;/dt&gt;</p>
<p>&lt;dd&gt;説明&lt;/dd&gt;</p>
<p>&lt;/dl&gt;</p>
<p>&lt;/div&gt;</p>
<p></code><code>&lt;!-- end left box --&gt;</code></p>
<p><code>&lt;!-- center box --&gt;</code></p>
<p><code>&lt;div class="BoxLeft"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;p&gt;&lt;img src="img/image01.jpg" alt="" /&gt;&lt;/p&gt;--&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end center box --&gt;</p>
<p></code><code>&lt;!-- right box --&gt;</code></p>
<p><code>&lt;div class="BoxRight"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;p&gt;&lt;img src="img/image02.jpg" alt="" /&gt;&lt;/p&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end right box --&gt;</p>
<p></code><code>&lt;/div&gt;<br />
</code></p></blockquote>
<p>特に問題ないと思いますが、IE6でfloatを指定している要素に、marginを設定するとバグが発生することは覚えていたので、すべてpaddingに修正して再度確認してみました。</p>
<p>・・・直りません。</p>
<p>何が問題か検討がつかず、順番を変えてみたりしましたが、見事に一番右側に配置したときにだけこの問題が表示されました。</p>
<p>う〜ん、こうなれば常套手段としてdiv内の要素を非表示にしてみようとコメントアウトしていきました。</p>
<blockquote><p><code>&lt;div class="clearfix"&gt;</code></p>
<p><code>&lt;!-- left box --&gt;</code></p>
<p><code>&lt;div class="BoxLeft"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</p>
<p>&lt;h4&gt;サブタイトル&lt;/h4&gt;</p>
<p>&lt;dl&gt;</p>
<p>&lt;dt&gt;定義語&lt;/dt&gt;</p>
<p>&lt;dd&gt;説明&lt;/dd&gt;</p>
<p>&lt;/dl&gt;</p>
<p>&lt;/div&gt;</p>
<p></code><code>&lt;!-- end left box --&gt;</code></p>
<p><code>&lt;!-- center box --&gt;</code></p>
<p><code>&lt;div class="BoxLeft"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;p&gt;&lt;img src="img/image01.jpg" alt="" /&gt;&lt;/p&gt;--&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end center box --&gt;</p>
<p></code><code>&lt;!-- right box --&gt;</code></p>
<p><code>&lt;div class="BoxRight"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;!--&lt;p&gt;&lt;img src="img/image02.jpg" alt="" /&gt;&lt;/p&gt;--&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end right box --&gt;</p>
<p>&lt;/div&gt;</p>
<p></code>&nbsp;</p></blockquote>
<p>&nbsp;</p>
<p>ここで、新たな問題が発生しました!!!<br />
なぜか、最後のdiv内にある文章の末尾がboxの幅を超えて表示されてしまいました。</p>
<p>&nbsp;</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/ie6_ghost02.gif"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/ie6_ghost02.gif" title="ie6_ghost02" width="300" height="187" class="alignnone size-full wp-image-554" /></a></p>
<p>&nbsp;</p>
<p>ソースコード上にもこの文字は記述されていないので、試しにカーソルで選択してみると実際に記述されているところがハイライトされて、3文字の部分はハイライトすらされません。</p>
<p>う〜ん、謎です。</p>
<p>ただのレイアウト崩れだと思っていたら、こんなに謎な現象にはまってしまうとは思ってもいませんでした。</p>
<p>現状を整理して考えると、<br />
・横並びOK<br />
・横幅OK<br />
・IE6でfloat利用の際のmargin設定のバグOK</p>
<p>考えられるすべを試してみました。<br />
しかし、一向に改善されないこの問題に疲れてきました。<br />
そこで、とりあえず、画像は表示しなくてはならないので、画像をいっそのこと背景画像としてcssで設定してみました。</p>
<blockquote><p><code>&lt;!-- right box --&gt;</code></p>
<p><code>&lt;div class="BoxRight"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;!--&lt;p&gt;&lt;img src="img/image02.jpg" alt="" /&gt;&lt;/p&gt;--&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end right box --&gt;</p>
<p></code><code>&lt;/div&gt;</code></p>
<p><code>↓↓↓↓↓</code></p>
<p><code> </code><code>&lt;!-- right box --&gt;</code></p>
<p><code>&lt;div class="BoxRight"&gt;←このクラスに背景画像を設定</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!-- end right box --&gt;</p>
<p></code><code>&lt;/div&gt;</code></p></blockquote>
<p>&nbsp;</p>
<p>なんと、問題なく表示されました。<br />
あの不可思議なゴースト現象もありません。</p>
<p>解決!!!</p>
<p>と、言いたいところですが、ここだけ画像を背景にしてしまうのは何か気持ち悪い・・・<br />
背景画像にして問題なくて、ソース上に書くと問題があるということからもう少し探ってみました。</p>
<p>大きな違いは・・・</p>
<p>コメントアウト</p>
<p>レイアウト崩れの際に、画像をコメントアウトしていました。<br />
また、今回は、ソースにコメントアウトでコンテンツについて丁寧に記述していました。<br />
※いつもはここまで丁寧に記述はしませんでした・・・</p>
<p>恐る恐るコメントアウトを外していくと・・・</p>
<blockquote><p><code>&lt;div class="clearfix"&gt;</code></p>
<p><code>&lt;div class="BoxLeft"&gt;</code></p>
<p><code>&lt;h3&gt;タイトル&lt;/h3&gt;</code></p>
<p><code>&lt;p&gt;説明文&lt;/p&gt;</code></p>
<p><code>&lt;h4&gt;サブタイトル&lt;/h4&gt;</code></p>
<p><code>&lt;dl&gt;</p>
<p>&lt;dt&gt;定義語&lt;/dt&gt;</p>
<p>&lt;dd&gt;説明&lt;/dd&gt;</p>
<p>&lt;/dl&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div class="BoxLeft"&gt;</p>
<p>&lt;h3&gt;タイトル&lt;/h3&gt;</p>
<p>&lt;p&gt;説明文&lt;/p&gt;</p>
<p>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;p&gt;&lt;img src="img/image01.jpg" alt="" /&gt;&lt;/p&gt;--&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;div class="BoxRight"&gt;</p>
<p>&lt;h3&gt;タイトル&lt;/h3&gt;</p>
<p>&lt;p&gt;説明文&lt;/p&gt;</p>
<p>&lt;ul&gt;</p>
<p>&lt;li&gt;注意書き&lt;/li&gt;</p>
<p>&lt;/ul&gt;</p>
<p>&lt;p&gt;&lt;img src="img/image02.jpg" alt="" /&gt;&lt;/p&gt;</p>
<p>&lt;/div&gt;</p>
<p></code><code>&lt;/div&gt;</code></p></blockquote>
<p>なんと!</p>
<p>問題なく表示されました!</p>
<p>ゴーストも表示されず、レイアウトも崩れることなく思ったとおりに表示されました。<br />
便利だと思っていたコメントアウトの記述が、IE6では裏目にでたということですね。<br />
本当にこれで問題解消か確認してみようと、検索をしてみたらなるほど同じような現象の方が結構いました。</p>
<p>&nbsp;</p>
<p>■結論<br />
解決方法としては、floatを利用している要素にあるコメントアウトを削除することで解消<br />
IE6に対応するときは、コメントアウトまで疑うべし!</p>
<p>IE6はすでにサポートも終了していて、Microsoftも新しいブラウザにアップグレードするように促しています。<br />
ただ、日本の企業はまだIE6を利用しているところも多いので、なかなか切ることができないのが現状ですね。</p>
<p>tableレイアウトからcssレイアウトから変化したときのように、こんな時代もあったねとIE6のバグも過去の産物になってほしいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=545</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=545" />
	</item>
		<item>
		<title>お手軽にCMSをGoogleスプレットシートで構築する方法（サンプルDL有）</title>
		<link>http://www.the-triad.jp/blog/?p=460</link>
		<comments>http://www.the-triad.jp/blog/?p=460#comments</comments>
		<pubDate>Wed, 08 Jun 2011 02:10:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=460</guid>
		<description><![CDATA[こんにちわ、自炊を初めて部屋が片付くはずが、自炊がなかなか終わらないので部屋が荒れ放題の @nihimoto です。 最近、GoogleスプレットシートというGoogle版エクセル的なwebサービスで、CSVが吐き出せる [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、自炊を初めて部屋が片付くはずが、自炊がなかなか終わらないので部屋が荒れ放題の @nihimoto です。<br />
最近、GoogleスプレットシートというGoogle版エクセル的なwebサービスで、CSVが吐き出せる上にweb上に公開できる機能の存在を小耳にはさみました。これは「CMSに使える！」と思ったので早速試してみました。</p>
<p>これまでの仕事でたくさんの「お知らせ」管理システムや「イベント告知」システムなどを構築してきましたが、これらのシステムは表示するシステムを作る工数は大きくないものの、更新するシステムを作る工数は非常に大きなる傾向があります。<br />
しかし、Googleスプレットシートでデータの更新・管理ができるのであれば、丸ごとGoogleスプレッドシートに依存することで、更新システムにかかる工数を０にできます。</p>
<p><a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AsrSFVxhKvardDlPUWdJZkwwV0ZfTG1TU3VCNElsQmc&amp;hl=ja&amp;authkey=CKDVgaMH#gid=0" target="_blank"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/f3ec3f3d0a5751423711bff158e20f4d-300x197.png" title="スクリーンショット（2011-05-31 12.33.21）" width="300" height="197" class="alignnone size-medium wp-image-494" /></a><br />
↑ 管理用のGoogleスプレットシートの画面、エクセルと似たような感じです</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/googlesheets_cms_sample/" target="_blank"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/f8138dd6024b147596e57093274b4989-300x179.png" title="スクリーンショット（2011-05-31 12.31.51）" width="300" height="179" class="alignnone size-medium wp-image-493" /></a><br />
↑ 表示している画面。管理用のシートを読み込んでいます（サンプル）</p>
<p>もちろん、個々の事情に合わせて最適の管理画面を用意した場合に比べ、Googleスプレッドシートの画一的な画面は、使い勝手は落ちます。しかし、エクセルと似たような操作法なので一般の方からも馴染みやすい形でデータを管理できるのではないでしょうか。コストを考えればこの機能で十分CMSとしての役割を果たせるケースも多いはずです。選択肢の一つとしてこの手法を持っておくことは、とても有意義なことだと思います。</p>
<p>このページでは、流れや考え方の説明と共に、すぐに使えるソースコードのサンプルも置いておきますので、個人商用限らずご自由にご利用ください。（たいしたサンプルではありませんが・・）</p>
<p>-</p>
<p><strong>はじめに. システム概要</strong></p>
<p>システムの大雑把な仕組みは簡単に言えば下記の２つになります。</p>
<p><strong>更新用システム</strong>＝Googleスプレットシートを公開設定で１つ作成して、この中にウェブサイト上で表示したいデータを全て書き込む（<a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AsrSFVxhKvardDlPUWdJZkwwV0ZfTG1TU3VCNElsQmc&amp;hl=ja&amp;authkey=CKDVgaMH#gid=0" target="_blank">Sample</a>）<br />
<strong>表示用システム</strong>＝上記のCSVファイルを読み込んで整形してHTMLとして表示するPHPプログラムをサイト内に埋め込む</p>
<p>簡単に言えばこれだけのことなります。非常にシンプルです。</p>
<p>以下、手順の説明になります。</p>
<p><span id="more-460"></span></p>
<p>-</p>
<p><strong>手順1. 更新システム＝Googleスプレットシートの準備</strong></p>
<p>まず、サンプルのGoogleスプレッドシートを下記に作成しておいたので御覧ください。</p>
<p><a href="https://spreadsheets.google.com/spreadsheet/ccc?key=0AsrSFVxhKvardDlPUWdJZkwwV0ZfTG1TU3VCNElsQmc&amp;hl=ja&amp;authkey=CKDVgaMH#gid=0" target="_blank">Sheet for CMS</a><br />
※編集権限は解放しておりませんが、本来はエクセルのような形で編集が可能です</p>
<p>1行目に項目名、2行目以降にデータという形でデータをシートに格納して更新していくことになります。もちろん項目名はカスタマイズ可能ですし、行も必要なだけ追加して問題ありません。更新作業の際には新しい行を上か下に挿入して更新を行うことになります。</p>
<p>さて、シートを作ったら実際にこのデータを外部から読み込むための準備をします。<br />
使用する機能は、Googleスプレットシートの「ウェブに公開」という機能です。スプレットシートの右上に「共有」ボタンがありますので、ここをクリックして「ウェブページとして一般公開」を選択しましょう。</p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/5442fc071c0237fcd86a74aba8dd2cda.png" title="スクリーンショット（2011-05-31 9.58.30）" width="267" height="208" class="alignnone size-full wp-image-464" /></p>
<p>そうすると下記のような画面が出てくるので、「変更が加えられると自動的に再公開する」のチェックを外してから、「公開開始」ボタンをクリックしてください。</p>
<p><a></a><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/252ff85a3b31a2ad22c025466f7385c0.png"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/252ff85a3b31a2ad22c025466f7385c0-291x300.png" title="スクリーンショット（2011-05-31 9.59.56）" width="291" height="300" class="alignnone size-medium wp-image-466" /></a></p>
<p>すると、「公開データへのリンクを取得」が有効になるはずです。</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/a68f357e700ca6dca593407766c7f85d.png"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/06/a68f357e700ca6dca593407766c7f85d-300x288.png" title="スクリーンショット（2011-06-08 10.58.45）" width="300" height="288" class="alignnone size-medium wp-image-533" /></a></p>
<p>有効になったら一つ目のプルダウンで「CSV」を選択、２つ目のプルダウンで公開したいシートの名前（デフォルトなら「シート１」を選択してください。これで下のボックスの中のURLが公開用のCSVファイルのURLになるはずです。<br />
このURLを表示側のプログラムで読み込むことになりますので、コピーして取っておいてください。</p>
<p>後はこのシートの中に必要なデータを記入していき、CMSの公開に備えましょう。</p>
<p>※なお、運用を開始した後にデータを更新した際には、「今すぐ再公開」ボタンを押すことでCSVデータが更新されます。</p>
<p>-</p>
<p><strong>手順2. 表示システム＝CSV読み込み用PHPプログラムの設置</strong></p>
<p>CSVデータの準備ができたら、今度はそれを表示するためのプログラムをあなたのウェブサイトの中に埋め込む必要があります。やることはCSVを読み込んで整形してHTMLを出力するだけなので、プログラム言語はなんでも構いません。PHPやperlはもちろん、Javascriptでもできると思います。</p>
<p>今回はPHPでサンプルを作成してみました。<br />
下記にサンプルを設置してありますので、一度御覧ください。<br />
<a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/googlesheets_cms_sample/">設置サンプル</a><br />
ダウンロードはこちらから<br />
<a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/googlesheets_cms_sample/csvloader.zip">Smaple Csv loader for CMS</a></p>
<p>サンプルは下記４つのファイルで構成されます。</p>
<ul>
<li>トップページなどで使う「最新◯件のリストを出力する」サンプルのindex.php</li>
<li>「お知らせ一覧」などで使う「現在のページの◯件を出力する」サンプルのlist.php</li>
<li>「お知らせ詳細」などで使う「指定した行のお知らせの内容を全て表示する」サンプルのdetail.php</li>
<li>上記３つのファイルから読み込まれるライブラリファイルの csvloader.inc.php</li>
</ul>
<p>上記のファイルから必要な箇所をコピペして、ご自分のサイトに張ってください。各ファイルの先頭にCSVファイルのURLが書いてありますので、これを前の手順で作成したCSVのURLがに書き換えてください。またcsvloader.inc.phpは必ずコードを張ったファイルと同じフォルダにコピーしておいてください。</p>
<p>うまくいけば、手順１で作成したCSVの中身がご自分のウェブサイト内に取り込まれて表示されているはずです。</p>
<p>※サーバー上でphpの allow_url_fopen がONになっていないと、http経由でのファイルの読み込みができないため、エラーが発生してしまいますので注意してください。</p>
<p>-</p>
<p><strong>まとめ</strong></p>
<p>ということで、非常にお手軽に簡易CMSを設置できたと思います。<br />
提供しているサンプルの制作にかかった時間も、数時間と非常に短時間ですみました。（デザインやデータがシンプルだったという理由もありますが）</p>
<p>最後に、簡単にこの手法のメリット・デメリットをまとめてみます。</p>
<p><strong>メリット</strong></p>
<ul>
<li>短時間・低コストでCMSを設置できる</li>
<li>エクセルに近い感覚でコンテンツの更新ができる</li>
<li>Googleアカウントで編集権限を管理できる</li>
</ul>
<p><strong>デメリット</strong></p>
<ul>
<li>認証が必要なデータでは使用できない（CSVのデータが一般公開されてしまうため）</li>
<li>Googleスプレットシートではテキストデータ以外の管理はできない<br />
（ただし、FlickrやYouTubeなどの画像・動画ファイルをアップロードできる外部サービスを利用して、HTMLの貼りつけコードを取得してしまえば、この問題は回避することができます）</li>
<li>一度Googleのサーバーにデータを取りに行ってから画面を表示するので若干遅い</li>
<li>Googleのサーバーがダウンすると一緒にダウンすることになる（めったに無いとは思いますが・・）</li>
</ul>
<p>と、こんな感じです。</p>
<p>いかがでしたでしょうか。<br />
これで全てのCMSを代用できるとは思いませんが、コストを抑える必要があるときに有用な選択肢の一つにはなるはずです。ぜひ覚えておいてください。</p>
<p>ご意見ご感想などございましたら @nihimoto までお願いします。<br />
ではでは。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=460</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=460" />
	</item>
		<item>
		<title>PC携帯両対応のウェブサイトをWordPressで構築する方法のざっくりとしたまとめ</title>
		<link>http://www.the-triad.jp/blog/?p=425</link>
		<comments>http://www.the-triad.jp/blog/?p=425#comments</comments>
		<pubDate>Fri, 27 May 2011 11:19:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=425</guid>
		<description><![CDATA[こんにちわ、そろそろ夏だと思ってサンダルを履いてみたら土砂振りの @nihimoto です。 この度、とあるPC・携帯のウェブサイトを完全にWordpressの管理下に置いた状態で構築するお仕事をさせていただいたので、そ [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ、そろそろ夏だと思ってサンダルを履いてみたら土砂振りの @nihimoto です。<br />
この度、とあるPC・携帯のウェブサイトを完全にWordpressの管理下に置いた状態で構築するお仕事をさせていただいたので、そのノウハウをまとめて記載させていただきたいと思います。</p>
<p>WordPressをCMSとして使う方法はうまくプラグインを使いまくればかなり便利に使えます。<br />
Wordpress以外のCMSを使う理由なんてほとんど無くなってしまいます。</p>
<p><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/05/da0e85d8449c0b5055a4f85379a4c5f4-e1306493150658.png" title="スクリーンショット（2011-05-27 19.44.30）" width="300" height="186" class="alignnone size-full wp-image-430" /></p>
<p><span id="more-425"></span>ということで、さっそくまとめてみます。</p>
<p>-</p>
<p><strong>「投稿」と「固定ページ」を使い分ける</strong></p>
<p>「投稿」はまさにブログの記事のように日付やカテゴリでまとめて分類される、蓄積されていく記事を投稿するためにあります。「固定ページ」は常時存在して増減のそんなにない、まさに「固定されたページ（そのまんま）」の為にあります。</p>
<p>一般的な企業ページで言えば「お知らせ」や「ニュース」や「製品情報」などは投稿で作り、その他の「◯◯について」や「アクセス」などは固定ページで作るのが定石です。<br />
アーカイブなどの機能もそれを前提に機能が設計されています。</p>
<p>-</p>
<p><strong>テンプレートはばっさり編集</strong></p>
<p>WordPressのテンプレートはwp-content/themes/フォルダの下に置いてあります。楽をするためにデフォルトテーマのtwentytenあたりを丸ごとコピーして、それをベースにつくるのがオススメです。<br />
しかし、twentytenはデフォルトのテーマだけに、様々な状況に対処できるように大量のソースコードが埋まっています。ブログとして機能させたり、古いデータを引き継いだり、コメントを受け付けたりするには必要なコードだったりするのですが、単純にCMSとして使いたいだけの場合にはほとんど不要です。</p>
<p>ということで、いらなそうなコードはバッサリ削除してしまいましょう。だいぶ管理しやすくなります。<br />
私も実際に要らないコードを削ってみたら半分以上無くなってしまいました。</p>
<p><strong>※追記5/30</strong><br />
ばっさり削除するくらいなら元々余計なものの無いテーマをベースにすればいいじゃん、そう思った方、下記のサイトではそういった方用の、余計なものがばっさり取り除かれたNakedなテーマが紹介されています。</p>
<p><a href="http://speckyboy.com/2010/03/22/10-blanknaked-wordpress-themes-perfect-for-development">10 Blank/Naked WordPress Themes Perfect for Development</a></p>
<p>-</p>
<p><strong>投稿内容の自動整形はうっとおしい</strong></p>
<p>CMSとして使う場合、固定ページの本文にHTMLを記載することが多いと思います。しかし、WPの標準の自動整形機能が働いていると、本文を表示するときに勝手に&lt;p&gt;や&lt;br&gt;を埋め込んでしまい、レイアウトが崩れてしまう可能性があります。それに対処するため、自動整形機能をOFFにする <a href="http://wordpress.org/extend/plugins/ps-disable-auto-formatting/">PS Disable Auto Formatting</a> というプラグインを導入します。</p>
<p>しかし、これでも少し問題があります。<br />
これによって自動整形をOFFにすると、当たり前ですが自分で&lt;br&gt;を入れなければ改行されません。サイトの製作者が管理しているうちはそれでいいのですが、当然HTMLの知識の無い担当者に受け渡すこともあるでしょう。その時&lt;br&gt;がないと改行が反映されない、というのは更新のハードルを上げてしまいます。</p>
<p>その問題に対処するために、「投稿」機能の時だけテンプレートに php に <a href="http://phpspot.net/php/man/php/function.nl2br.html">nl2br</a> 関数を埋め込んで改行を反映させてあげるのがオススメです。「投稿」にだけ導入するのは、先述のとおり「投稿」は「お知らせ」などに使うケースが多く、管理者以外が投稿をする可能性が高いためです。逆に「固定ページ」は固定されているページなので、大抵の場合更新はあまり発生せず、改行が反映されなくてもあまり問題ありません。</p>
<p>さて、改行を反映させるには、具体的には loop.php の下記の部分を</p>
<pre>the_content();</pre>
<p>次のように書き換えます</p>
<pre>if (is_single()) {
  print nl2br(get_the_content());
} else {
  the_content();
}</pre>
<p>これで、投稿の時だけ改行が反映されるようになりました。</p>
<p>-</p>
<p><strong>携帯へ対応させる</strong></p>
<p>携帯への対応は<a href="http://wppluginsj.sourceforge.jp/ktai_style/">Ktai Style</a>というプラグインを使うのが定石です。これを使えば携帯でサイトにアクセスされた場合に、携帯用のテーマで表示ができます。</p>
<p>しかし、これによってテンプレートのPC／携帯の出し分けは出来るのですが、肝心の投稿や固定ページの本文を出し分けることはできません。PC用にHTML＋CSSでバリバリ書いた本文を作ってしまうと、それが携帯で表示されるととんでもないことになってしまいます。</p>
<p>この問題に対処するために、今度は <a href="http://musilog.net/webdesign/wordpress/pc-ktai-content-selecter.php">PC Ktai content selecter</a> というプラグインを使います。これを導入すると[pccontent]PC用の記述[/pccontent]や[ktaicontent]携帯用の記述[/ktaicontent]などと、PCと携帯用にかき分けができます。これにより、PC用に書いたHTMLをそのまま携帯に表示されては困るようなところだけ、携帯用の記述を書き分けることで対処ができるようになります。</p>
<p>-</p>
<p><strong>お問い合わせフォームは・・</strong></p>
<p>企業のサイトを作る、といえば必ず付いて回るのがお問い合わせフォーム。Wordpressには <a href="http://ideasilo.wordpress.com/2007/10/22/contact-form-7-in-japanese/">ContactForm7</a> という優秀なメールフォーム用のプラグインがあり、しかもモバイルにも対応出来ます。<br />
・・が、どうもこのフォームは制約がありすぎて、クライアントの要望に応えにくいのです。</p>
<p>なのでお問い合わせフォームは独自にPHPでフォームを作ります。しかし、せっかくWordpressで作っているので独自に作ったPHPもWordpressの中に収めたい。そこで <a href="http://wordpress.org/extend/plugins/exec-php/">Exec-PHP</a> というプラグインを使用します。<br />
これを使えば記事本文中にPHPのコードを書けばそれが実行されます。お問い合わせフォーム用のコードを投稿内容に書いてしまえばOKです。<br />
（もちろん相応のPHPの技術は必要ですが。それが無い方は素直にContactForm7を使っていいと思います）</p>
<p>-</p>
<p><strong>データはバックアップを取りたい</strong></p>
<p>最後に更新作業が管理者の手を離れて一般の担当者レベルの仕事になると、誤った操作によって投稿やページが壊われてしまうことが心配になります。これはもちろん投稿者のアカウントのできる作業を限定したり、マニュアルを作って間違えないようにする、など予防策を十分に巡らすことで対処するべき問題です。</p>
<p>しかし、それでも不安が残る場合は定期バックアップを取ることがオススメです。それに、バックアップがあればサーバーがクラッシュしたときも安心です。</p>
<p>こういう時に便利なのは <a href="http://wordpress.org/extend/plugins/wp-dbmanager/">WP-DBManager</a> というプラグインです。これを導入するとボタン一発でその時のDBの中身をバックアップできます。さらに、バックアップは定期的に自動実行が可能です。さらにさらに、バックアップしたデータをメールで管理者に送信されるようにすることもできまう。</p>
<p><strong>※追記5/30</strong><br />
が、WP-DBManager は英語のプラグインです。機能的に問題ないのですが、クライアントに渡したときに若干の不安がのこります。また、メールでバックアップを送信するとメールの件名が化けてしまい、気持ち悪いことになります。<br />
そこで下記サイトの手順でプラグインを日本語化、さらに別の手段でPHPのソースコードを書き換えて、メールの件名の文字化も直してしまいましょう。<br />
<a href="http://technolog.jp/website/cms/1161">WordPress &#8211; WP-DBManager 日本語化ファイル | Technolog.jp &#8211; ICTウェブマガジン</a><br />
<a href="http://blog.newf.jp/2008/02/19/262/">WP-DBManager のメール文字化けを解消する | 犬小屋にて</a></p>
<p>-</p>
<p>さてさて、いかがでしたでしょうか。<br />
ここまでが実際の構築案件で使った技術の組み合わせの説明でした。</p>
<p>この手法であれば工数も大きくならずにPC携帯両対応のサイトが作れます。もちろん、案件は様々なので、場合によってはいろいろ臨機応変な対応は必要になることがとは思いますが、大分融通の効くやり方ではないでしょうか。</p>
<p>ということで、この手法でお安くHPを作りたい方は <a href="mailto:nishimoto@the-triad.jp">nishimoto@the-triad.jp</a> までぜひお問い合わせください。（突然営業モードで失礼）</p>
<p>また、他に何か知りたいことなどありましたら @nihimoto までご連絡ください。よろこんで追記等させていただきます。（こちらはマジメに）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=425</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=425" />
	</item>
		<item>
		<title>Amazon Kindle 3 を購入</title>
		<link>http://www.the-triad.jp/blog/?p=410</link>
		<comments>http://www.the-triad.jp/blog/?p=410#comments</comments>
		<pubDate>Fri, 06 May 2011 10:28:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[雑談]]></category>

		<guid isPermaLink="false">http://www.the-triad.jp/blog/?p=410</guid>
		<description><![CDATA[アメリカから帰ってきて、すっかり英語から離れてしまい危機感を感じてきました。 そこで、英語を再度勉強するために何かないかと物色していたら・・・ あるじゃないですか！ 昨今のタブレットブームにのり、Kindle を購入！  [...]]]></description>
			<content:encoded><![CDATA[<p>アメリカから帰ってきて、すっかり英語から離れてしまい危機感を感じてきました。<br />
そこで、英語を再度勉強するために何かないかと物色していたら・・・<br />
あるじゃないですか！<br />
昨今のタブレットブームにのり、Kindle を購入！<br />
え！？<br />
タブレットじゃないって？？<br />
Xoomのレビューを書いているひとからツッコまれそうですが・・・<br />
まあ、デバイスとしてはwebも見ることができるとのことで、英語の勉強プラスデバイスの研究という名目で導入してみました。</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/04/kindle.jpg"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/04/kindle-286x300.jpg" alt="" title="kindle" width="286" height="300" class="aligncenter size-medium wp-image-412" /></a><br />
<span id="more-410"></span><br />
■使用感<br />
用途が読書に絞られているので、非常にシンプルです。<br />
キー配置などは独特ですが、片手でもつことを想定されたボタン配置でストレスなく本を読むことができます。<br />
端末自体も軽く、全体のサイズも丁度よい絶妙なサイズ感です。</p>
<p>■Kindle Store<br />
書籍を購入するには、Amazon.comアカウントを利用してKindle Storeから本を購入します。（そこからしか購入できません）<br />
このStoreですが、カテゴライズなどをしているので書籍名を知らなくてもなんとなく辿っていくと、Amazonのいつものリスト形式で本が表示されます。<br />
どんな内容だろうと思ったときに便利なのが『Try Sample』ボタンで、サンプルが読めるだけだろうと思って試してみたら・・・<br />
なんという読み応えのあるサンプルでしょう！！<br />
結構なページ数を読むことができるので、本屋で立ち読みをしている感じで本を読めます。<br />
iPadで電子書籍を読もうと思った時は、中身がわからないので購入することはありませんでした。<br />
無料版もあるのですが、そもそも有料と無料というカテゴライズでわかれているので見つけるのも難しく・・・<br />
で、購入はしなかったのですが、Amazonのサンプルを読んでしまうとほぼ買ってしまいますｗ<br />
まあ、本だけにターゲットを絞っているので優秀なのは当たり前かもしれませんね。</p>
<p>■なぜKindle？<br />
iPhone、iPad、Androidにアプリがありますが、なぜいちいちKindleを購入するのか？<br />
自分が選んだ最大の理由は、目が疲れないこと。<br />
iPadのディスプレイをずっと見ていると目が相当疲れてしまい、長文をずっと読み続けるというのはできないなと感じていました。<br />
そんな時に、電車でとなりに立っていた人がKindleを持っていて、その画面を見てビックリ！なんて文字が読みやすいのかと。<br />
まあ、暗いとまったく画面が見えなくなってしまうのですが、そこは暗いところで本を読むなということで割り切りました。</p>
<p>■Webについて<br />
KindleにはWebKitベースのブラウザが搭載されているので、webサイトを見ることができます。（当然白黒ですが・・・）<br />
ただ、画面が白黒ですしディスプレイの構造上リフレッシュが遅いので、Ajaxでグリグリ動かすとかGoogle Mapなどのスクロールは厳しいですね。<br />
まあ、読書間隔でニュースサイトを見たり、Blogを閲覧したりする分ではこれでも十分かなと思います。</p>
<p><a href="http://www.the-triad.jp/blog/wp-content/uploads/2011/04/kindle2.jpg"><img src="http://www.the-triad.jp/blog/wp-content/uploads/2011/04/kindle2-225x300.jpg" alt="" title="kindle2" width="225" height="300" class="aligncenter size-medium wp-image-413" /></a></p>
<p>意外とブラウザは優秀でJavascriptもちゃんと動作します。<br />
asahi.comのグローバルメニューもマウスオーバーでサブカテゴリーが表示されますが、ちゃんと再現できていました。<br />
iPadやXOOMなどのタブレットと違って、端末右下の十字キーでカーソルを操作するのでJavascriptもマウスカーソルを充てる感じで違和感ないです。<br />
まあ、このカーソル移動も画面のリフレッシュが遅いので時間は掛かりますが・・・</p>
<p>■3G通信について<br />
契約なしで3G通信ができるのはかなりのメリットです。<br />
3G通信ができれば、ちょっとした時間に本を探して購入することができます。<br />
webサイトの閲覧がいつまで出来るかわからないですが、普通にブラウザでWebサイトを閲覧できます。<br />
他のサイトで知ったのですが、docomoとSoftBankの回線を利用しているみたいなので、W-CDMA方式の通信方式を採用しているみたいです。</p>
<p>と、Amazon Kindleを購入してまだ1週間程度ですが、購入後の雑感としてはこんな感じですね。<br />
購入した書籍は他のデバイスと共有できるのかなどは、試せていないので今後も引き続き検証していきます。<br />
それから、購入動機の英語の勉強も頑張ります！<br />
<a href="http://twitter.com/#!/ksmonkey" target="_blank">@ksmonkey</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-triad.jp/blog/?feed=rss2&#038;p=410</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.the-triad.jp/blog/?p=410" />
	</item>
	</channel>
</rss>

