Tag Archives: PHP

はじめてのWordPressのプラグイン制作!

0
Filed under PHP, WordPress
Tagged as ,

WordPressのプラグインの仕組みを知ろうと思ってドキュメントを読んでいたら、思っていたより簡単そうなので、試してみました!
※参考文献:WordPressプラグインの作り方 (PDF。池田 百合子、2009年6月27日)

ソースを準備

簡単なプラグインは、本文を表示する仕組みにフックするプラグインとします。

適当なテキストエディタで、新規テキストファイルを作成します。
エンコーディングはUTF-8、改行コードはLF。
下記のようなコードを入力し、torques_test_plugin_001.phpとして保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
/*
Plugin Name: Torques Test Plugin 001
Description: my first plugin.
Version: 0.0.1
Author: Torques Inc.
Author URI: http://www.torques.jp/
*/
 
function hogehoge_content($arg_content) {
	return "(。・∀・)ノ ".$arg_content;
}
 
add_filter( 'the_content', 'hogehoge_content' );
 
?>

簡単なPHPスクリプトですので、説明するまでも無いですが、機能の説明をすると「本文の前に顔文字 (。・∀・)ノ を追加する」というプラグインになります。

プラグインインストール!

インストールと言っても、このテキストファイルを、 (WordPressルートディレクトリ)/wp-content/plugins/ に配置するだけ!

WordPressの「ダッシュボード/プラグイン/インストール済みプラグイン」を見てみると、ファイル内に記述した名前でインストールされていることがわかります。

あとは「有効化」をポチっとするだけで、もう完了!

さて、WordPressの公開側を見てみましょう。

出来ていますね!!

以上、WordPressプラグイン制作最初の一歩、でした!


[AD]

↓このキーホルダーは、iPhoneアプリから探せるし、iPhoneを探すことも出来る!iPhone4S専用だけど素晴らしいガジェット!キーホルダーにつけておこう!

SoftBank SELECTION IZCONY for iPhone 4S IZCONYとiPhoneを鳴らして探す ブラック

SoftBank SELECTION IZCONY for iPhone 4S IZCONYとiPhoneを鳴らして探す ブラック

定価:¥ 2,980

カテゴリ:エレクトロニクス


↓防水+GPS+各種エフェクト機能搭載!今一番欲しい、超お買い得コンデジ!

Nikon デジタルカメラ COOLPIX (クールピクス) AW100 サンシャインオレンジ AW100OR

Nikon デジタルカメラ COOLPIX (クールピクス) AW100 サンシャインオレンジ AW100OR

中古価格: ¥ 15,180 より

カテゴリ:Camera

発売日:2011-09-08


OSXでPHP使うときの注意点

2
Filed under Mac, PHP
Tagged as , ,

Mac OS Xのlocalhost上でPHPを勉強がてらテストしていたりするのですが、エラーが起きたとき、エラーが起きると画面が真っ白。で、頭も真っ白。原因の追求が面倒。
だと思い込んでいた。
ふと思ったのです。

photo by arslan_elver


これって、もしかして、エラー表示していないだけ??
そうだよ!
むしろ、なんで今まで真っ白のままで原因追求出来てたんだ、俺?

というわけで、PHPのエラーが発生したときに出力をするようにする設定を行い、解決しました。
OS XのPHPの設定はデフォルトで、出力をしないようになっているようなので、注意しましょう。

Mac OS XでPHPがエラー出力するように設定する

早速php.iniを調べてみました。場所は /etc/php.ini です。ターミナルで次のようにタイプすればおそらく適当なテキストエディタで開くのではないでしょうか。
% open /etc/php.ini
で、display_errorsの項目を見てみたらやっぱり非表示の設定になっている!これを直してもいいのですが、もしかしたら出したくない時もあるかもしれない、と思い調べてみたら下記のサイトに設定の方法がなんとおりか載っていたのでコピペします。

.htaccess で設定する場合

php_flag display_errors On

各PHPスクリプトで設定する場合

ini_set('display_errors', 1);

やりやすかったのは ini_set です。phpの頭に1行追加しておけばいいだけですから、ファイルも増えないし、apacheの再起動も要らないし。

やっぱりエラー出ないと開発難しい!
当たり前です。


[AD]

↓PHPの基礎部分が載っていそうなオライリー本。買うべきか?

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

↓こちらも気になるPHP本。安全であることに越したことはない。

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

Smarty:HTMLをちょっと賢くするPHPライブラリ

0
Filed under PHP
Tagged as , , ,

Smartyで解決!

あるサイトを構築するにあたって、その内容を多言語対応(日本語/英語)とPC/iPhoneの切り替えを行いたいと考えていた。
しかし、どうやったらスマートに構築出来るか分からず、いろいろと調べたり試したりして(その調査の一環がTomatoCMSを入れてみた経緯でもあるのですが)、ようやく「Smarty」という「テンプレートエンジン」による解決策にたどり着きました。


