2009年2月21日土曜日

 

【jQuery】トピック

イベント

ready()

DOMがロードされて操作・解析が可能になったタイミングで関数を実行する。

/* DOMロード完了後に実行 */
$(document).ready(function(){
 // ここに実際の処理を記述します。
 });

onload()」イベントをBODYタグに指定すると動かないので注意。

完全に「onload()」イベントの代わりにはならないので、「onload()」イベントのタイミングで実行したい処理は「jQuery.event.add()」を使う。

/* onloadイベントを追加 */
jQuery.event.add(window, "load", function(){
/* ここに処理を書く*/
 });

たくさんイベント使うなら以下のようにちょっと楽する。

/* jQuery.event.add()改善 */
function addOnLoadEvent(handler) {
  jQuery.event.add(window, "load", handler);
}
ready(fn) - jQuery 1.3.1 日本語リファレンス
JavaScript/jQuery/readyじゃなくてonloadイベントに関数を追加したい -
load()
/* load()でhell.htmlを読み込む */
$("#target_ajax_load").load("hello.html");

第2引数にPOSTの値を与えられる。省略されるとGETになる。

/* load()でPOSTリクエストをhell.cgiに与え結果を得る */
$("#target_ajax_load").load("hello.cgi", {
 name: "mikage",
 pageid: 3
 });

自動でGETパラメータが付けられるので「$.ajaxSetup()」メソッドでキャッシュしないように指定。


$.ajaxSetup({ cache: false }); $("#target_ajax_load").load("hello.html");

コールバック関数を指定することも出来る。ロード完了のタイミングで実行される。

load() - jQuery 開発者向けメモ - 基本・サンプル
・デモあり

関数

each()

全ての要素にコールバック関数を実行する。

/* liタグにexampleクラスを追加する */
$("li").each(function(){
  $(this).toggleClass("example");
});
each(callback) - Query 1.3.1 日本語リファレンス
セレクトのリストを取得
/* select要素の取得 */
$('#selectList').val();
jQueryを良くする25のTIPS > jQueryの関数を利用しよう - to-R
data()

dataメソッドはDOM要素にデータをストレージしておく為のメソッド。

Queryのコードを良くする5つのTIPS > DOM中にデータを保存できるdataメソッドを使おう - to-R
jQueryを良くする25のTIPS > dataメソッドを状態を保存し利用しよう - to-R

ハック

「,」区切りでセレクタ複数指定
/* 改善前 */
function del(){
  $("#ls1").val("");
  $("#ls2").val("");
  $("#ls3").val("");
}

以下のようにも書ける。

/*改善後 */
function del(){
  $("#ls1,#ls2,#ls3").val("");
}
jQueryによるJavaScript入門 - Re:Creator’s Kansai
ready()
/* 改善前 */
$(document).ready(function(){alert('hoge');})

次の様に書ける。

/* 改善後 */
$(function(){alert('hoge');})
Re:一晩で覚えるjQueryの逆引き基礎サンプル7つ -
キャッシュを使う
  1. 何度も同じセレクタを実行しない
  2. クラスだけを指定するのは禁止
  3. #idを積極的に使う
  4. 途中までの結果を再利用する
  5. 子供セレクタ(>)を使うと速くなることがある

無駄な検索をさせないという話。

/* 改善前 */
$("div.foo").addClass("bar");
$("div.foo").css("background", "#ffffff");
$("div.foo").click(function(){alert('foo');});

3つのコードの前半にあるセレクタ部分は同じ処理を繰り返してるので無駄。

/* 改善後 */
var foos = $("div.foo");
foos.addClass("bar");
foos.css("background", "#ffffff");
foos.click(function(){alert('foo');});

jQueryのメソッド・チェーンを使うと更に良い。

/* メソッド・チェーン */
$("div.foo")
 .addClass("bar")
 .css("background", "#ffffff")
 .click(function(){alert('foo');});

子供セレクタ(>)を使うと速くなることがある」も必要なければ孫要素まで検索させないようするため。

クラスだけを指定するのは禁止」「#idを積極的に使う」はクラス指定の検索が遅いから。

