汾河美景

发表于 2019-10-07   |   分类于 生活志

redmi K20 pro摄于汾河公园

魅族Pro6s更新安卓7.1后完美root及xp框架

发表于 2017-09-07   |   分类于 生活志

Flyme是个好用的安卓系统,但也是个不好调教的系统。自从升级了安卓7.0+系统,原先折腾的xp框架就彻底残废了,甚至都不能完全root了。查了一些资料,整理了一下,留个笔记!如果确保每一步都严格执行就没有问题。

阅读全文 »

王家大院

发表于 2017-01-16   |   分类于 生活志

华夏第一民居(山西省灵石县城东静升镇)。

阅读全文 »

丙申猴年

发表于 2016-01-10   |   分类于 生活志

2016,丙申猴年;备好春联,回家过年!

阅读全文 »

活着的意义

发表于 2015-08-14   |   分类于 生活志

但凡没有固定答案的问题,想的久了都会觉得土;不过,活到老,学到老,想到老!
最近突然想明白了这件事情,人为什么活着?当然,这只是今天的答案,以后也一定会有别的答案。

阅读全文 »

祥云山庄

发表于 2015-05-27   |   分类于 生活志

拍摄地点:祥云山庄(西安)
拍摄设备:iphone5s(手持拍摄)
剪辑软件:Final Cut Pro X
拍摄时间:2015-4-25

阅读全文 »

我的工作

发表于 2015-05-24   |   分类于 生活志 , 笔记 , 工作

题记:看到一个说话朴实到土气、气场凌乱到怯场的人在台上说出自己成功经验,我想对很多人都会有些冲击吧。

我们一直受到一种个性化教育,也都试图将自己打造得高端大气上档次。可是,有些共性的,底层的,却弥足珍贵的东西,早已离我们远去。

阅读全文 »

我结婚了

发表于 2015-05-01   |   分类于 生活志

老婆,希望我们能够携手到老!
两个人生活在一起就需要不断磨合,活到老,磨到老;吵吵闹闹、磕磕绊绊;愿,一心向好。

阅读全文 »

不再联系

发表于 2014-06-09   |   分类于 生活志

转折是人生命中最值得欣喜也是最值得怀念的。放不下或是不为所惑都是因为没有遇到足以让自己奉为至宝的美好转折。

浮沉之间,各种际遇,总有一日,眼中至美,心中至爱,给了自己真正的依恋。才发现,原本视若遗憾的割舍,都成了命中注定的理所当然。

阅读全文 »

typecho主题制作教程模板常用函数01

发表于 2013-11-11   |   分类于 生活志

模板常用函数

获取模板版本号

function get_theme_version()
{
 $info = Typecho_Plugin::parseInfo(__DIR__ . '/index.php');
 return $info['version'];
}

前台用<?php echo get_theme_version();?>来调用输出,用于给模板css和js添加属性。

themeInit重写函数

function themeInit($archive)
{
 Helper::options()->commentsMaxNestingLevels = 999;//评论回复楼侧最高999层.这个正常设置最高只有7层
 Helper::options()->commentsAntiSpam = false;//评论关闭反垃圾保护
if ($archive->is('author')) {
       $archive->parameter->pageSize = 50; // 作者页面每50篇文章分页一次
}
 if ($archive->is('category','av')) {
 $archive->parameter->pageSize = 9; // 分类缩略名为av的分类列表每9篇文章分页一次
}
 $archive->content = a_class_replace($archive->content);//文章内容,让a_class_replace函数处理
}
function a_class_replace($content)
{
  $content = preg_replace('#<a(.*?) href="([^"]*/)?(([^"/]*)\.[^"]*)"(.*?)>#',
        '<a$1 href="$2$3"$5 target="_blank">', $content);//给文章每个超链接点击后新窗口打开,原理就是用正则替换文章内容
}

文章阅读次数统计(cookie版)

function get_post_view($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')) {
 $views = Typecho_Cookie::get('extend_contents_views');
        if(empty($views)){
            $views = array();
        }else{
            $views = explode(',', $views);
        }
if(!in_array($cid,$views)){
       $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid));
array_push($views, $cid);
            $views = implode(',', $views);
            Typecho_Cookie::set('extend_contents_views', $views); //记录查看cookie
        }
    }
    echo $row['views'];
}

在需要显示次数的地方 (如 index.php,post.php,page.php) 加下边的代码<?php get_post_view($this) ?>,post和page里必须加否则阅读次数不会增加,如果不想显示,可以用css隐藏。

页面加载耗时代码

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() ?>

文章缩略图

function showThumbnail($widget)
{ 
    $mr = '默认图片地址'; 
    $attach = $widget->attachments(1)->attachment;
    $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; 
if (preg_match_all($pattern, $widget->content, $thumbUrl)) {
         echo $thumbUrl[1][0];
    } elseif ($attach->isImage) {
      echo $attach->url; 
    } else {
        echo $mr;
    }
}

使用<?php showThumbnail($this); ?>调用。

随机文章

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();?>

自定义上下篇链接

/**
* 显示下一篇
*
* @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); ?>

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篇文章。

统计当前分类和子分类文章总数

typecho发布一篇文章,然后只勾选子分类,然后发布。
父分类输出分类的文章数量,并没有包含这个新发布的文章。所以有了以下函数

function fenleinum($id){
$db = Typecho_Db::get();
$po=$db->select('table.metas.count')->from ('table.metas')->where ('parent = ?', $id)->orWhere('mid = ? ', $id);
$pom = $db->fetchAll($po);
$num = count($pom);
$shu = 0;
for ($x=0; $x<$num; $x++) {
$shu=$pom[$x]['count']+$shu;
}
echo $shu;
}

前台调用,可以在分类列表循环中输入下面代码,分类mid需要根据自己的代码自填

<?php fenleinum(分类mid); ?>

生活总是“越好”的

发表于 2013-07-12   |   分类于 生活志
每每听着音乐走在柳巷,虽孑然一身,却总会莫名地感到快乐。
对于未来,我一点也不担心,因为时光会把我变得更好!我只担心一件事,就是在有生之年不能把这世界的美好看完!

阅读全文 »

转折

发表于 2013-07-10   |   分类于 生活志

对于曾做过丧家之犬的我来说,到一个陌生的城市投奔朋友是个不错的选择...
而这样一段人生之旅,于一颗倔强的心也必是一次转折。

阅读全文 »

© 2019 Powered by Typecho & Theme Quark