随机文章
function theme_random_posts(){ $defaults = array( 'number' => 6, 'before' => '<ul class="archive-posts">', 'after' => '</ul>', 'xformat' => '<li class="archive-post"> <a class="archive-post-title" href="{permalink}">{title}</a> </li>' ); $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('status = ?','publish') ->where('type = ?', 'post') ->limit($defaults['number']) ->order('RAND()'); $result = $db->fetchAll($sql); echo $defaults['before']; foreach($result as $val){ $val = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($val); echo str_replace(array('{permalink}', '{title}'),array($val['permalink'], $val['title']), $defaults['xformat']); } echo $defaults['after']; }
前台调用<?php theme_random_posts();?>
页面加载耗时代码
function timer_start() { global $timestart; $mtime = explode( ' ', microtime() ); $timestart = $mtime[1] + $mtime[0]; return true; } timer_start(); function timer_stop( $display = 0, $precision = 3 ) { global $timestart, $timeend; $mtime = explode( ' ', microtime() ); $timeend = $mtime[1] + $mtime[0]; $timetotal = $timeend - $timestart; $r = number_format( $timetotal, $precision ); if ( $display ) echo $r; return $r; }
然后,模板部分加入<?php timer_stop() ?>
【转自http://t.160.me/65.html】
文章中文字数统计
function art_count ($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']); echo mb_strlen($text,'UTF-8'); }
模板引用<?php echo art_count($this->cid); ?>
【转自https://i.chainwon.com/131.html】
替换文章内容
function themeInit($archive) { if ($archive->is('single')) { $archive->content = image_class_replace($archive->content); } } function image_class_replace($content) { $content = preg_replace('#<a(.*?) href="([^"]*/)?(([^"/]*)\.[^"]*)"(.*?)>#', '<a$1 href="$2$3"$5 target="_blank">', $content); return $content; }
上述代码就是将不含blank属性的超链接,替换为加上了blank属性的超链接
自定义上下篇链接
/** * 显示下一篇 * * @access public * @param string $default 如果没有下一篇,显示的默认文字 * @return void */ function theNext($widget, $default = NULL) { $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created > ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_ASC) ->limit(1); $content = $db->fetchRow($sql); if ($content) { $content = $widget->filter($content); $link = '<a href="' . $content['permalink'] . '" title="' . $content['title'] . '">下一篇</a>'; echo $link; } else { echo $default; } } /** * 显示上一篇 * * @access public * @param string $default 如果没有下一篇,显示的默认文字 * @return void */ function thePrev($widget, $default = NULL) { $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('table.contents.created < ?', $widget->created) ->where('table.contents.status = ?', 'publish') ->where('table.contents.type = ?', $widget->type) ->where('table.contents.password IS NULL') ->order('table.contents.created', Typecho_Db::SORT_DESC) ->limit(1); $content = $db->fetchRow($sql); if ($content) { $content = $widget->filter($content); $link = '<a href="' . $content['permalink'] . '" title="' . $content['title'] . '">上一篇</a>'; echo $link; } else { echo $default; } }
调用代码<?php thePrev($this); ?>
和<?php theNext($this); ?>
【转自http://t.160.me/33.html】
自定义分类、标签、搜索、首页等文章分页数量
function themeInit($archive) { if ($archive->is('index')) { $archive->parameter->pageSize = 10; // 自定义条数 } } 上边的是自定义首页文章数量,下面的是自定义default文章数量 function themeInit($archive) { if ($archive->is('category', 'default')) { $archive->parameter->pageSize = 10; // 自定义条数 } }
【转自https://app.typecho.me/coder/10.html】
判断最新帖子显示图标
例如24小时内发布的贴,需要一个标志来完成。这里是用判断输入特殊字符,再用CSS判断完成的。
/** * 判断时间区间 * * 使用方法 if(timeZone($this->date->timeStamp)) echo 'ok'; */ function timeZone($from){ $now = new Typecho_Date(Typecho_Date::gmtTime()); return $now->timeStamp - $from < 24*60*60 ? true : false; }
在index.php
中调用<?php if(timeZone($this->date->timeStamp)) echo ' new'; ?>
【转自http://t.160.me/44.html】
N天内评论最多的文章
代码作用是N天内评论最多的N篇文章,这个N你可以自己定义,自己修改。
<?php function rmcp($days = 30,$num = 5){ $defaults = array( 'before' => '<ul>', 'after' => '</ul>', 'xformat' => '<li><a href="{permalink}">{title}</a><span class="subcolor">已有评论数:{commentsNum}</span></li>' ); $time = time() - (24 * 60 * 60 * $days); $db = Typecho_Db::get(); $sql = $db->select()->from('table.contents') ->where('created >= ?', $time) ->where('type = ?', 'post') ->limit($num) ->order('commentsNum',Typecho_Db::SORT_DESC); $result = $db->fetchAll($sql); echo $defaults['before']; foreach($result as $val){ $val = Typecho_Widget::widget('Widget_Abstract_Contents')->filter($val); echo str_replace(array('{permalink}', '{title}', '{commentsNum}'), array($val['permalink'], $val['title'], $val['commentsNum']), $defaults['xformat']); } echo $defaults['after']; } ?>
模板调用<?php rmcp(60,5);?>
这个调用的意思是2个月内评论最多的前5篇文章。【转自http://t.160.me/85.html】
百度是否收录
//判断内容页是否百度收录 function baidu_record() { $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; if(checkBaidu($url)==1) {echo "百度已收录"; } else {echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"http://zhanzhang.baidu.com/sitesubmit/index?sitename=$url\">百度未收录</a>";} } function checkBaidu($url) { $url = 'http://www.baidu.com/s?wd=' . urlencode($url); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $rs = curl_exec($curl); curl_close($curl); if (!strpos($rs, '没有找到')) { //没有找到说明已被百度收录 return 1; } else { return -1; } }
模板调用代码<?php echo baidu_record() ?>
【转自http://www.ihewro.xyz/archives/322/】
在文章编辑页面设置个自定义字段
function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('输入缩略图地址(仅文章有效)')); $layout->addItem($thumb); }
待续
1滟滟随波千万里,何处春江无月明!