Vermeiden Sie es, meine eigenen Besuche auf den Seiten zu zählen

7

Ich habe gerade Joomla 3.3 installiert. Ich möchte die Möglichkeit haben, den Besucherzähler nicht zu erhöhen, während ich meine eigenen Seiten besuche. Ist es zumindest möglich, wenn ich angemeldet bin?

Benutzernummer
quelle
Ich bin sicher, dass es einen Weg geben wird, dies zu tun. Beziehen Sie sich auf Joomlas eingebauten Statistikzähler oder eine andere Erweiterung? Was hast du bisher versucht?
Lodder
Ehrlich gesagt, ich schaue mir diese Seitenzahlen nie an. Ich installiere Google Analytics und setze meine Office-IP so, dass sie nicht in den Statistiken zählt. Das Problem ist, wenn Sie NICHT an der Vorderseite angemeldet sind, können Sie dies sowieso NUR über IP tun. Ich denke, ich habe diese Seitenzähler immer als Spielerei für kleine Websites angesehen und nicht als etwas Realistisches.
Brian Peat

Antworten:

4

Sie können ein Plugin wie folgt erstellen:

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

Das obige Plugin funktioniert. Es ist offensichtlich, dass Sie bei Ihrer Site angemeldet sein müssen und das Plugin aktiviert sein sollte.

Farahmand
quelle
1
Oohh !! Ausgezeichnet! Das einzig schlechte ist, dass Sie 2 Abfragen haben, um effektiv nichts zu tun, aber es ist nur für Ihre Seitenaufrufe, also wahrscheinlich keine große Sache.
David Fritsch
@ DavidFritsch, ja, tatsächlich maximal eine übermäßige Abfrage. IMHO ist es wert und kein großes Problem.
Farahmand
2

Angenommen, Sie sprechen von Joomlas eingebautem Trefferzähler, lautet die Antwort meines Erachtens "Nein". Der Code, der dies ausführt, ist sehr einfach und bietet keine wirklichen Möglichkeiten, dies im CMS anzupassen. (Der Code erhöht nicht einmal den Trefferzähler, wenn Sie das Caching aktivieren ...)

Was derzeit in der view.html.phpDatei des Artikels passiert, ist Folgendes:

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

Grundlegende Überprüfung, um sicherzustellen, dass dies der Beginn des Ladens des vollständigen Artikels ist. Wenn ja, lösen Sie das Modell aus, um einen Treffer aufzuzeichnen.

Das Modell macht das:

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

Erhöhen Sie grundsätzlich die Treffer-Spalte des Artikels.


Wenn Sie das derzeitige Verhalten anpassen möchten, müssen Sie nur den Kerncode bearbeiten (und haben die damit verbundenen Probleme, wenn Sie versuchen, ihn zu aktualisieren).

Es gibt keine Möglichkeit, diese Aktion abzufangen und ein Plugin auszulösen, um eine alternative Aktion auszuführen. Am besten ignorieren Sie die Treffer-Spalte für Artikel und verwenden ein besseres Maß dafür, wie viele Aufrufe Ihre Artikel erhalten (wobei Google Analytics wahrscheinlich die beliebteste Wahl ist).

David Fritsch
quelle
Ich danke Ihnen für die Antwort. Ich habe es bereits in diesem Link gefunden, aber ich hoffte, dass diese Funktion nach mehr als einem Jahr in der Vanille-Version von Joomla implementiert wird. Ich denke nicht, dass es so schmerzhaft sein sollte, die Veränderung in den Kern zu akzeptieren, nicht wahr?
Benutzernummer
Ja, Code im Forum wird es nie in den Kern schaffen. Sie müssten den Code tatsächlich über Github einreichen. Die Logik hierfür scheint gut zu sein, daher sollten Sie sich frei fühlen, diese Pull-Anfrage zu stellen.
David Fritsch