WEBの勉強ノート
Loading

Javascript の字句構造

2009 年 8 月 13 日 木曜日

文字コード

Unicode を使用。ECMAScript v3 標準ではプログラム中に Unicoded 文字を使うことができる。v1, v2 ではコメントと文字列リテラルのみ Unicode 文字を使うことができる。

大文字と小文字

区別される。オブジェクトやプロパティは HTML と同じ名前のものが多いが、基本小文字で表記する。

空白スペースと改行

空白、タブ、改行コードは無視される。

文と文の区切り (セミコロン)

通常、文末にセミコロンを入れる (;)

コメント

//コメント
/*コメント*/

識別子 (変数名、関数名)

先頭の文字に数字を使うことができない。予約語も使うことができない。

予約語

break
case
catch
continue
default
delete
do
else
false
finally
for
function
if
in
instanceof
new
null
return
switch
this
throw
true
try
typeof
var
void
while
with

ECMA 拡張用の予約語

abstract
boolean
byte
char
class
const
continue
debugger
double
enum
export
extends
final
float
goto
implements
import
int
interface
long
native
package
private
protected
public
short
static
super
switch
synchronized
throws
transient
voatile

v4 草案に追加された予約語

as
is
namespace
use

その他避けたい識別子

arguments
Array
Boolean
Date
decodeURI
decodeURIComponent
encodeURI
Error
escape
eval
EvalError
Infinity
isFinite
isNaN
Math
NaN
Function
Object
parseFloat
parseInt
RangeError
ReferenceError
Number
String
SyntaxError
TYpeErrror
undefined
unescape
RegExpURIError

php で JSON を使う php-json

2009 年 8 月 7 日 金曜日

CentOS5.3、apache2.2.3、php5.1.6 の環境。php5.2.0 からは標準で組み込まれているため必要ない。今回は、php 5.2 未満の環境で、JSON を使えるようにするための php-json モジュールのインストール方法。

まず、モジュールのインストール

[root@centos ~]# yum install php-devel
[root@centos ~]# pecl install json

設定ファイルの設置・編集

[root@centos ~]# vi /etc/php.d/json.ini
extension=json.so

apache を再起動

[root@centos ~]# service httpd restart

phpinfo();で json の項目があることを確認

image

phpでjsonを扱う 「php-jsonのインストール」

JSON on RHEL & PHP 5.1.6

PHPでJSONしたい

WordPress ウィジットのタイトルに h2 を使わない方法

2009 年 7 月 30 日 木曜日

サイドバーのカレンダーや最新エントリ一覧などのウィジットのタイトルは、デフォルトでは h2 タグが使われています。SEO の面から考えれば、見出しとして認識させたい部分ではないので p など、任意のタグに変更したほうがいいような気がします。

ただし、ウィジットのタイトルはテーマで定義されているのではないようです。そこで、fuction.php に以下のコードを追加します。

if (function_exists('register_sidebar'))
register_sidebar(array(
'before_widget' => '<div class="widget">',
'after_widget' => '</div>',
'before_title' => '<p>',
'after_title' => '</p>',
));

ウィジットの前後のタグ、ウィジットのタイトルタグを上書きしています。


WordPress.日本語 : WordPress ウィジェット API

Perl のディレクトリパスの確認方法

2009 年 7 月 2 日 木曜日

CGI ではまり気味です。perl のパスの確認方法です。

[hsadmin@www ~]$ which perl
/usr/bin/perl

WordPress の ”ページ” で、任意のテンプレートを使う

2009 年 6 月 28 日 日曜日

WordPress を CMS として使う際、ページごとに別のテンプレートを適用させたい場合があります。たとえば、トップページだけ別のテンプレートにしたい場合とか。

方法は、任意の .php のテンプレートの最上部に、以下の記述を加える。

<?php
/*
Template Name: Top Page
*/
?>

すると、新規ページの作成画面や、ページの編集画面でテンプレートを選択できるようになります。

image

if の処理指定部分の { } を省略して : (コロン) を使う

2009 年 6 月 28 日 日曜日

<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

WordPress の default テーマの index.php を読んでいて、気になったので調べてみました。以下によると、if 文の処理を記述する部分の { } の代わりに : (コロン) を使用できるようです。

if (条件式)の後にコロン(:)を付けてその後に処理を記述します。

elseif や elseの後にもコロンです。

離れPHP島 : No12.もしも・・・だったら  —- if条件式

{ } を使う場合と : を使う場合、以下の:ような動作の違いがあるようです。

注意: 上の例のように波括弧を使用する限り、 elseif と else if はまったく同じだと考えてよいことに注意しましょう。コロンを使って if/elseif 条件を指定する場合は、 else if のように分割してはいけません。 分割すると、パースエラーとなってしまいます。

PHP 日本語ドキュメント : elseif/else if

WordPress のカスタムフィールドで title タグを補完

2009 年 6 月 15 日 月曜日

WordPress のカスタムフィールドを使って、title タグを設定するサンプルを作ってみました。header.php とかの title タグを以下のコードと置き換えます。

<title><?php
$title = get_post_meta($post->ID,title,TRUE);
if ($title == "") {wp_title('');}
else {echo $title;}
?> &laquo <?php bloginfo('name'); ?></title>

WordPress のカスタムフィールドを使ってmetaタグのキーワードを設定する方法

2009 年 6 月 15 日 月曜日

カスタムフィールドで、meta タグの “keywords” , “description” を入力できると楽しいなと思ったのでやってみました。まず、Wordpress のダッシュボードのカスタムフィールドで、それぞれ、”keywords” と “description” の名前のカスタムフィールドを作成しておきます。それから、下のコードを header.php の普段 meta タグを書いている場所に貼り付けます。