ある問題の解決方法を探るとき、その問題か解決方法の名前をわかっていないと、Google全盛の今の世の中でもちょっと調べるのが大変です。

考えてみると、作りたいサイトは簡単なHTMLであり、更新もそれほど無いし、自分で更新するサイトだし、且つ、今後そのサイトの機能は自分で拡張していきたい、という条件が揃っていたので、わざわざ自分ですべてを理解するのが難しいCMSを使いたくない、ということがわかってきたのでした。
「それでも、すべてをPHPで作るのはちょっと難しい。HTMLにif文とか変数とかあればいいのになぁ〜」と考えて、ウェブをあれこれ見ていたら「Smarty」というキーワードが目に止まった。その近くにある言葉は「テンプレートエンジン」。ちょっと調べてみたら、これだこれ!かなりいいぞ!とちょっと感動すら覚えた。
早速ダウンロードして試してみたらバッチリで、結局そのサイトは、Smartyを使って作り上げました。
そのSmartyについて概要をメモしておきます。

これはもうHTML++だ

HTMLでif文や変数を使いたいと考えたとき、Smartyならこう解決出来る、というサンプルをいくつか紹介してみます。

サンプル1: phpからのテンプレート読み込み例

まずは、ある条件でtrueなら index_true.tplに書いたHTML、falseならindex_false.tplに書いたHTMLを表示する、という例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
if( true ){
  $smarty->display('index_true.tpl');
}
else{
  $smarty->display('index_false.tpl');
}
?>
1
2
3
4
<!-- templates/index_true.tpl -->
<html><head><title>TRUE</title></head>
<body>true, true, true</body>
</html>
1
2
3
4
<!-- templates/index_false.tpl -->
<html><head><title>FALSE</title></head>
<body>false, false, false</body>
</html>

サンプル2: 変数をテンプレートに渡す

次は、php側で定義した変数をテンプレート(.tpl)側で呼び出して使用する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
// 定義.
$message = "Hello!! Smarty!!!";
 
// 左側がtpl内で使う変数名.
$smarty->assign('message', $message);
 
$smarty->display('index.tpl');
?>
1
2
3
4
5
6
<!-- templates/index.tpl -->
<html><head><title>TEST Smarty</title></head>
<body>
<p>I said "{$message}".</p>
</body>
</html>

サンプル3: 変数をテンプレートに渡す

次は、php側で定義した変数をテンプレート(.tpl)側でphpを使って処理する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// index.php
require_once './Smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->template_dir = './templates/';
$smarty->compile_dir  = './templates_c/';
 
// 定義.
$value1 = 1;
$value2 = 2;
 
// 左側がtpl内で使う変数名.
$smarty->assign('v1', $value1);
$smarty->assign('v2', $value2);
 
$smarty->display('index.tpl');
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- templates/index.tpl -->
<html><head><title>TEST Smarty</title></head>
<body>
<!-- v1 -->
{if $v1 == 1}
<p>value1 is One.</p>
{else}
<p>value1 is not One.</p>
{/if}
<!-- v2 -->
<p>value2 is {$v2}</p>
 
</body>
</html>

その他の使い方

その他にもいろいろな使い方はありますが、とりあえずここまでのサンプルだけで大概のことは解決するような気がします。
あと下記の項目だけはよく使いそうなのでメモしておきます。

  • テンプレートに渡す変数が多くなったときには連想配列を使ったほうが良い。
  • テンプレート内に JavaScriptとか書いて問題が発生したときには、{literal}{/literal}で括ると良いです。

チートシートでざっくり見渡す

いろいろな言語やライブラリの特徴的なコード、リファレンス、クラス一覧などをまとめたチートシートというのが有志によって配布されていたりします。
Smartyについても作成されている方がおられました。

Smartyをよく使うならこれを印刷してて元に置いておくと良さそうですね。


[AD]

↓Smartyの本はこれがいいのかな?ウェブだけでは得られない周辺知識も得られるかも。

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

↓このSmarty本は5年前に出ている!知らないって怖いですね。そして、そんなに枯れた技術だと安心して使えるな〜。

Smarty入門‾PHP+テンプレート・エンジンでつくるMVCアプリケーション‾

著者/訳者:山田 祥寛

出版社:翔泳社( 2005-03-15 )

定価:

Amazon価格:¥ 3,024

大型本 ( 320 ページ )

ISBN-10 : 4798108839

ISBN-13 : 9784798108834


↓SmartyもPHPも関係ないけど、去年末に買ったNikonクリーニングキット。デジタル一眼レフのイメージセンサーやレンズを綺麗にする道具が一通り揃っています。付属のCD-ROMで映像が見れるのが良いです!あとは薬局で無水エタノールを買うだけ!

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

TomatoCMSをさくらに入れてみた

