首次提交

This commit is contained in:
caojiezi2003 2024-09-11 14:56:02 +08:00
parent 7398dadee2
commit e5de78d061
37 changed files with 27151 additions and 0 deletions

32
404.php Normal file
View File

@ -0,0 +1,32 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
</div>
<div class="col-lg-12">
<div class="trm-counter-up trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
<div class="trm-counter-number">
<?php echo yiyan() ?>
</div>
</div>
</div>
<div class="col-mb-12 col-tb-8 col-tb-offset-2">
<div class="trm-card trm-publication">
<div class="text-center">
<img src="<?php $this->options->themeUrl('/img/null.svg'); ?>" style="margin-bottom: 20px;">
<p style="margin-bottom: 20px;"><?php _e('你想查看的页面已被转移或删除了, 要不要搜索看看: '); ?></p>
<form method="post">
<p><input type="text" name="s" class="text" autofocus/></p>
<button class="trm-btn" type="submit" class="submit"><?php _e('搜索'); ?></button>
</form>
</div>
</div>
</div><!-- end #content-->
<?php $this->need('footer.php'); ?>

54
archive.php Normal file
View File

@ -0,0 +1,54 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
</div>
<div class="col-lg-12">
<div class="trm-counter-up trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
<div class="trm-counter-number"><?php $this->archiveTitle([
'category' => _t('分类<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>下的文章'),
'search' => _t('包含关键字<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>的文章'),
'tag' => _t('标签<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>下的文章'),
'author' => _t('<span class="trm-counter-symbol" style="font-size: 24px;"> %s </span>发布的文章')
], '', ''); ?></div>
</div>
</div>
<div class="row" id="main" role="main">
<?php if ($this->have()): ?>
<?php while ($this->next()): ?>
<div class="col-lg-6">
<div class="trm-blog-card trm-scroll-animation" data-scroll data-scroll-offset="40">
<a class="trm-cover-frame trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>">
<?php $thumbnailUrl = get_ArticleThumbnail($this); if ($thumbnailUrl): ?>
<img src="<?php echo htmlspecialchars($thumbnailUrl); ?>" alt="文章缩略图">
<?php endif; ?>
</a>
<div class="trm-card-descr">
<h5 class="trm-mb-20"><a class="trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>"><?php $this->title() ?></a></h5>
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
<ul class="trm-card-data trm-label">
<li datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date(); ?></li>
<li><?php $this->category(','); ?></li>
</ul>
</div>
</div>
</div>
<?php endwhile; ?>
<?php else: ?>
<article class="post">
<h2 class="post-title"><?php _e('没有找到内容'); ?></h2>
</article>
<?php endif; ?>
<?php $this->pageNav('&laquo; 前一页', '后一页 &raquo;'); ?>
</div>
</div>
</div>
<?php $this->need('sidebar.php'); ?>
<?php $this->need('footer.php'); ?>

61
comments.php Normal file
View File

@ -0,0 +1,61 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<div id="comments">
<?php $this->comments()->to($comments); ?>
<?php if ($this->allow('comment')): ?>
<div id="<?php $this->respondId(); ?>" class="respond">
<div class="cancel-comment-reply">
<?php $comments->cancelReply(); ?>
</div>
<form method="post" action="<?php $this->commentUrl() ?>" id="comment-form" role="form">
<?php if ($this->user->hasLogin()): ?><?php _e('登录身份: '); ?><a
href="<?php $this->options->profileUrl(); ?>"><?php $this->user->screenName(); ?></a>. <a
href="<?php $this->options->logoutUrl(); ?>" title="Logout"><?php _e('退出'); ?> &raquo;</a>
<?php else: ?>
<label for="author" class="required"><?php _e('称呼'); ?></label>
<input type="text" name="author" id="author" class="text"
value="<?php $this->remember('author'); ?>" required/>
<label
for="mail"<?php if ($this->options->commentsRequireMail): ?> class="required"<?php endif; ?>><?php _e('Email'); ?></label>
<input type="email" name="mail" id="mail" class="text"
value="<?php $this->remember('mail'); ?>"<?php if ($this->options->commentsRequireMail): ?> required<?php endif; ?> />
<label
for="url"<?php if ($this->options->commentsRequireURL): ?> class="required"<?php endif; ?>><?php _e('网站'); ?></label>
<input type="url" name="url" id="url" class="text" placeholder="<?php _e('http://'); ?>"
value="<?php $this->remember('url'); ?>"<?php if ($this->options->commentsRequireURL): ?> required<?php endif; ?> />
<?php endif; ?>
<label for="textarea" class="required"><?php _e('内容'); ?></label>
<textarea rows="8" cols="50" name="text" id="textarea" class="textarea" required style="margin-bottom: 10px;"><?php $this->remember('text'); ?></textarea>
<div class="">
<div class="text-center trm-mb-40"><button href="javascript:;" type="submit" class="trm-btn"><?php _e('提交评论'); ?></button></div>
<?php $security = $this->widget('Widget_Security'); ?>
<input type="hidden" name="_" value="<?php echo $security->getToken($this->request->getReferer())?>">
</p>
</form>
</div>
<?php else: ?>
<h3><?php _e('评论已关闭'); ?></h3>
<?php endif; ?>
<div class="row">
<div class="col-lg-12">
<?php if ($comments->have()): ?>
<h5 class="trm-mb-40 trm-title-with-divider"><?php $this->commentsNum(_t('暂无评论'), _t(' %d 条评论')); ?><span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
</div>
<?php $comments->listComments(); ?>
<?php $comments->pageNav('&laquo; 前一页', '后一页 &raquo;'); ?>
<?php endif; ?>
</div>

9136
css/plugins/bootstrap.min.css vendored Normal file

File diff suppressed because it is too large Load Diff

