typecho-matery-theme/functions.php
2022-02-05 18:23:52 +08:00

111 lines
2.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
/**
* 获取文章缩略图
* 获取顺序: 自定义字段thumb> 文章第一张图片 > 系统图库
* @param $obj
* @return 获取文章头图
*/
function get_postthumb($obj)
{
if (isset($obj->fields->thumb)) {
return $obj->fields->thumb;
}
preg_match("/<img[^>]+src\s*=\s*['\"]([^'\"]+)['\"][^>]*>/ ", $obj->content, $matches);
if (isset($matches[1])) {
return $matches[1];
}
preg_match("/!\[(.*?)\]\((.*?)\)/ ", $obj->content, $matches);
if (isset($matches[2])) {
return $matches[2];
}
$thumbPath = __DIR__ . '/static/medias/featureimages/';
$files = scandir($thumbPath);
$thumbs = [];
for ($i = 0; $i < count($files); $i++) {
if (is_file($thumbPath . $files[$i])) {
$thumbs[] = $files[$i];
}
}
return Helper::options()->themeUrl . '/static/medias/featureimages/' . $thumbs[rand(0, count($thumbs) - 1)];
}
/**
* @param $obj 对象
* @return string 上一页url
*/
function getPrevPageLink($obj)
{
ob_start();
$obj->pagelink("prev", "prev");
$pageLink = ob_get_contents();
ob_end_clean();
preg_match("/<a[^>]+href\s*=\s*['\"]([^'\"]+)['\"][^>]*>/", $pageLink, $matches);
if (isset($matches[1])) {
return $matches[1];
}
return "#";
}
/**
* @param $obj 对象
* @return string 下一页url
*/
function getNextPageLink($obj)
{
ob_start();
$obj->pageLink("next", "next");
$pageLink = ob_get_contents();
ob_end_clean();
preg_match("/<a[^>]+href\s*=\s*['\"]([^'\"]+)['\"][^>]*>/", $pageLink, $matches);
if (isset($matches[1])) {
return $matches[1];
}
return "#";
}
/**
* 统计文章字数
*
* @param $cid
*/
function articleCount($cid)
{
$db = Typecho_Db::get();
$rs = $db->fetchRow($db->select('table.contents.text')->from('table.contents')->where('table.contents.cid=?', $cid)->order('table.contents.cid', Typecho_Db::SORT_ASC)->limit(1));
$text = preg_replace("/[^\x{4e00}-\x{9fa5}]/u", "", $rs['text']);
return mb_strlen($text, 'UTF-8');
}
/**
* 获取文章访问数
* @param $archive
* @return string|void
* @throws Typecho_Db_Exception
*/
function articleViewsNum($archive) {
$cid = $archive->cid;
$db = Typecho_Db::get();
$prefix = $db->getPrefix();
if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) {
$db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;');
echo 0;
return;
}
$row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid));
if ($archive->is('single')) {
$db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid));
}
if($row['views'] < 1000){
return $row['views'];
} else {
return ($row['views'] / 1000) .'k';
}
}