Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • Archive for 1 月, 2008

    GoogleSitemapを作成するPHP Cakephpでも~

    金曜日, 1 月 18th, 2008

    自動で全部だしたかったんですが、できなそうだったので
    せめてってことで、 URLリストを渡したらそれをsitemapにするものをつくっていました。
    まあ必要があって作成していたので、一応公開しておきます。
    たいしたものじゃないですが。
    Class.Sitemap.zip

    一応googleのSitemapの説明のとか書いた前の記事
    http://neoinspire.net/archives/category/seo/page/4

    使い方

    ・前準備

    .htaccessで

    RewriteRule sitemap.xml$ sitemap.php

    として
    /sitemap.xml
    でsitemap.phpが呼ばれるようにする。

    ・PHP作成

    sitemap.phpを作って

    require(Class.Sitemap.php);

    //URLデータ作成
    $array[0]['url'] = “http://www.a.com”; //url
    $array[0]['lastmod'] = “2008-01-01″; //LastModified Date
    $array[0]['changefreq'] = “daily”; //Change Frequency
    $array[0]['priority'] = “0.5″; //Priority

    //以下必要なだけArrayに突っ込む
    $array[1]['url'] = “http://www.a.com”;
    $array[1]['lastmod'] = “2008-01-02″;
    $array[1]['changefreq'] = “monthly”;
    $array[1]['priority'] = “0.5″;

    //クラスを呼び出してGO
    $Sitemap = new Sitemap();
    $Sitemap->create($array);
    $Sitemap->output();

    こんな感じの中身を書く。
    これで Arrayをバラしてsitemapっぽいxmlを吐き出します。

    ちなみに中では headerコマンド使ってますので、一切のprintとかができません。

    CakePHPで使うには

    1:
    /app/webroot/files/
    にClass.Sitemap.phpをおく

    2:
    /app/webroot/.htaccessに

    RewriteRule sitemap.xml$ sitemap.php

    を追加する。

    3:
    /app/webroot/sitemap.phpを作る

    sietmap.phpは

    require(/files/Class.Sitemap.php);

    $array[0]['url'] = “http://www.a.com”; //url
    $array[0]['lastmod'] = “2008-01-01″; //LastModified Date
    $array[0]['changefreq'] = “daily”; //Change Frequency
    $array[0]['priority'] = “0.5″; //Priority

    //以下必要なだけArrayに突っ込む
    $array[1]['url'] = “http://www.a.com”;
    $array[1]['lastmod'] = “2008-01-02″;
    $array[1]['changefreq'] = “monthly”;
    $array[1]['priority'] = “0.5″;

    $Sitemap = new Sitemap();
    $Sitemap->create($array);
    $Sitemap->output();

    こんなかんじ!

    これで http://www.a.com/sitemap.xml
    でsitemapがみれるはずです。

    Class.Sitemap.zip

    これはすごい!写真から顔を抽出するAPI

    水曜日, 1 月 16th, 2008

    http://kaolabo.com/webapi

    28日になったら使い倒そう。。
    絶対面白いこれ!

    CakePHP 1.2で トップページにキャッシュを入れる

    木曜日, 1 月 10th, 2008

    あちこちみてたんですが、やっぱりコアに手を入れるしかなさそう。

    1.1だとこれかな。
    http://raminasser.com/category/cakephp/

    >>一応対策は書きましたが、 コアをいじらないでできる方法があったら教えて欲しいです。

    問題は2点

    1個目はCache読み込み部分

    /cake/dispatcher.php の Line638
    $filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;

    ようは $_SERVER['REQUEST_URI'] を convertSlash したものがキャッシュ名になるので、
    http://www.a.com/ の場合の REQUEST_URI = / を convertSlash した null がキャッシュファイル名になってしまうわけです。

    なのでエラーになってキャッシュが読み込めない。

    2個目はCacheロード部分

    /cake/view/view.php の Line808
    $cache->here = $this->here;

    ようは dispatcherで作成された $this->here を持ちまわしてそのままファイル名にするわけです。
    なので、キャッシュを書き出すだけ(読み込まない)でよいのなら
    controllerに

    $this->here = “/コントローラ名/”;

    をつけたすだけでOKです。

    まあ これじゃあ役に立たないので・・・

    ちゃんとキャッシュが動くようにすると

    こうなります。

    /cake/dispatcher.php の Line638の
    $filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;
    この文の上にこれを付け足す

    //例は toppages_controller を / にしている場合
    if($_SERVER['REQUEST_URI']==”/”){
    $url = “toppages”;
    $this->here = “/toppages/”;
    }

    コアライブラリにハードコーディングですが、これで / もキャッシュできるようになります。

    2008/10/13 05:55:14