ページでの自分の訪問をカウントしない


7

Joomla 3.3をインストールしました。自分のページにアクセスしている間、ビジターカウンターが増えないようにしたいのですが。少なくともログインしているときは可能ですか?


これを行う方法があると確信しています。Joomlaの組み込み統計カウンターまたは別の拡張機能を参照していますか?これまでに何を試しましたか?
Lodder

正直なところ、私はそれらのページ数を見ることはありません。Googleアナリティクスをインストールしてから、統計にカウントされないようにオフィスのIPを設定しました。問題は、前面にログインしていない場合でも、とにかくIP経由でしか実行できないことです。私はいつもこれらのページカウンターを小さなサイトの仕掛けであり、現実的なものではないように見ていました。
ブライアンピート2014

回答:


4

次のようなプラグインを作成できます。

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 '';
    }
}

上記のプラグインは動作します。サイトにログインし、プラグインを有効にする必要があることは明らかです。


1
おお!優秀な!唯一の悪い点は、2つのクエリで効果的に何もしないことですが、それはページビューのためだけなので、大したことではありません。
David Fritsch 2014

@DavidFritsch、ええ、実際には最大1つの過剰なクエリです。私見それは価値があり、大きな問題ではありません。
Farahmand 2014

2

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アナリティクスが最も一般的な選択肢です)。


返信ありがとうございます。私はすでにこのリンクでそれを見つけましたが、1年以上後にこの機能がjoomlaのバニラバージョンに実装されることを望みました。コアへの変更を受け入れるのはそれほど難しいことではないと思いますね。
usernumberone 2014

ええ、フォーラムのコードがコアになることは決してありません。実際には、githubからコードを送信する必要があります。これの論理は良いように思われるので、プルリクエストを自由にしてください。
David Fritsch

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.