/* 改善前 */
$(".foo").css("display", "none");

全ての要素のクラス名を調べることになるので要素の指定もする。

/* 改善後 */
$("div.foo").css("display", "none");

更に「#id」を使うともっと良い。「getElementById()」があるし。

jQuery を高速に使う CSS セレクタの書き方 - てっく煮ブログ
JSクラスを使ってJavascriptオフ環境に対応

HTML要素にJSというclassを追加する。

/* JSクラス */
$('HTML').addClass('JS');

CSSで非表示にしておく。

/* JSクラスのCSS */
.JS #myDiv{display:none;}

そうするとJavaScriptがonの環境では「#myDiv」を閲覧できない。
「#myDiv」にはJavaScripがoffの場合でもすべてコンテンツが閲覧できるような内容にする。

画像の読み込み完了を知る
/* 画像ロード完了を通知 */
$('#myImage').attr('src', 'image.jpg').load(function() { alert('Image Loaded'); });
noconflict設定でJSライブラリの共存

JSライブラリは「$」を使うので競合しないようnoconflict設定で変更する。

/* $の代わりに$jを設定する */
var $j = jQuery.noConflict(); $j('#myDiv').hide();
Google AJAX Libraries APIを利用

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
 // Load jQuery
 google.load("jquery", "1.2.6");
 google.setOnLoadCallback(function() {
 // Your code goes here. });
 </script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
jQueryを良くする25のTIPS > Google AJAX Libraries APIを利用しよう - to-R
処理結果をHTMLタグで囲む

早いらしい。

/* liタグで囲む */
var myList = $('.myList');
var myListItems = '<ul>';
for (i = 0; i < 1000; i++) {
  myListItems += '<li>This is list item ' + i + '</li>';
}
myListItems += '</ul>';
myList.html(myListItems);
jQueryを良くする25のTIPS > 1つの要素でwrapする為のテクニック - to-R
セレクタにコンテキストを与える

無駄な検索をしないように。

/* 改善前 */
var selectedItem = $('#listItem' + i);
/* 改善後 */
var selectedItem = $('#listItem' + i, $('.myList'));
jQueryを良くする25のTIPS > セレクタにコンテキストを与えよう - to-R
eventデリゲート
/* 改善前 */
$('#myTable TD').click(function(){ $(this).css('background', 'red'); });

イベントが増えるとその分用意しなくちゃいけない。

/* 改善後 */
$('#myTable').click(function(e) {
 var clicked = $(e.target); clicked.css('background', 'red');
});

eはクリックされた要素の情報を含むコンテンツ。

jQueryを良くする25のTIPS > eventデリゲートについて学ぼう - to-R
チェーン・メソッド
$('myDiv').removeClass('off').addClass('on');

異なる要素に指定を行いたい場合はfind()とend()を利用する。

/*  */
$('#myTable')
 .find('.firstColumn')
       .css('background','red')
 .end()
 .find('.lastColumn')
        .css('background','blue');
jQueryを良くする25のTIPS > チェーンメソッドを利用しよう - to-R
HTMLのコンテンツの値をフラグにする
classに情報を設定しておこう - to-R
膨大なデータやフォームなどをjQueryで追加する
jQueryを良くする25のTIPS - to-R
> ページが読み込まれてからHTMLを修正する
> 読み込みが遅いコンテンツはSEO効果が薄い

参考書

jQuery Cookbook
jQuery Cookbook

jQueryで作る Ajaxアプリケーション
jQueryで作る Ajaxアプリケーション

CSS + jQuery Webデザインテクニック
CSS + jQuery Webデザインテクニック

ラベル:


2009年2月14日土曜日

 

メールフォーム - PHPmailer+xajax

Xajax : Downloads - Xajax
PHPMailer : Download - SourceForge.net

Xajax

地方で活動するweb制作者の日々を綴るblog
PHP+xajaxでお気軽Ajaxアプリケーション作成(1) ~インストール/Hello World 【ver 0.5対応版】
PHP+xajaxでお気軽Ajaxアプリケーション作成(2) ~フォームの操作
PHPプロ!ニュース
XajaxとPHPmailerを使用したお問い合わせフォーム

ダウンロードしたら解凍したディレクトリから「xajax_core/」「xajax_js/」をアップする。
使い方はPHPファイルから「xajax.inc.php」を読み込む。「Xajax compiled」をダウンロードしたら「xajaxAIO.inc.php」。

include './xajax_core/xajax.inc.php';
 // Xajax compiled Ver.
include './xajax_core/xajaxAIO.inc.php';
/* PHP */

<?php
function myFunc($post){
    $objResponse = new xajaxResponse();
    // HTML要素書き換え予約
    $objResponse->assign('contents', 'value', $post['val'];
    // alert() 実行予約
    $objResponse->alert('running!');
    // スクリプト実行
    return $objResponse;
}

$xajax = new xajax();
// 関数
$rqst =& $xajax->register(XAJAX_FUNCTION, 'myFunc');
// フォームの値をセット
$rqst->setParameter(0, XAJAX_FORM_VALUES, 'myForm');
$xajax->processRequest();
/* HTML */

<form id="myForm" >
  <input type="text" name="val" id="val" value="39" size="5" /> 
  <input tyle="text" name="answer" id="answer" value="" size="5"></span><br />
  <input type="button" onclick='<?php $rqst->printScript(); ?>'  value="CLICK" />
</form>

$xajax->processRequests()」ではないので注意。
関数で最後に 「return $objResponse;」が返されて初めて、Ajaxが実行される。ブラウザでエラーを確認しづらい。「setFlag('debug', true);」という話もある。

PHPmailer

PHPで日本語メールを送る - 応用編 (添付ファイル、HTMLメール) -

ダウンロード、解凍したら「class.phpmailer.php」が入ってるディレクトリごとアップしてPHPから読み込む。

require("./phpmailer/class.phpmailer.php");

文字化けする時は「class.phpmailer.php」で文字コードセット。

/* class.phpmailer.php */
  public $CharSet           = 'UTF-8';

使い方は以下。XREAではコレで送信した。

/* phpコード */
 mb_language("japanese");
 mb_internal_encoding("UTF-8");

 $email = "test@example.com";
 $from = "test";
 $subject = "Subject";
 $msg = "message";
 $mail = new PHPMailer();

 $mail->From = "info@example.com";
 $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
 $mail->AddAddress( $email);
 //  $mail->AddReplyTo($email, $from);
 $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
 $mail->Body = mb_convert_encoding($msg"JIS","UTF-8");

 if ($mail->Send()) {
   $error = "送信完了";
   $show_form = false;
 } else {
   $error = "送信エラー:".$mail->ErrorInfo;
 }

$mail->ErrorInfo」でエラー情報取得。
$mail->CharSet」があるので、そっちでUTF-8をセットしてみたが「class.phpmailer.php」に設定しないと化ける様だ。
外部SMTP認証してメール送信する。試してないので注意。GmailのSMTP設定。

/* SMTP認証 */
 mb_language("japanese");
 mb_internal_encoding("UTF-8");
 $email = "test@example.com";
 $from = "test";
 $subject = "Subject";
 $msg = "message";
 $mail = new PHPMailer();

  $mail->IsSMTP();  
  $mail->Host = "smtp.gmail.com";  
  $mail->SMTPAuth = true;
  $mail->Username = "example@gmail.com";
  $mail->Password = "password";

 $mail->From = "info@example.com";
 $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
 $mail->AddAddress( $email);
 //  $mail->AddReplyTo($email, $from);
 $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
 $mail->Body = mb_convert_encoding($msg"JIS","UTF-8");

 if ($mail->Send()) {
   $error = "送信完了";
   $show_form = false;
 } else {
   $error = "送信エラー:".$mail->ErrorInfo;
 }

PHPmailer + Xajax

A (safe) contact form using Xajax and PHPmailer - Xajax
/* PHPmailer + Xajax */
<?php
include './xajax_core/xajax.inc.php';
include ('./phpmailer/class.phpmailer.php');
mb_language("japanese");

mb_internal_encoding("UTF-8");
$form = '<form id="myForm" name="myForm">
            <div>
              <label for="name">Name</label>
              <input name="name" type="text" id="naam" value="" size="25" />
            </div>
            <div>
              <label for="email">E-mail</label>
              <input name="email" type="text" id="email" value="" size="25" />
            </div>
            <div>
              <label for="msg">Message</label>
              <textarea name="msg" id="msg" cols="45" rows="5"></textarea>
            </div>
            <div style="border-top:1px solid #CCCCCC;padding-top:5px;">
              <label for="subbtn" style="text-align:right;">
              <input type="button" id="subbtn" value="Submit" onclick="xajax_myFunc(xajax.getFormValues(\'myForm\'));" /></label>
            </div>
          </form>';
function myFunct($get) {

    global $form, $error;
    $error = '';
    $objResponse = new xajaxResponse();

    $show_form = true;
    if (!empty($get['email']) && !empty($get['msg']) && !empty($get['name'])) {
        if (preg_match("/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i", trim($get['email']))) {
            $email = preg_replace("/\r\n/", "", $get['email']);
            $from = preg_replace("/\r\n/", "", $get['name']);
            $mail = new PHPMailer();

            $mail->From = "Webmaster@example.com";
            $mail->FromName = mb_encode_mimeheader(mb_convert_encoding("Webmaster","JIS","UTF-8"));
            $mail->AddAddress( $get['email']);
            $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($get['name'],"JIS","UTF-8"));
            $mail->Body = mb_convert_encoding($get['msg'],"JIS","UTF-8");
            if ($mail->Send()) {
                $error = "The form is submitted and the mail is send.";
                $show_form = false;
            } else {
                $error = "There was a problem while sending the mail, please try again".$mail->ErrorInfo;
            }
        } else {
            $error = "The entered e-mail address is not valid.";
        }
    } else {
        $error = "At least one of the fields is empty...";
    }
    $data = ($show_form!=true) ? '<p class="contactMsg">'.$error.'</p>' : '<p class="contactMsg">'.$error.'</p>'.$form;
$objResponse->alert($data);

    return $objResponse;
}
$xajax = new xajax();
//$xajax->registerFunction('myFunc');
$rqst =& $xajax->register(XAJAX_FUNCTION, 'myFunc');
$rqst->setParameter(0, XAJAX_FORM_VALUES, 'myform');

$xajax->processRequest();
?>
<?='<?xml version="1.0" encoding="utf-8"?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />

<?php $xajax->printJavascript('./'); /* xajax_js のフォルダ位置を指定。<script>タグでwebページに読み込み*/ ?>
</head>
<body>
<?php echo '<div id="contact_result">'.$form.'</div>'; ?>
</body>
</html>

ラベル: ,


2009年2月12日木曜日

 

【symfony】テーブルの内部結合 - addJoin()

addJoin~テーブルを結合し、結合した先のカラムの条件でクエリを発行(2結合先まで) - symfonyでsymfuldaze

JobeetのようなDBがあった場合。
JobPeer.phpというモデルを生成した場合。

/* lib/model/JobPeer.php */
  static public function getWithCategory()
  {
    $criteria = new Criteria();
    $criteria->addJoin(self::CATEGORY_ID, CategoryPeer::ID, Criteria::LEFT_JOIN);
    return self::doSelect($criteria);
}

仕事情報と一緒にカテゴリ名も取得する。内部結合。
このメソッドをアクションから呼ぶ。

/* apps/frontend/modules/job/actions/actions.class.php */
<?php
public function executeIndex(sfWebRequest $request)
{
  $this->jobs = JobPeer::getWithCategory();
}

ビューでの使い方はおそらくこの様な。


      <table>
        <?php foreach ($jobs as  $job): ?>
          <tr>
            <td><?php echo $job->getLocation() ?></td>
            <td><?php echo $job->getPosition() ?></td>
            <td><?php echo $job->getCompany() ?></td>
            <td><?php echo $job->getCategory()->getName() ?></td>
          </tr>
        <?php endforeach; ?>
      </table>

get[結合するモデル]()->get[カラム]()な感じ。
更にテーブルを結合も可能だ。


 $c->addJoin(ItemPeer::CATEGORY_ID, CategoryPeer::ID, Criteria::LEFT_JOIN);
 $c->addJoin(CategoryPeer::BIG_CATEGORY_ID, BigCategoryPeer::ID, Criteria::LEFT_JOIN);

ラベル:


2009年2月7日土曜日

 

symfony1.2インストール - さくらサーバ・スタンダード

XREAが絶不調なのでサクラだ。
今度はお試しだけじゃなく正式使用しようかな。

コントロールパネルでPHPのバージョンを確認しておこう。デフォルトでPHP5(CGI版)だった。

参照

さくらインターネットでsymfonyをインストール - ueblog

PEARのローカルインストール

PEARをインストールするディレクトリを作成。

$ mkdir local/
$ cd local/

PEARをインストールするための「go-pear.php」をコピーして実行。

$ curl http://pear.php.net/go-pear > go-pear.php
$ php go-pear.php

すると

Welcome to go-pear!

とか出て、いくつか質問される。

If you wish to abort, press Control-C now, or press Enter to continue: 

Enter!

HTTP proxy (http://user:password@proxy.myhost.com:port), or Enter for none::

ENTER!

インストールするディレクトリとかパスの設定とか出てくる。

....
1. Installation prefix ($prefix) : /home/[account名]/local
2. Temporary files directory : $prefix/temp
3. Binaries directory : $prefix/bin
4. PHP code directory ($php_dir) : $prefix/PEAR
5. Documentation base directory : $php_dir/docs
6. Data base directory : $php_dir/data
7. Tests base directory : $php_dir/tests

1-7, 'all' or Enter to continue: 

変更したかったら番号を入力。注意するのは“1”のインストール・ディレクトリ。
変更無しなのでENTER!

Would you like to install these as well? [Y/n] : 

ヒット キー “Y”

Would you like to alter php.ini ? [Y/n] : 

「php.ini」を編集しないので“n”を入力。
インストールが完了。

ローカルにインストールしたPEARにパスを通す。

$ set path = (/sbin /bin $HOME/local/bin $HOME/bin /usr/local/bin/)

参照先の手順ではパスの最後「/usr/local/bin/」は無くて

#bash,zshなら
  export PATH=/bin:$HOME/local/bin:$PATH
#csh,tcshなら
  set path = (/sbin /bin $HOME/local/bin $HOME/bin)

「/usr/local/bin/」に元からのPEARコマンドがあるから読まないようしてるんだが、PHPコマンドもあるらしくこの後symfonyコマンドもPHPコマンドもエラーになったので後で追加した。

確認。

%pear -V
PEAR Version: 1.7.2
PHP Version: 5.2.8
Zend Engine Version: 2.2.0
Running on: ....

PEARもPHPのバージョンも大丈夫。PEARのバージョンが1.4以上でないとだめとか。
続いてsymfonyインストール。

PEARからsymfonyインストール

PEARチャンネル使ってsymfonyインストールだよ。(XREAのPEARはsymfony1.1のチャンネルしかなかった気がするよ)

symfonyのチャンネル追加。

$ pear channel-discover pear.symfony-project.com

成功。

Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

symfonyインストール。

$ pear install symfony/symfony

インストール中...

downloading symfony-1.2.4.tgz ...
Starting to download symfony-1.2.4.tgz (2,710,310 bytes)
........................................................done: 2,710,310 bytes

install ok: channel://pear.symfony-project.com/symfony-1.2.4

インストール成功。

確認。

$ symfony -V

symfony1.2が入ってた。

symfony version 1.2.4 (/home/[account名]/local/PEAR/symfony)

「~/local/bin/」にsymfonyコマンドがあるので先ほど設定したパスで読み込まれるはず。
もしエラーだったらもう一度同じ「set ~」を実行してみる。

プロジェクト生成後

プロジェクトをsymfonyコマンドで作った後、プロジェクト・ディレクトリ内「web/」とWebルート・ディレクトリ「~/www/」にシンボリックリンク。

$ ln -s ~/symfony/sample/web ~/www/sample

さらにsfの画像やデバッグツールを利用するため、シンボリックリンクを作成。

ln -s ~/local/PEAR/data/symfony/web/sf ~/symfony/sample/web/sf

さくらサーバでは「.htaccess」の「Options」が利用できないのでコメントアウトし、「RewriteBase」のコメントを外す。

    #Options +FollowSymLinks +ExecCGI
    RewriteBase /

さくらサーバの「php.ini」が「magic_quotes_gpc=on」がデフォルトなので、コントロールパネルの「PHP設定の編集」でオフにする。

magic_quotes_gpc=off

これで完了。ブラウザからアクセスするとsymfonyデフォルトページが表示される。

おまけ

which [コマンド]

コマンドのパス

$ which symfony
  /home/[account名]/local/bin/symfony
echo $PATH

設定されたパスが表示される。

$ echo $PATH
  /sbin:/bin:/home/[account名]/local/bin:/home/[account名]/bin:/usr/local/bin

参考

あんまネットやらないのにWeb系の研究やってるっていうwww
さくらサーバーにsymfonyを入れてみた
さくらサーバーでsymfonyを動かしてみた
さくらのレンタルサーバーにsymfonyをインストール - おやぢ組
さくらでSymfony - Making The Road Blog

ラベル:


2009年2月4日水曜日

 

【symfony】1.2系インストール メモ

1.symfony 1.2 入門(インストール準備) - Linux LABS
PEARかtar.gzか。レンタルサーバなどroot 権限がない場合は tar.gz をダウンロードしてインストール。

ラベル:


 

【symfony】チュートリアル - symfonyでTwitter

Knowledge Database IT - タグ[symfonyでTwitter]
symfonyでTwitterを作ってみる連載。おそらく1.1系。

ラベル:


2009年2月3日火曜日

 

WORDPRESS MU インストール - land.toサーバ

ロリポップでWordpress muをインストールする - 人間学とコンピュータを極める。
WordPress MUのインストール(1)Comments - satake7’s memo

ダウンロード

WordPress MU
download - WordPress MU

ここからZIPファイルを取得。現在最新は2.7。

日本語化ファイル
wpmu-ja - Google Code

現在、2.7の日本語リソースが作成中なので2.6.2 用で代用。
(この後、2.6.5をインストールし直したが、ざっと使った感じはエラーや表示のずれなどなかった。)

アップロード

  1. ダウンロードしたファイルを解凍(「wordpress-mu/」)
    ※ここでは解凍して出来たディレクトリ「wordpress-mu/」を「wp-mu/」にリネーム
  2. 日本語リソース「wpmu-262-ja.zip」を解凍(「ja.mo」と「ja.po」が出来る)
  3. 「wp-mu/wp-content/」ディレクトリ内に「languages/」ディレクトリを作成して「ja.mo」「ja.po」を配置
  4. PHPのセキュリティ対策として「wp-mu/htaccess.dist」ファイルの先頭に以下を追加。*
    /* wp-mu/htaccess.dist */
    php_flag register_globals 0
    php_flag display_errors 0
    「エラーメッセージを表示しない」「グローバル変数を許可しない」ということを設定している。
    「500 internal error」になることもあるので、そのときはインストール後に生成された「wp-mu/.htaccess」から2行を削除して保存。
    「php.ini」で設定する場合は以下。
    /* php.ini */
    display_errors = Off
    register_globals = Off
    
    MySQLのデータベースの文字コードがUTF-8じゃない場合は以下も追記。
    php_flag mbstring.encoding_translation off
    php_value default_charset "UTF-8"
  5. land.toサーバのための設定
    ルートディレクトリの「php.ini」で文字コードがEUC-JPになっているのでUTF-8に変更(日本語が保存できない)。
    /* /php.ini */
    // L.1128~
    mbstring.internal_encoding = UTF-8
    // L.1137~
    mbstring.http_output = UTF-8
    
  6. サーバにアップロードする。
  7. 「wp-mu/wp-contents/」のパーミッションを「0777」に変更。
    ※インストール後「0755」に戻す

インストール

「http://www.example.com/wp-mu/」にアクセス。

ブログ アドレスの設定

「Blog Address」の設定を選択
・サブドメイン(blog.example.com)
・サブディレクトリ(example.com/blog/)
ここでは「http://www.example.com/wp-mu/」で表示するようにサブディレクトリを選択。

データベースの設定

「Database」の設定にデータベース名とDBユーザー名、DBパスワード、ホスト名(localhost)を入力。

サーバアドレスの設定

「Server Address」はそのまま。

サイトの詳細

「Site Details」にブログタイトルとE-mailを設定。

以上が入力したら「install」開始。
インストールが成功したら、忘れずにパスワードをコピーして「log in」ボタンからログインする。

サイトの設定

パーミッション変更

「wp-mu/wp-contents/」のパーミッションを「0755」に戻す。

サイトの日本語化

「Setings > General > Blog language:』で『japanese」を選択して「Save Changes」ボタンをクリック。
インストール時に生成された「wp-mu/wp-config.php」を編集。

/* wp-mu/wp-config.php */
// L.35~
define ('WPLANG', 'ja');
パスワード変更

「ユーザー > あなたのプロフィール > パスワード」から変更。

satake7’s memo
2009-01-12 WordPress MUのインストール(3)
マルチドメイン設定。
2009-01-13 WordPress MUのインストール(4)
メールの設定。登録メールとか送られない。

Wordpress MU 2.6.5

日本語リソースに合わせて2.6系を入れなおした。ファイルが見つからないので上記リンクから。フランス語だろうがWordPressもMUもおそらく全てのバージョンがある。「wordpress-mu/wp-contents/languages/」にあるリソース「fr.mo」などを削除すれば英語になる。

管理画面は2.7の方が格好良い。使えるCoolなWordPressテーマって感じ。
でも2.6.5の方が使いやすい気がした。リソースの対応のせいか。

Wordpress MU 2.3.3での問題
・www. つきのドメインにインストールできない(www. なしドメインにリダイレクトされる)
・ カテゴリースラッグがない

PHP === 安全上の理由のため、PHPが次のように設定されていることがとても重要です: 1. エラーメッセージをブラウザーに表示させない。この機能はたいていの場合無効になっていますが、何かをテストするために有効にしてそのまま忘れてしまうことがあります。 2. グローバル変数は必ず無効にする事。これはセキュリティに敏感な管理者が最初に行なう事の一つです。最近ではデフォルトで無効になっています。 3. ブログの登録を制限する場合は、制限する登録用メールのドメインを管理画面で設定してください。 これの最も簡単な設定方法は、インストールで作成される.htaccessファイルを利用することです。まだWPMUをインストールしていないのなら、このディレクトリにあるhtaccess.distファイルを編集して、次の2行を一番上に追記します: php_flag register_globals 0 php_flag display_errors 0 これはすべての環境で作動するわけではないのでデフォルトのファイルには含まれていません。作動しなければ、インストール後に不可解な”500 internal error”が表示されるでしょう。その場合はインストールしたディレクトリの”.htaccess”ファイルを開いて、一番上にある上記の2行を削除して保存してください。 詳細はこちらを参照してください:http://ie.php.net/configuration.changes .htaccessファイルを編集したくない場合はphp.iniを変更する必要があります。それがサーバのどこにあるのかを説明するのはこの READMEの範囲を超えていますが、もし共有サーバをお使いなら、その変更にはrootもしくは管理者権限が必要なのでphp.iniにはアクセスできないかもしれません。 もしroot権限をお持ちなら”locate php.ini”を試すかチェックインします: /etc/php4/apache2/php.ini /usr/local/lib/php.ini php.iniを開いたらregister_globals とdisplay_errorsに関するセクションを探します。次のように両方ともオフになっていることを確認してください: display_errors = Off register_globals = Off php.iniの設定を更新するには変更後にApache を再起動する必要があります。

ラベル: ,


This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google