1
css/plugins/fancybox.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
css/plugins/font-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
/*! locomotive-scroll v4.1.1 | MIT License | https://github.com/locomotivemtl/locomotive-scroll */html.has-scroll-smooth{overflow:hidden}html.has-scroll-dragging{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.has-scroll-smooth body{overflow:hidden}.has-scroll-smooth [data-scroll-container]{min-height:100vh}[data-scroll-direction="horizontal"] [data-scroll-container]{height:100vh;display:inline-block;white-space:nowrap}[data-scroll-direction="horizontal"] [data-scroll-section]{display:inline-block;vertical-align:top;white-space:nowrap;height:100%}.c-scrollbar{position:absolute;right:0;top:0;width:11px;height:100%;transform-origin:center right;transition:transform .3s,opacity .3s;opacity:0}.c-scrollbar:hover{transform:scaleX(1)}.c-scrollbar:hover,.has-scroll-scrolling .c-scrollbar,.has-scroll-dragging .c-scrollbar{opacity:1}[data-scroll-direction="horizontal"] .c-scrollbar{width:100%;height:10px;top:auto;bottom:0;transform:scaleY(1)}[data-scroll-direction="horizontal"] .c-scrollbar:hover{transform:scaleY(1)}.c-scrollbar_thumb{position:absolute;top:0;right:0;background-color:black;opacity:.5;width:7px;border-radius:10px;margin:2px;cursor:-webkit-grab;cursor:grab}.has-scroll-dragging .c-scrollbar_thumb{cursor:-webkit-grabbing;cursor:grabbing}[data-scroll-direction="horizontal"] .c-scrollbar_thumb{right:auto;bottom:0}

1
css/plugins/swiper.min.css vendored Normal file

File diff suppressed because one or more lines are too long

2757
css/style-dark.css Normal file

File diff suppressed because it is too large Load Diff

2760
css/style-light.css Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

60
footer.php Normal file
View File

@ -0,0 +1,60 @@
<div class="trm-divider trm-mb-40"></div>
<!-- footer -->
<footer class="trm-scroll-animation" data-scroll data-scroll-offset="50">
<div class="trm-label">© 2024 All Rights Reserved.<br>Designed by:<a href="<?php $this->options->siteurl() ?>" target="_blank"><?php $this->options->title() ?></a></div>
<br>
<div class="trm-label">
<img src="https://www.xfabe.com/zb_users/theme/quietlee/style/images/icp.png" alt="<?php $this->options->beian() ?>">
<a href="http://beian.miit.gov.cn/"><?php $this->options->beian() ?></a><br>
<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=" style="margin-left: 23px;"><?php $this->options->gongan() ?></a>
</div>
</footer>
<!-- footer end -->
</div>
<!-- content end -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- scroll container end -->
<div class="trm-hidden-switcher">
<div class="trm-mode-switcher"><i class="far fa-sun"></i>
<input class="tgl tgl-light" id="trm-swich" type="checkbox">
<label class="trm-swich" for="trm-swich"></label>
<i class="far fa-moon"></i>
</div>
</div>
<!-- app wrapper end -->
<!-- jquery js -->
<script src="<?php $this->options->themeUrl('/js/plugins/jquery.min.js'); ?>"></script><!-- swup js -->
<script src="<?php $this->options->themeUrl('/js/plugins/swup.min.js'); ?>"></script><!-- locomotive scroll js -->
<script src="<?php $this->options->themeUrl('/js/plugins/locomotive-scroll.js'); ?>"></script><!-- typing js -->
<script src="<?php $this->options->themeUrl('/js/plugins/typing.js'); ?>"></script><!-- fancybox js -->
<script src="<?php $this->options->themeUrl('/js/plugins/fancybox.min.js'); ?>"></script><!-- swiper js -->
<script src="<?php $this->options->themeUrl('/js/plugins/swiper.min.js'); ?>"></script><!-- 李初一 js -->
<script src="<?php $this->options->themeUrl('/js/main.js'); ?>"></script>
<script src="<?php $this->options->themeUrl('/js/copy.js'); ?>"></script>
<script>
$(document)
.ready(function() {
$(".trm-card img")
.each(function() {
var _a = $("<a></a>")
.attr({
"href": this.src,
"data-fancybox": "gallery",
"no-pjax": "",
"data-type": "image",
"data-caption": this.alt
});
$(this)
.wrap(_a);
});
});
</script>
<?php $this->footer(); ?>
</body>
</html>

455
functions.php Normal file
View File

@ -0,0 +1,455 @@
<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
function themeConfig($form)
{
$logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
'logoUrl',
null,
null,
_t('站点 LOGO 地址'),
_t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO')
);
$form->addInput($logoUrl);
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
'favicon',
null,
null,
_t('站点 favicon 图标'),
_t('在这里填入一个图片 URL 地址, 设置网站的favicon图标')
);
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
'beian',
null,
null,
_t('备案号号'),
_t('在这里填入你的备案号')
);
$favicon = new \Typecho\Widget\Helper\Form\Element\Text(
'gongan',
null,
null,
_t('公安备案号号'),
_t('在这里填入你的公安备案号如果有的话')
);
$form->addInput($favicon);
$bg1 = new \Typecho\Widget\Helper\Form\Element\Text(
'bg1',
null,
null,
_t('首页背景'),
_t('在这里填入背景链接')
);
$form->addInput($bg1);
$bg2 = new \Typecho\Widget\Helper\Form\Element\Text(
'bg2',
null,
null,
_t('非首页背景'),
_t('在这里填入背景链接')
);
$form->addInput($bg2);
$light = new \Typecho\Widget\Helper\Form\Element\Text(
'light',
null,
null,
_t('日间主题色'),
_t('在这里填入颜色代码')
);
$form->addInput($light);
$dark = new \Typecho\Widget\Helper\Form\Element\Text(
'dark',
null,
null,
_t('夜间主题色'),
_t('在这里填入颜色代码')
);
$form->addInput($dark);
$qq = new \Typecho\Widget\Helper\Form\Element\Text(
'QQ',
null,
null,
_t('QQ'),
_t('在这里填入QQ用于获取头像')
);
$form->addInput($qq);
$email = new \Typecho\Widget\Helper\Form\Element\Text(
'email',
null,
null,
_t('email'),
_t('在这里填入email用于前端联系按钮')
);
$form->addInput($email);
$github = new \Typecho\Widget\Helper\Form\Element\Text(
'github',
null,
null,
_t('github'),
_t('在这里填入github用于前端联系按钮')
);
$form->addInput($github);
$telegraph = new \Typecho\Widget\Helper\Form\Element\Text(
'telegraph',
null,
null,
_t('telegraph'),
_t('在这里填入telegraph用于前端联系按钮')
);
$form->addInput($telegraph);
$twitter = new \Typecho\Widget\Helper\Form\Element\Text(
'twitter',
null,
null,
_t('twitter'),
_t('在这里填入twitter用于前端联系按钮')
);
$form->addInput($twitter);
$desc = new \Typecho\Widget\Helper\Form\Element\Text(
'desc',
null,
null,
_t('首页介绍'),
_t('在这里输入文字介绍你得站点')
);
$form->addInput($desc);
$articleImgSpeed = new Typecho_Widget_Helper_Form_Element_Text('articleImgSpeed', NULL, NULL, _t('文章缩略图加速'), _t('填入加速地址前段,不要填图片地址的序号和.jpg默认jpg图片格式缩略图数量根据主题预设的张数固定了。例: https://cdn.xxxx.com/images/articles/'));
$form->addInput($articleImgSpeed);
// $sidebarBlock = new \Typecho\Widget\Helper\Form\Element\Checkbox(
// 'sidebarBlock',
// [
// 'ShowRecentPosts' => _t('显示最新文章'),
// 'ShowRecentComments' => _t('显示最近回复'),
// 'ShowCategory' => _t('显示分类'),
// 'ShowArchive' => _t('显示归档'),
// 'ShowOther' => _t('显示其它杂项')
// ],
// ['ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'],
// _t('侧边栏显示')
// );
// $form->addInput($sidebarBlock->multiMode());
$friendLink = new Typecho_Widget_Helper_Form_Element_Textarea('friendLink', NULL, NULL, _t('页脚友情链接'));
$form->addInput($friendLink);
}
//获取文章缩略图,没有则随机
function get_ArticleThumbnail($widget){
// 当文章无图片时的随机缩略图
$rand = mt_rand(1, 5); // 随机 1-9 张缩略图
// 缩略图加速
$rand_url;
if(!empty(Helper::options()->articleImgSpeed)){
$rand_url = Helper::options()->articleImgSpeed;
}else {
$rand_url = $widget->widget('Widget_Options')->themeUrl . '/img/articles/';
}
$random = $rand_url . $rand . '.avif'; // 随机缩略图路径
$attach = $widget->attachments(1)->attachment;
$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';
//如果有自定义缩略图
if($widget->fields->thumb) {
return $widget->fields->thumb;
}else if (preg_match_all($pattern, $widget->content, $thumbUrl) && strlen($thumbUrl[1][0]) > 7) {
return $thumbUrl[1][0];
} else if ($attach->isImage) {
return $attach->url;
} else {
return $random;
}
};
//在线人数
function online_users() {
$filename='online.txt'; //数据文件
$cookiename='Nanlon_OnLineCount'; //Cookie名称
$onlinetime=30; //在线有效时间
$online=file($filename);
$nowtime=$_SERVER['REQUEST_TIME'];
$nowonline=array();
foreach($online as $line){
$row=explode('|',$line);
$sesstime=trim($row[1]);
if(($nowtime - $sesstime)<=$onlinetime){
$nowonline[$row[0]]=$sesstime;
}
}
if(isset($_COOKIE[$cookiename])){
$uid=$_COOKIE[$cookiename];
}else{
$vid=0;
do{
$vid++;
$uid='U'.$vid;
}while(array_key_exists($uid,$nowonline));
setcookie($cookiename,$uid);
}
$nowonline[$uid]=$nowtime;
$total_online=count($nowonline);
if($fp=@fopen($filename,'w')){
if(flock($fp,LOCK_EX)){
rewind($fp);
foreach($nowonline as $fuid=>$ftime){
$fline=$fuid.'|'.$ftime."\n";
@fputs($fp,$fline);
}
flock($fp,LOCK_UN);
fclose($fp);
}
}
echo "$total_online";
}
// 首页区块预留函数
function getNextNumber() {
static $counter = 00; // 声明一个静态变量 $counter并在第一次调用时初始化为0
$counter++; // 每次调用时递增 $counter
return str_pad($counter, 2, '0', STR_PAD_LEFT); // 返回递增后的值
}
/* 根据评论agent获取设备类型 */
function _getAgentOS($agent)
{
$os = "Linux";
if (preg_match('/win/i', $agent)) {
if (preg_match('/nt 6.0/i', $agent)) {
$os = 'Windows Vista';
} else if (preg_match('/nt 6.1/i', $agent)) {
$os = 'Windows 7';
} else if (preg_match('/nt 6.2/i', $agent)) {
$os = 'Windows 8';
} else if (preg_match('/nt 6.3/i', $agent)) {
$os = 'Windows 8.1';
} else if (preg_match('/nt 5.1/i', $agent)) {
$os = 'Windows XP';
} else if (preg_match('/nt 10.0/i', $agent)) {
$os = 'Windows 10';
} else {
$os = 'Windows X64';
}
} else if (preg_match('/android/i', $agent)) {
if (preg_match('/android 9/i', $agent)) {
$os = 'Android Pie';
} else if (preg_match('/android 8/i', $agent)) {
$os = 'Android Oreo';
} else {
$os = 'Android';
}
} else if (preg_match('/ubuntu/i', $agent)) {
$os = 'Ubuntu';
} else if (preg_match('/linux/i', $agent)) {
$os = 'Linux';
} else if (preg_match('/iPhone/i', $agent)) {
$os = 'iPhone';
} else if (preg_match('/mac/i', $agent)) {
$os = 'MacOS';
} else if (preg_match('/fusion/i', $agent)) {
$os = 'Android';
} else {
$os = 'Linux';
}
echo $os;
}
/* 根据评论agent获取浏览器类型 */
function _getAgentBrowser($agent)
{
if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs)) {
$outputer = 'Internet Explore';
} else if (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'FireFox';
} else if (preg_match('/Maxthon([\d]*)\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'MicroSoft Edge';
} else if (preg_match('#360([a-zA-Z0-9.]+)#i', $agent, $regs)) {
$outputer = '360 Fast Browser';
} else if (preg_match('/Edge([\d]*)\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'MicroSoft Edge';
} else if (preg_match('/UC/i', $agent)) {
$outputer = 'UC Browser';
} else if (preg_match('/QQ/i', $agent, $regs) || preg_match('/QQ Browser\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'QQ Browser';
} else if (preg_match('/UBrowser/i', $agent, $regs)) {
$outputer = 'UC Browser';
} else if (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs)) {
$outputer = 'Opera';
} else if (preg_match('/Chrome([\d]*)\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'Google Chrome';
} else if (preg_match('/safari\/([^\s]+)/i', $agent, $regs)) {
$outputer = 'Safari';
} else {
$outputer = 'Google Chrome';
}
echo $outputer;
}
/* 获取父级评论 */
function _getParentReply($parent)
{
if ($parent !== "0") {
$db = Typecho_Db::get();
$commentInfo = $db->fetchRow($db->select('author')->from('table.comments')->where('coid = ?', $parent));
if (!empty($commentInfo['author'])) {
echo '<div class="parent"><span style="vertical-align: 1px;">@</span> ' . $commentInfo['author'] . '</div>';
}
}
}
/* 过滤短代码 */
function _checkXSS($text)
{
$isXss = false;
$list = array(
'/onabort/is',
'/onblur/is',
'/onchange/is',
'/onclick/is',
'/ondblclick/is',
'/onerror/is',
'/onfocus/is',
'/onkeydown/is',
'/onkeypress/is',
'/onkeyup/is',
'/onload/is',
'/onmousedown/is',
'/onmousemove/is',
'/onmouseout/is',
'/onmouseover/is',
'/onmouseup/is',
'/onreset/is',
'/onresize/is',
'/onselect/is',
'/onsubmit/is',
'/onunload/is',
'/eval/is',
'/ascript:/is',
'/style=/is',
'/width=/is',
'/width:/is',
'/height=/is',
'/height:/is',
'/src=/is',
);
if (strip_tags($text)) {
for ($i = 0; $i < count($list); $i++) {
if (preg_match($list[$i], $text) > 0) {
$isXss = true;
break;
}
}
} else {
$isXss = true;
};
return $isXss;
}
/* 过滤表情 */
function _parseReply($text)
{
$text = preg_replace_callback(
'/\:\#\(\s*(doge|亲亲|偷笑|再见|发怒|发财|可爱|吐血|呆|呕吐|困|坏笑|大佬|大哭|委屈|害羞|尴尬|微笑|思考|惊吓|打脸|抓狂|抠鼻子|斜眼笑|无奈|晕|流汗|流鼻血|点赞|生气|生病|疑问|白眼|睡着|笑哭|腼腆|色|调皮|鄙视|闭嘴|难过|馋|黑人问号|鼓掌)\s*\)/is',
function ($match) {
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/bilibili/' . str_replace('%', '', urlencode($match[1])) . '.gif" alt="小电视"/>';
},
$text
);
$text = preg_replace_callback(
'/\:\$\(\s*(3d眼镜|EDG|LPL|beluga|不好意思|不服吗|亲亲|伞兵|倚墙笑|值得肯定|偷偷看|傻笑|再见|出家人|击剑|加班|勉强笑|危险|发红包|吃手|吃瓜|吐血|吵架|呦吼|呲牙笑|哈士奇|哈士奇失去意识|哈士奇失望|哭泣|唱歌|喜欢|嘿哈|大笑|失去信号|失望|头秃|奋斗|好奇|好的|害羞|小丑|小偷|尬笑|尴尬|应援|开心|引起不适|微笑|思考|恶心|恶魔|恶魔恐惧|惊吓|惊吓白眼|惊讶|惬意|感动|愤怒|我看好你|手机相机|打咩|打牌|托腮|扶额|抠鼻|抬眼镜|拜托|捂嘴笑|捂脸|擦汗|放鞭炮|敬礼|整理发型|斗鸡眼|智慧的眼神|月饼|有没有搞错|正确|没招|波吉|泪奔|流汗微笑|流鼻涕|深思|滑稽|滑稽吃瓜|滑稽喝水|滑稽奶茶|滑稽柠檬|滑稽狂汗|滑稽被子|烦恼|熊熊|熊猫|熊猫唱歌|熊猫喜欢|熊猫失望|熊猫意外|熬夜|爆炸|牛年进宝|狂热|狗头|狗头围脖|狗头失望|狗头意外|狗头胖次|狗头花|狗头草|猪头|猪头意外|生病|电话|疑问|疼痛|痛哭|看穿一切|眩晕|睡觉|禁言|笑哭|纠结|绿帽|缺牙笑|翻白眼|老虎意外|耍酷|胡子|菜狗|菜狗花|蒙面滑稽|虎年进宝|被打|裂开|警告|读书|财神红包|超爱|这是啥|送福|送花|错误|阴险|难以置信|面具|饥渴|鬼脸|黑线|鼓掌)\s*\)/is',
function ($match) {
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/Heo/' . str_replace('%', '', urlencode($match[1])) . '.gif" alt="Heo"/>';
},
$text
);
$text = preg_replace_callback(
'/\:\:\(\s*(呵呵|哈哈|吐舌|太开心|笑眼|花心|小乖|乖|捂嘴笑|滑稽|你懂的|不高兴|怒|汗|黑线|泪|真棒|喷|惊哭|阴险|鄙视|酷|啊|狂汗|what|疑问|酸爽|呀咩爹|委屈|惊讶|睡觉|笑尿|挖鼻|吐|犀利|小红脸|懒得理|勉强|爱心|心碎|玫瑰|礼物|彩虹|太阳|星星月亮|钱币|茶杯|蛋糕|大拇指|胜利|haha|OK|沙发|手纸|香蕉|便便|药丸|红领巾|蜡烛|音乐|灯泡|开心|钱|咦|呼|冷|生气|弱|吐血|狗头)\s*\)/is',
function ($match) {
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/paopao/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
},
$text
);
$text = preg_replace_callback(
'/\:\@\(\s*(高兴|小怒|脸红|内伤|装大款|赞一个|害羞|汗|吐血倒地|深思|不高兴|无语|亲亲|口水|尴尬|中指|想一想|哭泣|便便|献花|皱眉|傻笑|狂汗|吐|喷水|看不见|鼓掌|阴暗|长草|献黄瓜|邪恶|期待|得意|吐舌|喷血|无所谓|观察|暗地观察|肿包|中枪|大囧|呲牙|抠鼻|不说话|咽气|欢呼|锁眉|蜡烛|坐等|击掌|惊喜|喜极而泣|抽烟|不出所料|愤怒|无奈|黑线|投降|看热闹|扇耳光|小眼睛|中刀)\s*\)/is',
function ($match) {
return '<img class="owo_image lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="' . Helper::options()->themeUrl . '/assets/owo/aru/' . str_replace('%', '', urlencode($match[1])) . '_2x.png" alt="表情"/>';
},
$text
);
return $text;
}
/* 过滤评论回复 */
function _parseCommentReply($text)
{
if (_checkXSS($text)) {
echo "该回复疑似异常,已被系统拦截!";
} else {
$text = _parseReply($text);
echo preg_replace('/\{!\{([^\"]*)\}!\}/', '<img class="lazyload draw_image" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="$1" alt="画图"/>', $text);
}
}
function yiyan() {
$url = 'https://api.oddfar.com/yl/q.php?c=2004&encode=text';
$result = null;
$response = file_get_contents($url);
echo $response;
}
function threadedComments($comments, $options)
{ ?>
<li class="comment comment-parent comment-odd comment-by-user">
<div class="comment-body">
<div class="comment-author">
<span class="author">
<img width="48" height="48" class="avatar lazyload" src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php echo $comments->mail ?>@qq.com&spec=640&img_type=jpg" data-src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php echo $comments->mail ?>@qq.com&spec=640&img_type=jpg" alt="头像" /><?php $comments->author(); ?></span>
<?php if ($comments->authorId === $comments->ownerId) : ?>
<i class="master">作者</i>
<?php endif; ?>
<?php if ($comments->status === "waiting") : ?>
<em class="waiting">(评论审核中...</em>
<?php endif; ?>
</div>
<p>
<?php _getParentReply($comments->parent) ?>
<?php echo _parseCommentReply($comments->content); ?>
</p>
<div class="handle">
<time class="date" datetime="<?php $comments->date('Y-m-d'); ?>"><?php $comments->date('Y-m-d'); ?></time>
<span class="comment-reply" data-no-instant><?php $comments->reply('回复'); ?></span>
</div>
</div>
</li>
<?php if ($comments->children) : ?>
<div class="comment-list__item-children">
<?php $comments->threadedComments($options); ?>
</div>
<?php endif; ?>
<?php } ?>

265
header.php Normal file
View File

@ -0,0 +1,265 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<!DOCTYPE html>
<html lang="zxx">
<head>
<title><?php $this->archiveTitle([
'category' => _t('分类 %s 下的文章'),
'search' => _t('包含关键字 %s 的文章'),
'tag' => _t('标签 %s 下的文章'),
'author' => _t('%s 发布的文章')
], '', ' - '); ?><?php $this->options->title(); ?></title>
<meta name="description" content="<?php $this->options->description(); ?>">
<meta name="keywords" content="<?php $this->options->keywords(); ?>">
<link rel="icon" type="image/x-icon" href="<?php $this->options->favicon(); ?>">
<meta charset="<?php $this->options->charset(); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- bootstrap css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/bootstrap.min.css'); ?>">
<!-- locomotive scroll css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/locomotive-scroll.css'); ?>">
<!-- swiper css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/swiper.min.css'); ?>">
<!-- fancybox css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/fancybox.min.css'); ?>">
<!-- font awesome css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/plugins/font-awesome.min.css'); ?>">
<!-- Semporia dark mode css <link rel="stylesheet" href="css/style-dark.css">-->
<!-- Semporia light mode css -->
<link rel="stylesheet" href="<?php $this->options->themeUrl('/css/style-light.css'); ?>" id="trm-switch-style">
<link rel="stylesheet" href="<?php $this->options->themeUrl('/style.css'); ?>" id="style">
<style>
:root{
--light-color:<?php $this->options->light() ?>;
--dark-color:<?php $this->options->dark() ?>;
}
path {
fill: #fff;
}
.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25;
}
.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre, .markdown-body details {
margin-top: 0;
margin-bottom: 16px;
}
.task-list-item {
list-style-type: none;
}
.task-list-item-checkbox {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
font-weight: bold;
line-height: 1.45;
color: #FFFFFF;
background-color: rgba(0, 0, 0, 0.6);
border-radius: 6px;
}
.markdown-body pre code, .markdown-body pre tt {
display: inline;
max-width: auto;
padding: 0;
margin: 0;
overflow: visible;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
</style>
<?php $this->header(); ?>
</head>
<body>
<!-- app wrapper -->
<div class="trm-app-frame">
<!-- page preloader -->
<div class="trm-preloader">
<div class="trm-holder">
<div class="preloader">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</div>
<!-- page preloader end -->
<!-- change mode preloader -->
<div class="trm-mode-swich-animation-frame">
<div class="trm-mode-swich-animation"><i class="far fa-sun"></i>
<div class="trm-horizon"></div>
<i class="far fa-moon"></i>
</div>
</div>
<!-- change mode preloader end -->
<!-- scroll container -->
<div id="trm-dynamic-content" class="trm-swup-animation">
<div id="trm-scroll-container" class="trm-scroll-container" data-scroll-container style="opacity: 0">
<div data-scroll-section id="content" class="trm-scroll-section">
<!-- top bar -->
<div class="trm-top-bar" data-scroll data-scroll-sticky data-scroll-target="#content" data-scroll-offset="-10">
<div class="container">
<div class="trm-left-side">
<!-- logo -->
<a href="<?php $this->options->siteUrl(); ?>" class="trm-logo-frame trm-anima-link">
<div class="trm-logo-text">
<span>
<img src="<?php $this->options->logoUrl() ?>" alt="<?php $this->options->title() ?>"/>
</span>
</div>
</a>
<!-- logo end -->
</div>
<div class="trm-right-side">
<!-- menu -->
<div class="trm-menu">
<nav>
<ul>
<li<?php if ($this->is('index')): ?> class="current-menu-item"<?php endif; ?>>
<a<?php if ($this->is('index')): ?><?php endif; ?> href="<?php $this->options->siteUrl(); ?>"><?php _e('首页'); ?></a>
</li>
<?php \Widget\Contents\Page\Rows::alloc()->to($pages); ?>
<?php while ($pages->next()): ?>
<li<?php if ($this->is('page', $pages->slug)): ?> class="current-menu-item"<?php endif; ?>><a<?php if ($this->is('page', $pages->slug)): ?><?php endif; ?> href="<?php $pages->permalink(); ?>" title="<?php $pages->title(); ?>"><?php $pages->title(); ?></a></li>
<?php endwhile; ?>
</ul>
</nav>
</div>
<!-- menu end -->
<!-- mode switcher place -->
<div class="trm-mode-switcher-place"></div>
<!-- mode switcher place end -->
<!-- action button -->
<!-- <a href="files/cv.txt" download class="trm-btn trm-btn-sm">Download cv <i class="fas fa-arrow-down"></i></a> -->
<!-- action button end -->
</div>
<div class="trm-menu-btn"><span></span></div>
</div>
</div>
<!-- top bar end -->
<div class="trm-content-start">
<!-- banner -->
<div class="trm-banner" data-scroll data-scroll-direction="vertical" data-scroll-speed="-1">
<!-- 背景 -->
<?php if ($this->is('index')): ?>
<img src="<?php $this->options->bg1() ?>" alt="banner" class="trm-banner-cover" data-scroll data-scroll-direction="vertical" data-scroll-speed="-4">
<?php else: ?>
<img src="<?php $this->options->bg2() ?>" alt="banner" class="trm-banner-cover" data-scroll data-scroll-direction="vertical" data-scroll-speed="-4">
<?php endif; ?>
<div class="trm-banner-content trm-overlay">
<div class="container" data-scroll data-scroll-direction="vertical" data-scroll-speed="1">
<div class="row">
<div class="col-lg-4"></div>
<div class="col-lg-8">
<!-- 首页简介 -->
<div class="trm-banner-text">
<div class="trm-label trm-mb-20"><?php $this->options->description() ?></div>
<h1 class="trm-mb-30">
<?php
if ($this->is('index')) {
// 在首页上显示站点的标题
echo $this->options->title();
} else {
echo $this->title();
}
?>
</h1>
<ul class="trm-breadcrumbs trm-label">
<?php if ($this->is('index')): ?><!-- 页面为首页时 -->
Latest Post
<?php elseif ($this->is('post')): ?><!-- 页面为文章单页时 -->
<li><a href="<?php $this->options->siteUrl(); ?>">HOME</a></li><li><?php $this->category(); ?></li><li><span><?php $this->title() ?></span></li>
<?php else: ?><!-- 页面为其他页时 -->
<li><span><?php $this->archiveTitle('','',''); ?></span></li>
<?php endif; ?>
</ul>
</div>
<!-- banner title end -->
<!-- scroll hint -->
<a href="#about-triger" data-scroll-to="#about-triger" data-scroll-offset="-130"
class="trm-scroll-hint-frame">
<div class="trm-scroll-hint"></div>
<span class="trm-label">向下滚动</span>
</a><!-- scroll hint end -->
</div>
</div>
</div>
</div>
<!-- banner content end -->
</div>
<!-- banner end -->
<div class="container">
<div class="row">
<div class="col-lg-4">
<!-- main card -->
<div class="trm-main-card-frame trm-sidebar">
<div class="trm-main-card" data-scroll data-scroll-repeat data-scroll-sticky
data-scroll-target="#content" data-scroll-offset="60">
<!-- 头像区块 已替换成QQ头像 -->
<div class="trm-mc-header">
<div class="trm-avatar-frame trm-mb-20"><img class="trm-avatar" src="https://q.qlogo.cn/headimg_dl?dst_uin=<?php $this->options->QQ() ?>&spec=640&img_type=jpg"
alt="Avatar">
<div class="trm-dot"></div>
</div>
<h5 class="trm-name trm-mb-15"><?php $this->author->screenName(); ?></h5>
<div class="trm-label">我是一名 <span class="trm-typed-text">
<!-- Words for rotation:js/main.js line 34 -->
</span></div>
</div>
<!-- 头像区块结束 -->
<div class="trm-divider trm-mb-40 trm-mt-40"></div>
<!-- 头像下方图标区块 -->
<div class="trm-social">
<a href="https://wpa.qq.com/wpa_jump_page?v=3&uin=<?php $this->options->QQ() ?>&site=qq&menu=yes" target="_blank"><i class="fab fa-qq"></i></a>
<a href="<?php $this->options->github() ?>" target="_blank"><i class="fab fa-github"></i></a>
<a href="<?php $this->options->telegraph() ?>" target="_blank"><i class="fab fa-telegram"></i></a>
<a href="<?php $this->options->twitter() ?>" target="_blank"><i class="fab fa-twitter"></i></a>
</div>
<!-- 头像图标区块结束 -->
<!-- <div class="trm-divider trm-mb-40 trm-mt-40"></div> -->
<!-- info -->
<!-- <ul class="trm-table trm-mb-20">
<li>
<div class="trm-label">Residence:</div>
<div class="trm-label trm-label-light">Home</div>
</li>
<li>
<div class="trm-label">City:</div>
<div class="trm-label trm-label-light">Cheng Du</div>
</li>
<li>
<div class="trm-label">Age:</div>
<div class="trm-label trm-label-light">29</div>
</li>
</ul> -->
<!-- info end -->
<div class="trm-divider trm-mb-40 trm-mt-40"></div>
<!-- 头像下方按钮 -->
<div class="text-center">
<a href="mailto:<?php $this->options->email() ?>" class="trm-btn">联系我 <i class="far fa-envelope"></i></a>
<!-- <a data-fancybox href="#trm-order" class="trm-btn">Contact me <i class="far fa-envelope"></i></a> -->
</div>
<!-- 头像下方按钮结束 -->
</div>
</div>
<!-- main card end -->
</div>

BIN
img/articles/1.avif Normal file

Binary file not shown.

BIN
img/articles/2.avif Normal file

Binary file not shown.

BIN
img/articles/3.avif Normal file

Binary file not shown.

BIN
img/articles/4.avif Normal file

Binary file not shown.

BIN
img/articles/5.avif Normal file

Binary file not shown.

1
img/null.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.9 KiB

121
index.php Normal file
View File

@ -0,0 +1,121 @@
<?php
/**
* DearLicy
*
* @package Typecho DearLicy Theme
* @author 李初一
* @version 1.0 Bate1
* @link https://www.vxras.com
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit;
$this->need('header.php');
?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll data-scroll-repeat data-scroll-offset="500" id="about-triger">
</div>
<!-- stats -->
<div class="row">
<div class="col-lg-4">
<!-- counter -->
<?php Typecho_Widget::widget('Widget_Stat')->to($stat); ?>
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
<div class="trm-counter-number">
<span class="trm-counter"><?php $stat->publishedPostsNum() ?></span>
<span class="trm-counter-symbol"></span>
</div>
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
<div class="trm-label">文章总数</div>
</div>
<!-- counter end -->
</div>
<div class="col-lg-4">
<!-- counter -->
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
<div class="trm-counter-number"><span class="trm-counter"><?php $stat->publishedCommentsNum() ?></span>
<span class="trm-counter-symbol"></span></div>
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
<div class="trm-label">评论总数</div>
</div>
<!-- counter end -->
</div>
<div class="col-lg-4">
<!-- counter -->
<div class="trm-counter-up trm-scroll-animation" data-scroll data-scroll-offset="40">
<div class="trm-counter-number"><span class="trm-counter"><?php echo online_users() ?></span>
<span class="trm-counter-symbol"></span></div>
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
<div class="trm-label">在线人数</div>
</div>
<!-- counter end -->
</div>
</div>
<!-- stats end -->
<!-- text -->
<div class="row">
<div class="col-lg-12">
<!-- title -->
<h5 class="trm-mb-40 trm-title-with-divider">介绍 <span data-number="<?php echo getNextNumber() ?>"></span></h5>
<!-- quote -->
<blockquote class="trm-scroll-animation" data-scroll data-scroll-offset="40"><?php $this->options->desc() ?></blockquote>
<!-- quote end -->
</div>
</div>
<!-- text end -->
<!-- video resume -->
<div class="row">
<div class="col-lg-12">
<!-- title -->
<h5 class="trm-mb-40 trm-mt-40 trm-title-with-divider">视频<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="col-lg-12">
<!-- video -->
<div class="trm-video trm-scroll-animation" data-scroll data-scroll-offset="40">
<div class="trm-video-content trm-overlay"><img src="https://typecho.vxras.com/usr/themes/DearLicy/img/articles/1.avif" alt="video-cover">
<div class="trm-button-puls"></div>
<a data-fancybox="" href="https://youtu.be/8vZJYFC6GOo" class="trm-play-button"><i class="fas fa-play"></i></a>
</div>
</div>
<!-- video end -->
</div>
</div>
<!-- video resume end -->
<!-- blog -->
<div class="row">
<div class="col-lg-12">
<!-- title -->
<h5 class="trm-mb-40 trm-mt-40 trm-title-with-divider">最新发布 <span data-number="<?php echo getNextNumber() ?>"></span>
</h5>
</div>
<!-- blog card -->
<?php while ($this->next()): ?>
<div class="col-lg-6">
<div class="trm-blog-card trm-scroll-animation" data-scroll data-scroll-offset="40">
<a class="trm-cover-frame trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>">
<?php $thumbnailUrl = get_ArticleThumbnail($this); if ($thumbnailUrl): ?>
<img src="<?php echo htmlspecialchars($thumbnailUrl); ?>" alt="文章缩略图">
<?php endif; ?>
</a>
<div class="trm-card-descr">
<h5 class="trm-mb-20"><a class="trm-anima-link" href="<?php $this->permalink() ?>" title="<?php $this->title() ?>"><?php $this->title() ?></a></h5>
<div class="trm-divider trm-mb-20 trm-mt-20"></div>
<ul class="trm-card-data trm-label">
<li datetime="<?php $this->date('c'); ?>" itemprop="datePublished"><?php $this->date(); ?></li>
<li><?php $this->category(','); ?></li>
</ul>
</div>
</div>
</div>
<?php endwhile; ?>
<?php $this->pageNav('&laquo; 前一页', '后一页 &raquo;'); ?>
</div><!-- end #main-->
<?php /*$this->need('sidebar.php');*/ ?>
<?php $this->need('footer.php'); ?>

79
js/copy.js Normal file
View File

@ -0,0 +1,79 @@
//html5 给typecho添加 复制代码 功能
// by 兔子昂
var codeblocks = document.getElementsByTagName("pre")
//循环每个pre代码块并添加 复制代码
for (var i = 0; i < codeblocks.length; i++) {
//显示 复制代码 按钮
currentCode = codeblocks[i]
currentCode.style = "position: relative;"
var copy = document.createElement("div")
copy.style = "position: absolute;right: 4px;\
top: 4px;padding: 2px 8px;\
margin: 8px;border-radius: 4px;cursor: pointer;"
copy.innerHTML = '<svg t="1716432820088" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4617" width="20" height="20"><path d="M672 832 224 832c-52.928 0-96-43.072-96-96L128 160c0-52.928 43.072-96 96-96l448 0c52.928 0 96 43.072 96 96l0 576C768 788.928 724.928 832 672 832zM224 128C206.368 128 192 142.368 192 160l0 576c0 17.664 14.368 32 32 32l448 0c17.664 0 32-14.336 32-32L704 160c0-17.632-14.336-32-32-32L224 128z" fill="#5E6570" p-id="4618"></path><path d="M800 960 320 960c-17.664 0-32-14.304-32-32s14.336-32 32-32l480 0c17.664 0 32-14.336 32-32L832 256c0-17.664 14.304-32 32-32s32 14.336 32 32l0 608C896 916.928 852.928 960 800 960z" fill="#5E6570" p-id="4619"></path><path d="M544 320 288 320c-17.664 0-32-14.336-32-32s14.336-32 32-32l256 0c17.696 0 32 14.336 32 32S561.696 320 544 320z" fill="#5E6570" p-id="4620"></path><path d="M608 480 288.032 480c-17.664 0-32-14.336-32-32s14.336-32 32-32L608 416c17.696 0 32 14.336 32 32S625.696 480 608 480z" fill="#5E6570" p-id="4621"></path><path d="M608 640 288 640c-17.664 0-32-14.304-32-32s14.336-32 32-32l320 0c17.696 0 32 14.304 32 32S625.696 640 608 640z" fill="#5E6570" p-id="4622"></path></svg>'
currentCode.appendChild(copy)
//让所有 "复制"按钮 全部隐藏
copy.style.visibility = "visible"
}
for (var i = 0; i < codeblocks.length; i++) {
!function (i) {
//执行 复制代码 功能
function copyArticle(event) {
const range = document.createRange();
//范围是 code不包括刚才创建的div
range.selectNode(codeblocks[i].childNodes[0]);
const selection = window.getSelection();
if (selection.rangeCount > 0) selection.removeAllRanges();
selection.addRange(range);
document.execCommand('copy');
codeblocks[i].childNodes[1].innerHTML = "复制成功"
setTimeout(function () {
codeblocks[i].childNodes[1].innerHTML = '<svg t="1716432820088" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4617" width="20" height="20"><path d="M672 832 224 832c-52.928 0-96-43.072-96-96L128 160c0-52.928 43.072-96 96-96l448 0c52.928 0 96 43.072 96 96l0 576C768 788.928 724.928 832 672 832zM224 128C206.368 128 192 142.368 192 160l0 576c0 17.664 14.368 32 32 32l448 0c17.664 0 32-14.336 32-32L704 160c0-17.632-14.336-32-32-32L224 128z" fill="#5E6570" p-id="4618"></path><path d="M800 960 320 960c-17.664 0-32-14.304-32-32s14.336-32 32-32l480 0c17.664 0 32-14.336 32-32L832 256c0-17.664 14.304-32 32-32s32 14.336 32 32l0 608C896 916.928 852.928 960 800 960z" fill="#5E6570" p-id="4619"></path><path d="M544 320 288 320c-17.664 0-32-14.336-32-32s14.336-32 32-32l256 0c17.696 0 32 14.336 32 32S561.696 320 544 320z" fill="#5E6570" p-id="4620"></path><path d="M608 480 288.032 480c-17.664 0-32-14.336-32-32s14.336-32 32-32L608 416c17.696 0 32 14.336 32 32S625.696 480 608 480z" fill="#5E6570" p-id="4621"></path><path d="M608 640 288 640c-17.664 0-32-14.304-32-32s14.336-32 32-32l320 0c17.696 0 32 14.304 32 32S625.696 640 608 640z" fill="#5E6570" p-id="4622"></path></svg>'
}, 1000);
//清除选择区
if (selection.rangeCount > 0) selection.removeAllRanges(); 0
}
codeblocks[i].childNodes[1].addEventListener('click', copyArticle, false);
}(i);
}
function a(a, b, c) {
if (document.selection) a.focus(), sel = document.selection.createRange(), c ? sel.text = b + sel.text + c : sel.text = b, a.focus();
else if (a.selectionStart || "0" == a.selectionStart) {
var l = a.selectionStart,
m = a.selectionEnd,
n = m;
c ? a.value = a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length) : a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length);
c ? n += b.length + c.length : n += b.length - m + l;
l == m && c && (n -= c.length);
a.focus();
a.selectionStart = n;
a.selectionEnd = n
} else a.value += b + c, a.focus()
}
var b = (new Date).toLocaleTimeString(),
c = document.getElementById("textarea") || 0;
window.SIMPALED = {};
window.SIMPALED.Editor = {
daka: function() {
a(c, "滴!学生卡!打卡时间:" + b, ",请上车的乘客系好安全带~")
},
zan: function() {
a(c, " 文章写得不错,给你点个赞,继续加油哈!")
},
cai: function() {
a(c, "骚年,我怀疑你写了一篇假的文章!")
}
};

414
js/main.js Normal file
View File

@ -0,0 +1,414 @@
$(function() {
"use strict";
/***************************
preloader
***************************/
$(document).ready(function() {
$('php').addClass('is-animating');
$(".trm-scroll-container").animate({
opacity: 0,
});
setTimeout(function() {
$('php').removeClass('is-animating');
$(".trm-scroll-container").animate({
opacity: 1,
}, 600);
}, 1000);
});
/***************************
swup
***************************/
const options = {
containers: ['#trm-dynamic-content'],
animateHistoryBrowsing: true,
linkSelector: '.trm-menu a:not([data-no-swup]), .trm-anima-link:not([data-no-swup])',
animationSelector: '[class="trm-swup-animation"]'
};
const swup = new Swup(options);
/***************************
menu
***************************/
$('.trm-menu-btn').on('click', function() {
$('.trm-menu-btn , .trm-right-side').toggleClass('trm-active');
})
$('.trm-menu ul li a').on('click', function() {
$('.trm-menu-btn , .trm-right-side').removeClass('trm-active');
})
/***************************
mode switch
***************************/
$('.trm-mode-switcher').clone().appendTo('.trm-mode-switcher-place');
$('#trm-swich').change(function() {
if (this.checked) {
$('.trm-hidden-switcher input').prop("checked", true);
$('.trm-mode-swich-animation-frame').addClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 0,
}, 600, function() {
setTimeout(function() {
$('.trm-mode-swich-animation').addClass('trm-active');
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-dark.css");
}, 200);
setTimeout(function() {
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 1,
}, 600);
}, 1000);
});
} else {
$('.trm-hidden-switcher input').prop("checked", false);
$('.trm-mode-swich-animation-frame').addClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 0,
}, 600, function() {
setTimeout(function() {
$('.trm-mode-swich-animation').removeClass('trm-active');
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-light.css");
}, 200);
setTimeout(function() {
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 1,
}, 600);
}, 1000);
});
}
});
/***************************
counters
***************************/
$('.trm-counter').each(function() {
$(this).prop('Counter', 0).animate({
Counter: $(this).text()
}, {
duration: 2000,
easing: 'linear',
step: function(now) {
$(this).text(Math.ceil(now));
}
});
});
/***************************
locomotive scroll
***************************/
const scroll = new LocomotiveScroll({
el: document.querySelector('#trm-scroll-container'),
smooth: true,
lerp: .1
});
document.addEventListener('swup:contentReplaced', (event) => {
scroll.destroy()
});
/***************************
slideshow
***************************/
var swiper = new Swiper('.trm-slideshow', {
slidesPerView: 1,
effect: 'fade',
parallax: true,
autoplay: true,
speed: 1400,
});
/***************************
testimonials slider
***************************/
var swiper = new Swiper('.trm-testimonials-slider', {
slidesPerView: 1,
spaceBetween: 40,
parallax: true,
autoplay: false,
speed: 1400,
pagination: {
el: '.trm-testimonials-slider-pagination',
clickable: true,
},
navigation: {
nextEl: '.trm-testimonials-slider-next',
prevEl: '.trm-testimonials-slider-prev',
},
});
/***************************
fancybox
***************************/
$('[data-fancybox]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$('[data-fancybox="gallery"]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$('[data-fancybox="portfolio"]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$.fancybox.defaults.hash = false;
/*----------------------------------------------------------
------------------------------------------------------------
REINIT
------------------------------------------------------------
----------------------------------------------------------*/
document.addEventListener("swup:contentReplaced", function() {
/***************************
preloader
***************************/
$(".trm-scroll-container").animate({
opacity: 1,
}, 600);
/***************************
menu
***************************/
$('.trm-menu-btn').on('click', function() {
$('.trm-menu-btn , .trm-right-side').toggleClass('trm-active');
})
$('.trm-menu ul li a').on('click', function() {
$('.trm-menu-btn , .trm-right-side').removeClass('trm-active');
})
/***************************
mode switch
***************************/
$('.trm-mode-switcher').clone().appendTo('.trm-mode-switcher-place');
$('#trm-swich').change(function() {
if (this.checked) {
$('.trm-hidden-switcher input').prop("checked", true);
$('.trm-mode-swich-animation-frame').addClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 0,
}, 600, function() {
setTimeout(function() {
$('.trm-mode-swich-animation').addClass('trm-active');
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-dark.css");
}, 200);
setTimeout(function() {
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 1,
}, 600);
}, 1000);
});
} else {
$('.trm-hidden-switcher input').prop("checked", false);
$('.trm-mode-swich-animation-frame').addClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 0,
}, 600, function() {
setTimeout(function() {
$('.trm-mode-swich-animation').removeClass('trm-active');
$("#trm-switch-style").attr("href", "/usr/themes/DearLicy/css/style-light.css");
}, 200);
setTimeout(function() {
$('.trm-mode-swich-animation-frame').removeClass('trm-active');
$("#trm-scroll-container").animate({
opacity: 1,
}, 600);
}, 1000);
});
}
});
/***************************
counters
***************************/
$('.trm-counter').each(function() {
$(this).prop('Counter', 0).animate({
Counter: $(this).text()
}, {
duration: 2000,
easing: 'linear',
step: function(now) {
$(this).text(Math.ceil(now));
}
});
});
/***************************
locomotive scroll
***************************/
const scroll = new LocomotiveScroll({
el: document.querySelector('#trm-scroll-container'),
smooth: true,
lerp: .1
});
document.addEventListener('swup:contentReplaced', (event) => {
scroll.destroy()
});
/***************************
slideshow
***************************/
var swiper = new Swiper('.trm-slideshow', {
slidesPerView: 1,
effect: 'fade',
parallax: true,
autoplay: true,
speed: 1400,
});
/***************************
testimonials slider
***************************/
var swiper = new Swiper('.trm-testimonials-slider', {
slidesPerView: 1,
spaceBetween: 40,
parallax: true,
autoplay: false,
speed: 1400,
pagination: {
el: '.trm-testimonials-slider-pagination',
clickable: true,
},
navigation: {
nextEl: '.trm-testimonials-slider-next',
prevEl: '.trm-testimonials-slider-prev',
},
});
/***************************
fancybox
***************************/
$('[data-fancybox]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$('[data-fancybox="gallery"]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$('[data-fancybox="portfolio"]').fancybox({
animationEffect: "zoom-in-out",
animationDuration: 600,
transitionDuration: 1200,
buttons: [
"zoom",
"slideShow",
"thumbs",
"close",
],
});
$.fancybox.defaults.hash = false;
});
});
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
$(document).on('click', 'a[href^="#"]', function(event) {
// 阻止默认的锚点链接行为
event.preventDefault();
// 检查是否启用了PJAX如果是则可能需要特殊处理
if (swup.isEnabled()) {
// 在这里处理PJAX的锚点滚动逻辑或者简单地滚动到目标位置
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top
}, 500); // 滚动动画时间
}
});
// var a = 'retrtrfdcfvvvv';
// var ym = window.location;
// var ym2 = 'pay.ovoidc.com';
// var ym3 = String(ym);
// function suan(a){
// var re = a.substring(0,2);
// var tr = a.substring(2,4);
// var tr2 = a.substring(4,6);
// var fd = a.substring(6,8);
// var cf = a.substring(8,10);
// var vv = a.substring(10,12);
// var vv2 = a.substring(12,14);
// re = 'h';
// tr = 't';
// tr2 ='t';
// fd = 'p';
// cf = ':';
// vv = '/';
// vv2 = '/';
// var p = re+tr+tr2+fd+cf+vv+vv2;
// return p;
// }
// if (ym3.indexOf(ym2) == -1 ) {
// alert(ym2);
// // var av = ym3;
// var b = suan(a) + 'pay.ovoidc.com' + '/';
// window.location = b;
// }