<meta name="keywords" content="<?php echo get_post_meta($post->ID,keywords,TRUE); ?>">
<meta name="description" content="<?php echo get_post_meta($post->ID,description,TRUE); ?>">

これだけで、meta タグの中に “keywords” と “description” を埋め込むことができました。若干気になったのが、もしカスタムフィールドに入れ忘れたら、キーワードが入っていない meta タグができてしまう。meta タグ自体がないのと、空欄の meta タグがあるのはどっちがましなんだろうかと。。細かいことですが。

で、カスタムフィールドが空欄の場合、meta タグ自体を表示させないパターンも作ってみました。

<?php $keywords = get_post_meta($post->ID,keywords,TRUE);
if (isset($keywords)) {
echo "<meta name="keywords" content="$keywords">\n";
} 

$description = get_post_meta($post->ID,description,TRUE);
if (isset($keywords)) {
echo "<meta name="description" content="$description">\n";
}
?>

追記。上記のコードでは、カスタムフィールドの keyword を空のままにした場合、キーワードが空欄の meta タグが出力されてしまい、失敗。で、if の条件を $keywords == “” にしてみると動きました。なんでだろ。こんな感じ↓

<?php
$keywords = get_post_meta($post->ID,keywords,TRUE);
if (!$keywords == "") {
echo "<meta name="keywords" content="$keywords">\n";
}
$description = get_post_meta($post->ID,description,TRUE);
if (!$keywords == "") {
echo "<meta name="keywords" content="$keywords">\n";
}
?>

同じようにすれば title タグとかもコントロールできそうですね。カスタムフィールドで入力したタイトル+サイト名、なんて使えそうな気がします。

Smarty の仕組み

2009 年 6 月 3 日 水曜日

非常に単純な Hello World の仕組みをまとめてみました。ブラウザからアクセスされる .php ファイルに Smarty が include(require) され、指定したテンプレートに変数の値が埋め込まれて表示される、一連の流れです。まとめずらく、若干見づらいですね。

image

Smarty のインストール

2009 年 5 月 31 日 日曜日

PHP の勉強を始めると、ひとつのファイルの中に html と php の記述がごっちゃり入って、わけがわからなくなってきます。もっとスマートにスマートにファイルを分けられないものかと思っていたら、あるんですね、テンプレートエンジンというものが。

調べると、楽天やサイボウズでも使われているようでおどろきです。

公式サイト・ドキュメントなど

ダウンロードは Smarty : Download から、日本語のドキュメントは Smarty – コンパイリング PHP テンプレートエンジン で確認することができるようです。

検証環境

環境はいつものとおり。ほんとにやってみて、動いたというレベルなので参考にはしないでください。

  • CentOS 5.3
  • Apache2.2
  • php5.1.6

Smarty のインストール

まずは、wget でダウンロードして解凍します。

[root@centos ~]# wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.25.tar.gz
[root@centos ~]# tar xvzf Smarty-2.6.25.tar.gz

解凍してできたフォルダをリネームします。

[root@centos ~]# mv Smarty-2.6.25 Smarty

Smarty 本体を格納するディレクトリを作成し、Smarty を移動します。

[root@centos ~]# mkdir /usr/local/lib/php
[root@centos ~]# mv Smarty /usr/local/lib/php/

Smarty 用のディレクトリの準備

Smarty で使用するテンプレートや、コンパイルされた PHP ファイルが格納されるディレクトリを作成します。これらのディレクトリはサーバ単位ではなく、コンテンツ単位で必要になるようです。*1

[root@centos ~]# mkdir -p /var/www/html/smarty
[root@centos ~]# cd /var/www/html/smarty
[root@centos ~]# mkdir templates templates_c configs cache

各フォルダやディレクトリに apache が書き込みや変更ができるようにパーミッションの変更を行います。

[root@centos ~]# chown -R apache:apache /var/www/html/smarty
[root@centos ~]# chmod 777 /var/www/html/smarty/templates_c
[root@centos ~]# chmod 777 /var/www/html/smarty/cache

php.ini を編集します。以下の編集を行うと、Smarty のライブラリファイルを呼び出す際に、フルパスではなく「require_once ‘Smarty.class.php’;」だけ書けばよいので簡潔になります。フルパスで指定してもいいけどね。php.ini を編集したら、httpd の再起動をしておきます。

[root@centos ~]# vi /etc/php.ini
(色々省略)
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
include_path = ".:/usr/share/pear:/usr/local/lib/php/Smarty/libs"
[root@centos ~]# service httpd restart

動作確認

サンプルの php ファイルを用意します。

[root@centos ~]# vi /var/www/html/index.php
<?php
require ('Smarty.class.php');

$smarty = new smarty();
$smarty->template_dir = '/var/www/html/smarty/templates';
$smarty->compile_dir = '/var/www/html/smarty/templates_c';
$smarty->cache_dir = '/var/www/html/smarty/cache';
$smarty->config_dir = '/var/www/html/smarty/configs';

$smarty->assign('name', '太郎');
$smarty->display('index.tpl');
?>

サンプルのテンプレートを用意します。

[root@centos ~]# vi /var/www/html/smarty/templates/index.tpl
<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, {$name}!
</body>
</html>

ブラウザから、index.php にアクセスすると

ss000000

とりあえず動いた。けど、まだよくわからないな?


*1 @IT : Smartyでテンプレートエンジンの威力を知る 「Smartyを動作させるには、PHPスクリプトとテンプレート以外に、4つのディレクトリ(tempalates/templates_c/configs/cache)を必要とします。これらのディレクトリはサーバ単位ではなく、コンテンツ単位で用意することが推奨されています。」


参考にしたサイト

@IT : Smartyでテンプレートエンジンの威力を知る