Tôi vừa cài đặt Joomla 3.3. Tôi muốn có cơ hội tránh tăng lượt truy cập trong khi tôi truy cập các trang của riêng mình. Có thể ít nhất là khi tôi đăng nhập?
Tôi vừa cài đặt Joomla 3.3. Tôi muốn có cơ hội tránh tăng lượt truy cập trong khi tôi truy cập các trang của riêng mình. Có thể ít nhất là khi tôi đăng nhập?
Câu trả lời:
Bạn có thể tạo một plugin như thế này:
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 '';
}
}
Các plugin trên hoạt động. Rõ ràng là bạn phải đăng nhập vào trang web của bạn và plugin phải được kích hoạt.
Giả sử bạn đang nói về bộ đếm hit tích hợp của Joomla, câu trả lời theo như tôi thấy là "không". Mã chạy mã này rất đơn giản và không cung cấp phương tiện thực sự nào để điều chỉnh mã này trong CMS. (Mã thậm chí sẽ không tăng bộ đếm lần truy cập nếu bạn bật bộ đệm ẩn ...)
Những gì hiện đang xảy ra trong view.html.php
tập tin của bài viết này là:
// Increment the hit counter of the article.
if (!$this->params->get('intro_only') && $offset == 0)
{
$model = $this->getModel();
$model->hit();
}
Kiểm tra cơ bản để đảm bảo rằng đây là sự khởi đầu của việc tải toàn bộ bài viết. Nếu vậy, kích hoạt mô hình để ghi lại một hit.
Mô hình thực hiện điều này:
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;
}
Về cơ bản, tăng cột hit trên bài viết.
Nếu bạn muốn điều chỉnh hành vi của điều này hiện tại, lựa chọn duy nhất của bạn là chỉnh sửa mã lõi (và có các vấn đề cố hữu với điều đó khi bạn cố gắng cập nhật).
Không có cách nào để "chặn" hành động này và kích hoạt plugin để thực hiện hành động thay thế. Đặt cược tốt nhất là bỏ qua cột hit trên các bài viết và sử dụng thước đo tốt hơn về số lượt xem bài viết của bạn (với Google Analytics có thể là lựa chọn phổ biến nhất).