it-swarm-eu.dev

Evita di contare le mie visite sulle pagine

Ho appena installato Joomla 3.3. Mi piacerebbe avere la possibilità di evitare di aumentare il contatore dei visitatori mentre visito le mie pagine. È possibile almeno quando ho effettuato l'accesso?

7
usernumberone

Puoi creare un plugin come questo:

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

Il plugin sopra funziona. È ovvio che devi aver effettuato l'accesso al tuo sito e il plug-in deve essere abilitato.

4
Farahmand

Supponendo che tu stia parlando del hit counter incorporato di Joomla, la risposta per quanto ho visto è "no". Il codice che esegue questo è super semplice e non offre mezzi reali per adattarlo nel CMS. (Il codice non incrementerà nemmeno il contatore visite se abiliti la memorizzazione nella cache ...)

Ciò che accade attualmente nell'articolo view.html.php il file è questo:

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

Verifica di base per accertarsi che questo sia l'inizio del caricamento dell'articolo completo. In tal caso, attiva il modello per registrare un colpo.

Il modello fa questo:

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

Fondamentalmente, incrementa la colonna dei risultati sull'articolo.


Se si desidera regolare il comportamento di questo attualmente, l'unica scelta è quella di modificare il codice principale (e avere i problemi inerenti a ciò quando si tenta di aggiornare).

Non è possibile "intercettare" questa azione e attivare un plug-in per eseguire un'azione alternativa. La soluzione migliore è ignorare la colonna dei risultati sugli articoli e utilizzare una misura migliore di quante visualizzazioni ottengono i tuoi articoli (con Google Analytics probabilmente la scelta più popolare).

2
David Fritsch

Mi sono appena imbattuto in un plugin di JED chiamato JProNoHitCount ( http://extensions.joomla.org/extensions/authoring-a-content/admin-interface/22961 ) che ti permette di selezionare uno o più gruppi da escludere dal hit counter dell'articolo.

(Nota che è un plugin commerciale).

1
johanpw