Grav アクセスログのマルチサイト対応

Gravにはdefaultでシンプルかつ必要十分な管理画面(adminプラグイン)が用意されています。

そして管理画面のダッシュボードには統計(log)情報が用意されています。

機能としては単純にPVを日、週、月別にロギングしてくれるようです。

ただ、この機能はマルチサイトに対応していません。マルチサイト構成にしてもすべてのサイトのアクセスが記録されてしまい、どのサイトで確認しても同じ数値が表示されてしまいます。

このままではちょっと使えないので、サイト毎(ドメイン毎)に記録されるようにカスタマイズします。

アクセスログは [grav_root]\user\plugins\admin\classes\popularity.php が記録しています。

File:popularity.php
~~~
    public function __construct()
    {
        $this->config = Grav::instance()['config'];

//        $this->data_path     = Grav::instance()['locator']->findResource('log://popularity', true, true);
//      ログファイルのpathにhost情報(domain)を追加するように変更
        $this->data_path     = Grav::instance()['locator']->findResource('log://'.$this->config['environment'], true, true);
        $this->daily_file    = $this->data_path . '/' . self::DAILY_FILE;
        $this->monthly_file  = $this->data_path . '/' . self::MONTHLY_FILE;
        $this->totals_file   = $this->data_path . '/' . self::TOTALS_FILE;
        $this->visitors_file = $this->data_path . '/' . self::VISITORS_FILE;

    }
~~~

これで、[grav_root]\logs\ 配下にサイト毎(domain毎)のフォルダが作成されて、その中にlogデータが格納されます。

まあ、logといって単純なPVなので大して参考にはなりませんが、マルチサイト的にはこのほうがいいということで(´∀`)

きちんとした統計データが必要な場合はgoogleアナリティクスの導入が正解かな。それ用のプラグインや対応したテーマもあるしねー(。・ω・)ノ゙

Last edited: 2024-07-31 01:23