Joomla 3.3をインストールしました。自分のページにアクセスしている間、ビジターカウンターが増えないようにしたいのですが。少なくともログインしているときは可能ですか?
Joomla 3.3をインストールしました。自分のページにアクセスしている間、ビジターカウンターが増えないようにしたいのですが。少なくともログインしているときは可能ですか?
回答:
次のようなプラグインを作成できます。
class plgContentReduceHits extends JPlugin
{
    public function onContentAfterDisplay($context, &$article, &$params, $limitstart)
    {
        if ($context == 'com_content.article' && JFactory::getUser()->id == $article->created_by && $params->get('intro_only'))
        {
            $db = JFactory::getDbo();
            $db->setQuery('UPDATE #__content SET hits = hits - 1 WHERE id = ' . $article->id);
            $db->execute();
        }
        return '';
    }
}
上記のプラグインは動作します。サイトにログインし、プラグインを有効にする必要があることは明らかです。
Joomlaの組み込みヒットカウンターについて話していると仮定すると、私が見た限りの答えは「ノー」です。これを実行するコードは非常に単純で、CMSでこれを適応させる実際の手段はありません。(キャッシュを有効にすると、コードはヒットカウンターをインクリメントしません...)
記事のview.html.phpファイルで現在行われていることは次のとおりです。
// Increment the hit counter of the article.
if (!$this->params->get('intro_only') && $offset == 0)
{
    $model = $this->getModel();
    $model->hit();
}
これが記事全体のロードの開始であることを確認するための基本的なチェック。その場合は、モデルをトリガーしてヒットを記録します。
モデルはこれを行います:
public function hit($pk = 0)
{
    $input = JFactory::getApplication()->input;
    $hitcount = $input->getInt('hitcount', 1);
    if ($hitcount)
    {
        $pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id');
        $db = $this->getDbo();
        $db->setQuery(
            'UPDATE #__content' .
                ' SET hits = hits + 1' .
                ' WHERE id = ' . (int) $pk
        );
        try
        {
            $db->execute();
        }
        catch (RuntimeException $e)
        {
            $this->setError($e->getMessage());
            return false;
        }
    }
    return true;
}
基本的には、記事のヒット列を増やします。
現在、これの動作を調整したい場合は、コアコードを編集するしかありません(更新しようとすると、固有の問題が発生します)。
このアクションを「インターセプト」してプラグインをトリガーして代替アクションを実行する方法はありません。最善の策は、記事のヒット列を無視し、記事のビュー数をより適切に測定することです(おそらく、Googleアナリティクスが最も一般的な選択肢です)。
JEDでJProNoHitCount(http://extensions.joomla.org/extensions/authoring-a-content/admin-interface/22961)と呼ばれるプラグインを偶然見つけました。これにより、記事から除外するグループを1つ以上選択できますカウンターをヒット。
(これは商用プラグインであることに注意してください)。