啟用Joomla cache緩存快取同時並禁用了匹配點擊數(hits)
在Joomla中啟用緩存,在提供緩存快取頁面時,文章匹配點擊數不會增加。不幸的是,這是Joomla中緩存快取系統的限制,沒有"切換開關"來啟用此功能。
命中並不總是準確,但有時需要
對於需要此功能的用戶,通常建議他們切換到更準確的跟踪系統,例如Google Analytics。這雖然是一種替代方案,但實際上並不能解決手頭的問題。即使不是100%準確,有時也需要文章點擊,例如當您需要根據文章的受歡迎程度訂購文章時。
我們創建了一個解決方
假設你已經在Joomla中啟用了緩存快取,需要增加文章的點擊量。在本教程中,我們將概述在提供緩存快取頁面時Joomla增加文章命中事件所採取的步驟。
禁用文章點擊
我知道這聽起來很有趣,但整個過程的第一步是禁用文章命中。 我們正在實施的解決方案將使用ajax來增加文章命中率。 我們不希望Joomla在我們的ajax調用增加命中的同時增加命中率,這將導致雙擊。
編輯以下文件並添加以下
return true;
代碼,如以下程式碼註解。components/com_content/models/article.php
public function hit($pk = 0) { return true; //新增return 返回不執行以下程式碼 $input = JFactory::getApplication()->input; $hitcount = $input->getInt('hitcount', 1); if ($hitcount) { $pk = (!empty($pk)) ? $pk : (int) $this->getState('article.id'); $table = JTable::getInstance('Content', 'JTable'); $table->load($pk); $table->hit($pk); } return true; }
核心文件更改!
此步驟編輯核心文件,不建議這樣做。 您可以跳過此步驟,但是當緩存未用於服務器頁面時,這將導致命中數增加2(而不是1)。
將您的點擊計數包含在範圍標記內
在使用ajax進行調用以增加文章命中後,我們將更新頁面上當前的點擊計數器,以使其準確。 我們將使用 javascript,javascript 需要知道點擊顯示在頁面的哪個位置。 我們通過將文章包含在
<span>
標記內來標記文章命中計數。創建語言覆蓋並添加以紅色突出顯示的更改:
Language Constant: COM_CONTENT_ARTICLE_HITS Text Hits: <span id=”article_hits”>%s</span> 後台選單選擇 擴充套件 > 語言 > 覆蓋
再覆蓋頁面,選擇你的語系,並新增一筆資料。
填入要覆蓋的語言資訊,如下圖。
記得開啟文章顯示點擊數。(如不想顯示:可開啟後使用css display:none)
將ajax調用添加到您的文章中
現在是時候將ajax調用添加到我們的文章中了。 正是這個ajax調用發出了增加文章命中率的請求,無論是否通過緩存提供頁面,它都會運行。編輯以下文件,並在文件末尾添加以下代碼:
components/com_content/views/article/tmpl/default.php
核心文件更改!
此步驟編輯核心文件,不建議這樣做。 您應該將此代碼添加到覆蓋中,如何覆蓋Joomla的輸出!核心。
創建increase_hits.php
創建以下文件。 這是我們的ajax調用將與之交互的php腳本。
includes/increase_hits.php
host, $cg->user, $cg->password, $cg->db); if (mysqli_connect_errno()) die('n/a'); // increase hits $query = " UPDATE
" . $cg->dbprefix . "content
SEThits
=hits
+ 1 WHEREid
= " . $_POST['id'] . " LIMIT 1;"; mysqli_query($con, $query); // grab the new hit count $query = " SELECThits
FROM" . $cg->dbprefix . "content
WHEREid
= " . $_POST['id'] . " LIMIT 1;"; $new_hits = mysqli_fetch_assoc(mysqli_query($con, $query)); // close the connection to the database mysqli_close($con); echo $new_hits['hits']; } ?>就是這樣!這與我們自己的Joomla網站使用的方法相同。如果您在使用此功能時遇到任何問題,請隨時在下方發表評論。 或者,如果您有另一種方法,用戶可以實現在使用緩存快取時增加點擊數,也可以發布評論。