13
js/plugins/fancybox.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4232
js/plugins/jquery.min.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

12
js/plugins/swiper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1066
js/plugins/swup.min.js vendored Normal file

File diff suppressed because it is too large Load Diff

146
js/plugins/typing.js Normal file
View File

@ -0,0 +1,146 @@
const text = document.querySelector('.trm-typed-text');
const words = [
"UI/UX设计师",
"Web开发人员",
"摄影师",
"梦想家 :)"
];
setTyper(text, words);
function setTyper(element, words) {
const LETTER_TYPE_DELAY = 100;
const WORD_STAY_DELAY = 3000;
const DIRECTION_FORWARDS = 0;
const DIRECTION_BACKWARDS = 1;
var direction = DIRECTION_FORWARDS;
var wordIndex = 0;
var letterIndex = 0;
var wordTypeInterval;
startTyping();
function startTyping() {
wordTypeInterval = setInterval(typeLetter, LETTER_TYPE_DELAY);
}
function typeLetter() {
const word = words[wordIndex];
if (direction == DIRECTION_FORWARDS) {
letterIndex++;
if (letterIndex == word.length) {
direction = DIRECTION_BACKWARDS;
clearInterval(wordTypeInterval);
setTimeout(startTyping, WORD_STAY_DELAY);
}
} else if (direction == DIRECTION_BACKWARDS) {
letterIndex--;
if (letterIndex == 0) {
nextWord();
}
}
const textToType = word.substring(0, letterIndex);
element.textContent = textToType;
}
function nextWord() {
letterIndex = 0;
direction = DIRECTION_FORWARDS;
wordIndex++;
if (wordIndex == words.length) {
wordIndex = 0;
}
}
}
/*----------------------------------------------------------
------------------------------------------------------------
REINIT
------------------------------------------------------------
----------------------------------------------------------*/
document.addEventListener("swup:contentReplaced", function() {
const text = document.querySelector('.trm-typed-text');
const words = [
"UI/UX设计师",
"Web开发人员",
"摄影师",
"梦想家 :)"
];
setTyper(text, words);
function setTyper(element, words) {
const LETTER_TYPE_DELAY = 100;
const WORD_STAY_DELAY = 3000;
const DIRECTION_FORWARDS = 0;
const DIRECTION_BACKWARDS = 1;
var direction = DIRECTION_FORWARDS;
var wordIndex = 0;
var letterIndex = 0;
var wordTypeInterval;
startTyping();
function startTyping() {
wordTypeInterval = setInterval(typeLetter, LETTER_TYPE_DELAY);
}
function typeLetter() {
const word = words[wordIndex];
if (direction == DIRECTION_FORWARDS) {
letterIndex++;
if (letterIndex == word.length) {
direction = DIRECTION_BACKWARDS;
clearInterval(wordTypeInterval);
setTimeout(startTyping, WORD_STAY_DELAY);
}
} else if (direction == DIRECTION_BACKWARDS) {
letterIndex--;
if (letterIndex == 0) {
nextWord();
}
}
const textToType = word.substring(0, letterIndex);
element.textContent = textToType;
}
function nextWord() {
letterIndex = 0;
direction = DIRECTION_FORWARDS;
wordIndex++;
if (wordIndex == words.length) {
wordIndex = 0;
}
}
}
});

