summaryrefslogtreecommitdiffstats
path: root/libs/Contents.php
diff options
context:
space:
mode:
authorBigCoke233 <hi@guhub.cn>2020-07-30 23:45:41 +0800
committerBigCoke233 <hi@guhub.cn>2020-07-30 23:45:41 +0800
commit23c8e8fed64c5995101cc9ceb08706d8849b0a3c (patch)
tree0b5cd4eb18caf8313f41911b1d208c3da2c72c88 /libs/Contents.php
parent7168e743fe802cc977ce8fe990f09bf87ba46eaa (diff)
:zap: Add: 各种优化、新增和修复
- 新增:支持自定义「导航栏图标按钮」 - 新增:文章目录(使用 `{:toc:}` 在文中插入目录) - 新增:归档页面中添加「文章分类」栏目 - 优化:将设置项「Pjax 完成后执行事件」更改为更准确的「Pjax 回调函数」 - 修复:一个存在了超久的拼写错误(`paresNav`=>`parseNav`) - 修复:archive 页面(即分类、标签、搜索等)文章头图问题
Diffstat (limited to 'libs/Contents.php')
-rw-r--r--libs/Contents.php44
1 files changed, 42 insertions, 2 deletions
diff --git a/libs/Contents.php b/libs/Contents.php
index d821b72..b1b8db9 100644
--- a/libs/Contents.php
+++ b/libs/Contents.php
@@ -32,7 +32,7 @@ class Contents
//Links
$text = Contents::parseLink($text);
//toc
- $text = preg_replace('/{:toc:}/s',Contents::tableOfContents($text),$text);
+ $text = preg_replace('/{:toc:}/s', '<div class="toc-box">'.Contents::tableOfContents($text).'</div>', $text);
}
return $text;
}
@@ -277,7 +277,7 @@ class Contents
/**
* 解析自定义导航栏
*/
- static public function paresNav($data, $type) {
+ static public function parseNav($data, $type) {
$de_json = json_decode($data, true);
$count_json = count($de_json);
for ($i = 0; $i < $count_json; $i++) {
@@ -296,6 +296,46 @@ class Contents
}
}
+ static public function parseNavIcon($data, $type) {
+ $de_json = json_decode($data, true);
+ $count_json = count($de_json);
+ for ($i = 0; $i < $count_json; $i++) {
+ $icon = $de_json[$i]['icon'];
+ $link = $de_json[$i]['link'];
+ $action = $de_json[$i]['action'];
+ //定义 class
+ if($type=="top-nav"){
+ $class = 'nav-icon-button';
+ }
+ elseif($type=="drawer"){
+ $class = 'drawer-icon';
+ }
+ elseif($type=="mobile"){
+ $class = 'nav-mobile-icon';
+ }
+ else{
+ $class= 'unknown';
+ }
+ if($de_json[$i]['class']) $class.= ' '.$de_json[$i]['class'];//自定义 class
+ //计算 right 距离
+ $right_more=$i*45;
+ $right=20+$right_more;
+ //添加 $other
+ if($type=="top-nav") $other=' style="right: '.$right.'px"';
+ //输出导航图标按钮
+ if($type=="top-nav"||$type=="drawer"){
+ if(!$action): echo '<a href="'.$link.'" class="'.$class.'"'.$other.'><i class="iconfont icon-'.$icon.'"></i></a>';
+ else: echo '<button class="'.$class.'" onclick="'.$action.'"'.$other.'><i class="iconfont icon-'.$icon.'"></i></button>';
+ endif;
+ }
+ elseif($type=="mobile"){
+ if(!$action): echo '<a style="float:left" href="'.$link.'"'.$other.'><i class="iconfont icon-'.$icon.'"></i></a>';
+ else: echo '<a style="float:left" onclick="'.$action.'"'.$other.'><i class="iconfont icon-'.$icon.'"></i></a>';
+ endif;
+ }
+ }
+ }
+
/**
* 根据 id 返回对应的对象
* 此方法在 Typecho 1.2 以上可以直接调用 Helper::widgetById();