Sky 主题设置'; $logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, Helper::options()->themeUrl.'/assets/avatar.png', '站点 LOGO 地址', '在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO'); $form->addInput($logoUrl); $realHomepage = new Typecho_Widget_Helper_Form_Element_Text('realHomepage', NULL, NULL, '全站首页', '填入的链接会在导航栏首位显示为「首页」'); $form->addInput($realHomepage); $icpInfo = new Typecho_Widget_Helper_Form_Element_Text('icpInfo', NULL, NULL, 'ICP 备案号', '显示在底部,留空则不显示'); $form->addInput($icpInfo->addRule('xssCheck', '请不要使用特殊字符')); $nisInfo = new Typecho_Widget_Helper_Form_Element_Text('nisInfo', NULL, NULL, '网安备案号', '显示在底部,留空则不显示'); $form->addInput($nisInfo->addRule('xssCheck', '请不要使用特殊字符')); $notification = new Typecho_Widget_Helper_Form_Element_Text('notification', NULL, NULL, '网站公告', '显示在首页,留空则不显示'); $form->addInput($notification); $notificationIcon = new Typecho_Widget_Helper_Form_Element_Text('notificationIcon', NULL, NULL, '网站公告图标', '显示在首页网站公告信息框前的 FontAwesome 图标代码,留空则不显示'); $form->addInput($notificationIcon); $oldPosts = new Typecho_Widget_Helper_Form_Element_Text('oldPosts', NULL, '365', '文章有效期', '单位:天。在此天数之前发布的文章将会显示「这是一篇旧文」的提示。留空则不显示'); $form->addInput($oldPosts); $commentsNotice = new Typecho_Widget_Helper_Form_Element_Text('commentsNotice', NULL, NULL, '评论区公告', '显示在评论区,留空则不显示'); $form->addInput($commentsNotice); $bottomLinks = new Typecho_Widget_Helper_Form_Element_Text('bottomLinks', NULL, NULL, '底部链接', '(需要配合友情链接插件使用)网站底部的链接分类名称'); $form->addInput($bottomLinks); $headerCode = new Typecho_Widget_Helper_Form_Element_Textarea('headerCode', NULL, NULL, '头部代码', '在头部添加的 HTML 代码,可以插入 JavsScript'); $form->addInput($headerCode); $footerCode = new Typecho_Widget_Helper_Form_Element_Textarea('footerCode', NULL, NULL, '页脚代码', '在页脚添加的 HTML 代码,可以插入 JavsScript 代码'); $form->addInput($footerCode); $cunstomCSS = new Typecho_Widget_Helper_Form_Element_Textarea('cunstomCSS', NULL, NULL, '自定义 CSS', '加入自定义的 CSS 代码'); $form->addInput($cunstomCSS); } function themeFields($layout) { $headPic = new Typecho_Widget_Helper_Form_Element_Text('headPic', NULL, NULL, '文章头图地址', '仅对文章有效。在这里填入一个图片 URL 地址, 就可以让文章加上头图。留空则不显示头图。'); $layout->addItem($headPic); $pubPlace = new Typecho_Widget_Helper_Form_Element_Text('pubPlace', NULL, NULL, '文章发布地点', '仅对文章有效。在这里输入一个地点的名字,文章头部会显示。留空则不显示发布地点。'); $layout->addItem($pubPlace); $pageIcon = new Typecho_Widget_Helper_Form_Element_Text('pageIcon', NULL, NULL, '页面图标', '仅对非隐藏页面有效。在这里为页面填入一个 fontawesome icon 代码,在菜单栏链接前会显示图标。Fontawesome 是 5.15 版本,参见 FontAwesome 图标库。留空则不显示图标。'); $layout->addItem($pageIcon); $linkTo = new Typecho_Widget_Helper_Form_Element_Text('linkTo', NULL, NULL, '重定向至', '在这里输入一个 URL,打开该页面或文章时会自动重定向到这个 URL,可以用于定制菜单栏。留空则不重定向。'); $layout->addItem($linkTo); } function exContent($content){ // 文章内短代码 $pattern = '/\[(info)\](.*?)\[\s*\/\1\s*\]/'; $replacement = ' '; $content = preg_replace($pattern, $replacement, $content); $pattern = '/\[(warning)\](.*?)\[\s*\/\1\s*\]/'; $replacement = ' '; $content = preg_replace($pattern, $replacement, $content); $pattern = '/\[(danger)\](.*?)\[\s*\/\1\s*\]/'; $replacement = ' '; $content = preg_replace($pattern, $replacement, $content); // 文章 TOC 功能 if (preg_match_all('/(.*)<\/h\d>/isU', $content, $outarr)){ $toc_out = ""; $minlevel = 6; for ($key=0; $key{$outarr[2][$key]}". substr($ta, strlen($outarr[0][$key])+$tb); $content = substr($ta, 0, $tb). "". substr($ta, $tb); // 用伪锚点实现链接偏移。Safari 居然不支持!! if ($level > $curlevel) $toc_out.=str_repeat("
    \n", $level-$curlevel); elseif ($level < $curlevel) $toc_out.=str_repeat("
\n", $curlevel-$level); $curlevel = $level; $toc_out .= "
  • {$outarr[2][$key]}
  • \n"; } $content = "
    {$toc_out}
    ". $content; } // Fancybox 图片灯箱 $content = preg_replace("/\"([^\"]*)\"/i", "\"\\2\"", $content); return $content; } // 来自插件 WordsCounter // https://github.com/elatisy/Typecho_WordsCounter function allOfCharacters() { $chars = 0; $db = Typecho_Db::get(); $select = $db ->select('text') ->from('table.contents') ->where('table.contents.status = ?','publish'); $rows = $db->fetchAll($select); foreach ($rows as $row){ $chars += mb_strlen($row['text'], 'UTF-8'); } $unit = ''; if ($chars >= 10000) { $chars /= 10000; $unit = 'W'; } else if($chars >= 1000) { $chars /= 1000; $unit = 'K'; } $out = sprintf('%.2lf%s',$chars, $unit); echo $out; } // 来自插件 IPLocation function showLocation($ip) { require_once 'include/IP/IP.php'; $addresses = IP::find($ip); $address = ''; if (!empty($addresses)) { $addresses = array_unique($addresses); $address = implode('', $addresses); $address = str_replace('中国', '', $address); } echo $address; } // 来自插件 UserAgent function getUAImg($type, $name, $title) { global $url_img; $img = "" . $title . ""; return $img; } function showUserAgent($ua) { global $url_img; $url_img = Helper::options()->themeUrl . '/include/UserAgent/img/'; /* OS */ require_once 'include/UserAgent/get_os.php'; $Os = get_os($ua); $OsImg = getUAImg("os/", $Os['code'], $Os['title']); /* Browser */ require_once 'include/UserAgent/get_browser_name.php'; $Browser = get_browser_name($ua); $BrowserImg = getUAImg("browser/", $Browser['code'], $Browser['title']); echo " " . $OsImg . " " . $BrowserImg; }