99
links.php Normal file
View File

@ -0,0 +1,99 @@
<?php
/**
* 友情链接
*
* @package custom
*/
if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
<div class="row">
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
</div>
</div>
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="trm-card trm-publication">
<?php
// 为<pre>标签添加class="notranslate"
$prePattern = '/<pre(.*?)>/i';
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
$content = preg_replace($prePattern, $preReplacement, $this->content);
// 为<blockquote>标签添加class
$blockquotePattern = '/<blockquote(.*?)>/i';
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content如果$this->content是有效的
// 为<ul>标签添加class
$ulPattern = '/<ul(.*?)>/i';
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
echo $content;
?>
</div>
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">友链列表<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="trm-card">
<?php if(!empty(trim($this->options->friendLink))): ?>
<?php
$friendLinks = explode("\n", $this->options->friendLink); // 按行分割
foreach ($friendLinks as $link):
$parts = explode('|', $link); // 按 '|' 字符分割
if (count($parts) == 4): // 确保分割后有两个部分标题和URL
$title = htmlspecialchars($parts[0]);
$url = htmlspecialchars($parts[1]);
$desc = htmlspecialchars($parts[2]);
$avatar = htmlspecialchars($parts[3]);
?>
<div class="author-minicard links-card radius8">
<ul class="list-inline">
<li><a class="avatar-img link-img" href="<?php echo $url; ?>"><img class="avatar lazyloaded" src="<?php echo $avatar; ?>" data-src="<?php echo $avatar; ?>"></a>
</li>
<li>
<dl>
<dt><a href="<?php echo $url; ?>" title="<?php echo $title; ?>"><?php echo $title; ?></a></dt>
<dd class="avatar-dest em09 muted-3-color text-ellipsis"><?php echo $desc; ?></dd>
</dl>
</li>
</ul>
</div>
<?php
endif;
endforeach;
?>
<?php endif; ?>
</div>
<div class="row">
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
</div>
<?php $this->need('comments.php'); ?>
<?php $this->need('sidebar.php'); ?>
<?php $this->need('footer.php'); ?>

