インストールメモ » 2007年04月

WordPressのサイトマップ出力プラグイン

Sitemap Generator Plugin for Wordpressから「dd-sitemap-gen.txt」をダウンロードして、「dd-sitemap-gen.php」にリネームして、wp-content/plugins内に保存する。
WordPress管理画面→プラグインに「Dagon Design Sitemap Generator」が追加されているので、有効化する。
その後、WordPress管理画面→投稿→ページ作成で、サイトマップ用ページを作成して、サイトマップを表示したい部分に

< -- ddsitemapgen -->

とタグを入れればサイトマップを出力してくれます。

WordPress管理画面→各種設定→DDSitemapGenで、各種設定を行なえます。

Filed under: WordPress — jun 2:33:29

cakePHPでPCと携帯で出力文字コードを変更する方法

携帯用のサイト用のビューをShin x blogさんのサイトを参考にして、設定しPC用と携帯用のサイトをビューだけを切り替える方法で運用しています。
そこで問題になるのが文字コードです。
私の場合、PC用のサイトはスクリプトの文字コードも出力文字コードもUTF-8で統一させる場合が多いのですが、携帯用のサイトの場合に出力文字コードをUTF-8にしてしまっては、最近の機種でしか見る事が出来ません。
そこでPC用と携帯用で文字コードを切り替えて利用しています。
PC用の場合には、上の通りUTF-8で統一して、携帯用の場合には、スクリプトの文字コードは全てUTF-8にして、出力時にShift_JISに変換しています。

詳しくは、/app/app_controller.phpのafterFilterで、文字コードをUTF-8からShift_JISに変換して出力して、beforeFilterで、入力文字の文字コードをShift_JISからUTF-8に変換しています。

class AppController extends Controller {

function beforeFilter() {
// 入力データの文字コード変換
if ((isset($this->params["webservices"])
&& $this->params["webservices"] == "Mobile") {
mb_convert_variables("UTF-8", "SJIS-win", $this->data);
}

// 出力データの文字コード変換
// afterFilter で文字コード変換するためにob_startで
// 出力のバッファを行なう
ob_start();

parent::beforeFilter();
}

function afterFilter() {
parent::afterFilter();

// バッファを取得して、出力バッファをクリア
$out = ob_get_clean();

if ((isset($this->params["webservices"])
&& $this->params["webservices"] == "Mobile") {
// 出力文字コードの変換
$out = mb_convert_encoding($out, "SJIS-win", "UTF-8");
}

echo $out;
}
}

これで、携帯用のビューの場合には、出力時にShift_JISに変換して出力し、入力文字はUTF-8に変換されます。
また/app/views/pages以下のページも同様に変換したい場合には、以下の様にする事で変換する事が出来ます。

class AppController extends Controller {

function afterFilter() {
parent::afterFilter();

// バッファを取得して、出力バッファをクリア
$out = ob_get_clean();

if ((isset($this->params["webservices"])
&& $this->params["webservices"] == "Mobile")
|| ($this->params["controller"] == "pages"
&& $this->params["action"] == "display"
&& isset($this->params["url"]["url"])
&& substr($this->params["url"]["url"], 0, 8 ) == "pages/m/")) {
// 出力文字コードの変換
$out = mb_convert_encoding($out, "SJIS-win", "UTF-8");
}

echo $out;
}
}
Filed under: CakePHP — jun 1:31:31

cakePHPのControllerのaddへの引数

通常、bake.phpでControllerを作成した場合には、addメソッドに引数はないので特に問題はないですが、

http://www……./posts/add

function add() {
:
}

独自にaddメソッドに引数を追加した場合、

http://www……./posts/add/1

function add($parentid = null) {
:
}

この様にaddメソッドに引数「1」を渡すとsave時に、idが「1」のデータを更新してしまうようです。
これを回避するには、saveの前に

$this->data[”Post”][”id”] = 0;

と、通常idに存在しない「0」を渡してあげてください。

Filed under: CakePHP — jun 2:16:59