web-dev-qa-db-pt.com

Evite contar minhas próprias visitas nas páginas

Acabei de instalar o Joomla 3.3. Gostaria de evitar aumentar o contador de visitantes enquanto visito minhas próprias páginas. É possível pelo menos quando estou logado?

7
usernumberone

Você pode criar um plugin como este:

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

O plugin acima funciona. É óbvio que você deve estar conectado ao seu site e o plugin deve estar ativado.

4
Farahmand

Supondo que você esteja falando sobre o contador de visitas do Joomla, a resposta até onde eu vi é "não". O código que executa isso é super simples e não oferece meios reais para adaptar isso no CMS. (O código nem aumentará o contador de visitas se você ativar o cache ...)

O que acontece atualmente no artigo view.html.php arquivo é este:

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

Verificação básica para garantir que este seja o início do carregamento do artigo completo. Nesse caso, ative o modelo para registrar uma ocorrência.

O modelo faz isso:

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

Basicamente, aumente a coluna de ocorrências no artigo.


Se você deseja ajustar o comportamento disso atualmente, sua única opção é editar o código principal (e ter os problemas inerentes a isso ao tentar atualizar).

Não há como "interceptar" essa ação e acionar um plug-in para executar uma ação alternativa. A melhor aposta é ignorar a coluna de hits nos artigos e usar uma medida melhor de quantas visualizações seus artigos estão recebendo (com o Google Analytics provavelmente sendo a escolha mais popular).

2
David Fritsch

Acabei de encontrar um plugin no JED chamado JProNoHitCount ( http://extensions.joomla.org/extensions/authoring-a-content/admin-interface/22961 ) que permite selecionar um ou mais grupos a serem excluídos do contador de ocorrências do artigo.

(Observe que é um plug-in comercial).

1
johanpw