通过 #php 函数来获取 #Artalk 评论数,解决了 js 获取难以适配无限加载的问题,更具备了一定的自定义功能。
/**
* 获取 Artalk 指定页面的评论数(0 则返回空字符串)
* @param string $pageKey 页面唯一标识
* @param string $server Artalk 服务地址
* @param string $siteName 站点名称
* @return string 评论数量(0返回空字符串)
*/
function getArtalkCommentCount($pageKey, $server = 'http://localhost:8082', $siteName = 'memos动态') {
$apiUrl = rtrim($server, '/') . '/api/v2/stats/page_comment';
$params = http_build_query([
'page_keys' => $pageKey,
'site_name' => $siteName
]);
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $apiUrl . '?' . $params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
CURLOPT_SSL_VERIFYPEER => false
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200 || !$response) {
return ''; // 失败时返回空字符串
}
$data = json_decode($response, true);
$count = $data['data'][$pageKey] ?? 0;
// 如果为0则返回空字符串,否则返回数字
return $count == 0 ? '' : (string)$count;
}