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?
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?
Antworten:
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.
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.php
Datei 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).
Ich bin gerade auf ein Plugin bei JED gestoßen, das JProNoHitCount ( http://extensions.joomla.org/extensions/authoring-a-content/admin-interface/22961 ) heißt und es Ihnen ermöglicht, eine oder mehrere Gruppen auszuwählen, die aus dem Artikel ausgeschlossen werden sollen Trefferzähler.
(Beachten Sie, dass es sich um ein kommerzielles Plugin handelt).