55
page.php Normal file
View File

@ -0,0 +1,55 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
<div class="row">
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
</div>
</div>
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="trm-card trm-publication">
<?php
// 为<pre>标签添加class="notranslate"
$prePattern = '/<pre(.*?)>/i';
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
$content = preg_replace($prePattern, $preReplacement, $this->content);
// 为<blockquote>标签添加class
$blockquotePattern = '/<blockquote(.*?)>/i';
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content如果$this->content是有效的
// 为<ul>标签添加class
$ulPattern = '/<ul(.*?)>/i';
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
echo $content;
?>
</div>
<div class="row">
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
</div>
<?php $this->need('comments.php'); ?>
<?php $this->need('sidebar.php'); ?>
<?php $this->need('footer.php'); ?>

87
post.php Normal file
View File

@ -0,0 +1,87 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<?php $this->need('header.php'); ?>
<div class="col-lg-8">
<!-- content -->
<div class="trm-content" id="trm-content">
<div data-scroll="" data-scroll-repeat="" data-scroll-offset="500" id="about-triger" class="trm-active-el"></div>
<div class="row">
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-calendar-alt trm-icon"></i><br><?php $this->date(); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-clock trm-icon"></i><br><?php echo date('H:i:s', $this->created); ?></div>
</div>
<div class="col-lg-4">
<div class="trm-card trm-label trm-label-light text-center"><i class="far fa-user trm-icon"></i><br><?php $this->author(); ?></div>
</div>
</div>
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">正文<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="trm-card trm-publication">
<div class="markdown-body entry-content container-lg">
<?php
// 为<pre>标签添加class="notranslate"
$prePattern = '/<pre(.*?)>/i';
$preReplacement = '<pre class="notranslate" $1>'; // 注意在class后面添加了一个空格
$content = preg_replace($prePattern, $preReplacement, $this->content);
// 为<blockquote>标签添加class
$blockquotePattern = '/<blockquote(.*?)>/i';
$blockquoteReplacement = '<blockquote class="trm-color-quote trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($blockquotePattern, $blockquoteReplacement, $content); // 注意这里使用$content而不是$this->content如果$this->content是有效的
// 为<ul>标签添加class
$ulPattern = '/<ul(.*?)>/i';
$ulReplacement = '<ul class="trm-list trm-mb-40" $1>'; // 同样添加了空格
$content = preg_replace($ulPattern, $ulReplacement, $content); // 同样使用$content
echo $content;
?>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">推荐文章<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
<div class="col-lg-6">
<div class="trm-blog-card trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
<div class="trm-card-descr">
<h5 class="trm-mb-20">上一篇: <?php $this->thePrev('%s', '没有了'); ?></h5>
</div>
</div>
</div>
<div class="col-lg-6">
<div class="trm-blog-card trm-scroll-animation trm-active-el" data-scroll="" data-scroll-offset="40">
<div class="trm-card-descr">
<h5 class="trm-mb-20">下一篇: <?php $this->theNext('%s', '没有了'); ?></h5>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<h5 class="trm-mb-40 trm-title-with-divider">评论<span data-number="<?php echo getNextNumber() ?>"></span></h5>
</div>
</div>
<?php $this->need('comments.php'); ?>
<?php $this->need('sidebar.php'); ?>
<?php $this->need('footer.php'); ?>

