typecho-matery-theme/functions.php

111 lines
2.9 KiB
PHP
Raw Normal View History

2022-02-02 21:09:24 +08:00
<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
2022-02-03 22:53:54 +08:00
/**
* 获取文章缩略图
* 获取顺序: 自定义字段thumb> 文章第一张图片 > 系统图库
* @param $obj
* @return 获取文章头图
*/
2022-02-05 16:58:32 +08:00
function get_postthumb($obj)
{
2022-02-03 22:53:54 +08:00
2022-02-05 16:58:32 +08:00
if (isset($obj->fields->thumb)) {
2022-02-03 22:53:54 +08:00
return $obj->fields->thumb;
}
2022-02-05 16:58:32 +08:00
preg_match("/<img[^>]+src\s*=\s*['\"]([^'\"]+)['\"][^>]*>/ ", $obj->content, $matches);
if (isset($matches[1])) {
2022-02-03 22:53:54 +08:00
return $matches[1];
}
2022-02-05 16:58:32 +08:00
preg_match("/!\[(.*?)\]\((.*?)\)/ ", $obj->content, $matches);
if (isset($matches[2])) {
return $matches[2];
2022-02-03 22:53:54 +08:00
}
2022-02-05 16:58:32 +08:00
$thumbPath = __DIR__ . '/static/medias/featureimages/';
2022-02-03 22:53:54 +08:00
$files = scandir($thumbPath);
$thumbs = [];
for ($i = 0; $i < count($files); $i++) {
2022-02-05 16:58:32 +08:00
if (is_file($thumbPath . $files[$i])) {
2022-02-03 22:53:54 +08:00
$thumbs[] = $files[$i];
}
}
2022-02-05 16:58:32 +08:00
return Helper::options()->themeUrl . '/static/medias/featureimages/' . $thumbs[rand(0, count($thumbs) - 1)];
2022-02-03 22:53:54 +08:00
}
/**
* @param $obj 对象
* @return string 上一页url
*/
2022-02-05 16:58:32 +08:00
function getPrevPageLink($obj)
{
2022-02-03 22:53:54 +08:00
ob_start();
$obj->pagelink("prev", "prev");
$pageLink = ob_get_contents();
ob_end_clean();
preg_match("/<a[^>]+href\s*=\s*['\"]([^'\"]+)['\"][^>]*>/", $pageLink, $matches);
2022-02-05 16:58:32 +08:00
if (isset($matches[1])) {
2022-02-03 22:53:54 +08:00
return $matches[1];
}
return "#";
}
/**
* @param $obj 对象
* @return string 下一页url
*/
2022-02-05 16:58:32 +08:00
function getNextPageLink($obj)
{
2022-02-03 22:53:54 +08:00
ob_start();
$obj->pageLink("next", "next");
$pageLink = ob_get_contents();
ob_end_clean();
preg_match("/<a[^>]+href\s*=\s*['\"]([^'\"]+)['\"][^>]*>/", $pageLink, $matches);
2022-02-05 16:58:32 +08:00
if (isset($matches[1])) {
2022-02-03 22:53:54 +08:00
return $matches[1];
}
return "#";
2022-02-05 16:58:32 +08:00
}
/**
* 统计文章字数
*
* @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');
2022-02-05 18:23:52 +08:00
}
/**
* 获取文章访问数
* @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';
}
2022-02-03 22:53:54 +08:00
}