0
Filed under CMS
Tagged as , , , ,

ちょっとしたサイトを作ろうと思い、WordPress以外で何かCMSがないかと思い、いくつか探してみたところ、TomatoCMSというのが気になり、ちょっと入れてみてテストしてみました。
テストしたのはさくらインターネットのレンタルサーバです。

TomatoCMS

試したバージョンは2.0.2で、展開したファイルサイズは約29MBありました。また、さくらのレンタルサーバ側の設定は、PHPは5.2.0となっていました。
インストールに参考になるのは公式ブログでした。
展開したディレクトリの中身を、配置したい場所にそのままコピーします。
その後はインストールしたディレクトリに含まれる下記のようなインストールスクリプトを開き、実行します。
{CMS_Directory}/install.php
おおよそのインストールは問題なくできるのですが、下記の.htaccessの修正をしておかないと、実行時に問題が起きます。

.htaccessの修正点

RewriteEngineの仕組みを使っているのだが、さくらの場合、次の1行が必須らしく、これがないと実行時にパスが処理されずうまくいかないので、これだけ.htaccessに追記しておきます。
RewriteBase /

これが設定されていないと、{CMS_URL}/admin というのが{CMS_URL}/index.php?admin という処理に置き換えることが出来ません。

管理者ログインする

管理者としてログインするには、下記のURLにアクセスします。
{CMS_URL}/admin
管理者の初期ユーザー名とパスワードはadmin, adminに設定されています。
ここでうまくアクセス出来ない場合、上記.htaccessの設定の項目等を確認してみてください。

php_zip

ログインしてみると、php_zipが入っていないという表示が出ていました。
これは新しいプラグインとかをインストールするときに必要になるようですが、今回はとりあえ ず 放置して先に進めました。

パスワード変更とTomatoCMSのシステム概要

まずは、このパスワードを変えようとしたのですが、いきなりつまづくこととなりました。
[Account]メニューの[change password]を選ぶと、Resource ‘core:user’ not foundと表示されるのです。
この表示はTomatoCMSの特徴と知るのですが、最初の状態では全ての機能がOFFになっていて、まずはそれをONにしていくことから始まります。
なんと初期状態ではパスワード変更などの機能もOFFになっているのです!
各種機能をONにするためには、上記のadminページのメニューから[User]→[Privilege]メニューを選びます。

その中の[core]→[Manage users]の右側にある[Add]リンクをクリックします。
こんな感じで、片っ端から[Add]していきます。必要に応じて、と書きたいところですが、正直最初の段階でこれを適切に選ぶことは不可能ですよね。
もう一度、パスワード変更をおこないます。[Account]メニューの[change password]を選ぶと、パスワード変更画面が出てきますので、ここで変更します。

コンテンツを作っていく

続いて、各種コンテンツを設定してみたいと思いますが、まずはトップページに表示しているコンテンツのレイアウトについていじってみます。
[Extend]メニューの[Template]を選んでみます。この中には、各種テンプレートが表示されるようですが、デフォルトでは2つしかありません。そのうち一つが使用されているので、そのテンプレートの[List of pages]リンクをクリックします。
ここに現在あるページの全てがあり、”home”と名付けられURIに”/”が設定されたページが、トップページとなっています。
右側にあると[Edit Layout]というボタンをクリックすると、レイアウト編集画面になります。
[Layout]、[Widget]、[Output]という3つのタブがあります。
Layoutでは960 Grid Systemという仕組みが使われており、最大12カラムとなっているのを任意のカラム幅でWidgetを配置する仕組みがわかりやすいインターフェイスで作られています。
その中にWidgetを配置して、各Widgetの設定をしていく、という仕組みです。

こんな感じで作っていく、という流れが、ここまでで理解できました。

やりたかったこと

実はこのCMSを選んだ理由の一つは”Multilingual Support”というキーワードをウェブで見たからだ。
でも、そこのところはいまいち分からずじまい。
[Custome]→[Language]のメニューを選んでみても、そこで設定できそうなのは各コンテンツのメニュー名ぐらい?そこがちょっと分からなかったのと、テンプレートデザイン修正の手順を把握するのも1日とかでは探しきれなかったので、TomatoCMSの調査はここまで。
日本語は問題なく通ったりしたのですが、公式サイトの他にあまり情報がなかったのが残念でした。
このエントリを見て誰かがトライして情報を増やしてくれたら、私も再度トライしてみようかな。


[AD]

↓TomatoCMSで使われているフレームワークはZendFramworkです。

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。

↓こちらもZendFrameworkの入門書。こういうフレームワークの知識はこれから重要ですね。

PHPフレームワーク Zend Framework入門

著者/訳者:藤野 真吾

出版社:ソーテック社( 2007-09-13 )

定価:

単行本 ( 336 ページ )

ISBN-10 : 4881665936

ISBN-13 : 9784881665930