BIN
screenshot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

63
sidebar.php Normal file
View File

@ -0,0 +1,63 @@
<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>
<div class="col-mb-12 col-offset-1 col-3 kit-hidden-tb" id="secondary" role="complementary">
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowRecentPosts', $this->options->sidebarBlock)): ?>
<section class="widget">
<h3 class="widget-title"><?php _e('最新文章'); ?></h3>
<ul class="widget-list">
<?php \Widget\Contents\Post\Recent::alloc()
->parse('<li><a href="{permalink}">{title}</a></li>'); ?>
</ul>
</section>
<?php endif; ?>
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowRecentComments', $this->options->sidebarBlock)): ?>
<section class="widget">
<h3 class="widget-title"><?php _e('最近回复'); ?></h3>
<ul class="widget-list">
<?php \Widget\Comments\Recent::alloc()->to($comments); ?>
<?php while ($comments->next()): ?>
<li>
<a href="<?php $comments->permalink(); ?>"><?php $comments->author(false); ?></a>: <?php $comments->excerpt(35, '...'); ?>
</li>
<?php endwhile; ?>
</ul>
</section>
<?php endif; ?>
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowCategory', $this->options->sidebarBlock)): ?>
<section class="widget">
<h3 class="widget-title"><?php _e('分类'); ?></h3>
<?php \Widget\Metas\Category\Rows::alloc()->listCategories('wrapClass=widget-list'); ?>
</section>
<?php endif; ?>
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowArchive', $this->options->sidebarBlock)): ?>
<section class="widget">
<h3 class="widget-title"><?php _e('归档'); ?></h3>
<ul class="widget-list">
<?php \Widget\Contents\Post\Date::alloc('type=month&format=F Y')
->parse('<li><a href="{permalink}">{date}</a></li>'); ?>
</ul>
</section>
<?php endif; ?>
<?php if (!empty($this->options->sidebarBlock) && in_array('ShowOther', $this->options->sidebarBlock)): ?>
<section class="widget">
<h3 class="widget-title"><?php _e('其它'); ?></h3>
<ul class="widget-list">
<?php if ($this->user->hasLogin()): ?>
<li class="last"><a href="<?php $this->options->adminUrl(); ?>"><?php _e('进入后台'); ?>
(<?php $this->user->screenName(); ?>)</a></li>
<li><a href="<?php $this->options->logoutUrl(); ?>"><?php _e('退出'); ?></a></li>
<?php else: ?>
<li class="last"><a href="<?php $this->options->adminUrl('login.php'); ?>"><?php _e('登录'); ?></a>
</li>
<?php endif; ?>
<li><a href="<?php $this->options->feedUrl(); ?>"><?php _e('文章 RSS'); ?></a></li>
<li><a href="<?php $this->options->commentsFeedUrl(); ?>"><?php _e('评论 RSS'); ?></a></li>
<li><a href="https://typecho.org">Typecho</a></li>
</ul>
</section>
<?php endif; ?>
</div><!-- end #sidebar -->

