web-dev-qa-db-fra.com

Évitez de compter mes propres visites sur les pages

Je viens d'installer Joomla 3.3. J'aimerais pouvoir éviter d'augmenter le compteur de visiteurs pendant que je visite mes propres pages. Est-ce possible au moins quand je suis connecté?

7
usernumberone

Vous pouvez créer un plugin comme ceci:

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

Le plugin ci-dessus fonctionne. Il est évident que vous devez être connecté à votre site et que le plug-in doit être activé.

4
Farahmand

En supposant que vous parlez du compteur de hit intégré de Joomla, la réponse, autant que je sache, est "non". Le code qui l'exécute est très simple et n'offre aucun moyen réel de l'adapter dans le système de gestion de contenu. (Le code n'incrémentera même pas le compteur d'accès si vous activez la mise en cache ...)

Ce qui se passe actuellement dans le fichier view.html.php De l'article est la suivante:

// Increment the hit counter of the article.
if (!$this->params->get('intro_only') && $offset == 0)
{
    $model = $this->getModel();
    $model->hit();
}

Vérification de base pour vous assurer qu'il s'agit du début du chargement de l'article complet. Si tel est le cas, déclenchez le modèle pour enregistrer un hit.

Le modèle fait ceci:

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

En gros, incrémentez la colonne de résultats de l'article.


Si vous souhaitez actuellement modifier le comportement de cette option, votre seul choix est de modifier le code principal (ce qui pose des problèmes inhérents lorsque vous essayez de mettre à jour).

Il n'y a aucun moyen d'intercepter cette action et de déclencher un plug-in pour effectuer une autre action. Le mieux est d'ignorer la colonne des articles et d'utiliser une meilleure mesure du nombre de vues de vos articles (Google Analytics étant probablement le choix le plus populaire).

2
David Fritsch

Je viens de tomber sur un plugin chez JED appelé JProNoHitCount ( http://extensions.joomla.org/extensions/authoring-a-content/admin-interface/22961 ) qui vous permet de sélectionner un ou plusieurs groupes à exclure de l'article hit counter.

(Notez que c'est un plugin commercial).

1
johanpw