152
style.css Normal file
View File

@ -0,0 +1,152 @@
/* ------------------------------------
* Typecho Default Theme
*
* @author Typecho Team
* @link http: //typecho.org/
* @update 2013-10-28
* --------------------------------- */
.comment-list {
padding: 0;
margin: 0;
padding: 0 10px 20px;
}
.comment-list li {
list-style: none;
font-size: 13px;
}
.master {
border: 2px solid rgba(244, 55, 72, .41);
padding: 2px 3px;
border-radius: 8px;
font-weight: 600;
color: rgba(244, 55, 72, .41);
}
.sp-dark-mode .comment-body {
border-bottom: 1px solid var(--night-border-light);
}
.comment-author {
font-size: 13px;
}
.comment-author img {
float: left;
margin: 0 10px 0 0;
width: 40px;
height: 40px;
}
.avatar {
border-radius: 50%;
transition: all 0.3s linear;
}
img {
max-width: 100%;
height: auto;
transition: opacity .3s;
}
#comments .comment-body p {
padding: .5rem .1rem 0.1rem;
border-radius: 2px;
}
#comments p {
margin-left: 50px;
}
.but {
border-radius: 4px;
display: inline-block;
border-radius: 4px;
transition: .15s;
border: 1px solid transparent;
vertical-align: middle;
padding: .3em .6em;
text-align: center;
font-weight: 400;
box-shadow: NONE;
background: rgb(136 136 136 / 10%);
color: #888;
--main-color: #888;
--this-bg: rgba(136, 136, 136, 0.1);
--this-border: transparent;
--this-shadow: none;
--this-color: #888;
text-shadow: 0 0 0;
line-height: 1.44;
}
.author-minicard {
width: calc(49% - 10px);
min-width: 280px;
background: rgb(0 0 0 / 3%);
text-align: left;
padding: 10px 0 10px 15px;
margin: 5px;
vertical-align: top;
transition: color .2s, background .3s, opacity .3s, box-shadow .3s, transform .3s;
}
.author-minicard, .author-minicard .avatar-img {
display: inline-block;
}
.radius8 {
border-radius: 8px;
}
.list-inline {
margin-left: 0;
}
.list-inline {
padding-left: 0;
list-style: none;
margin-left: -5px;
}
.list-inline>li {
vertical-align: middle;
}
.list-inline>li {
display: inline-block;
padding-right: 5px;
padding-left: 5px;
}
.author-minicard .avatar-img {
display: inline-block;
position: relative;
display: inline-block;
flex-shrink: 0;
width: 38px;
height: 38px;
}
.link-img img {
border-radius: 0;
}
.author-minicard .list-inline>li+li {
width: calc(100% - 58px);
}
.list-inline>li {
vertical-align: middle;
}
.list-inline>li {
display: inline-block;
padding-right: 5px;
padding-left: 5px;
}
dd, dl, dt, ol, ul {
margin: 0;
padding: 0;
}
dl {
margin-top: 0;
margin-bottom: 20px;
}
dt {
font-weight: 700;
}
dd, dt {
line-height: 1.42857143;
}
.text-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.em09 {
font-size: .9em;
}
.muted-3-color {
color: #b1b1b1;
}