首页
归档栏
优秀个人博客
时光机
Search
1
卢松松博客typecho主题
31,971 阅读
2
《绅士》typecho主题
30,396 阅读
3
typecho主题《tree》-响应式个人网站模板
29,280 阅读
4
利用伪静态实现阿里云虚拟主机建立多个网站
8,361 阅读
5
写在互联网30年:看看这些图片我们已经老了
7,413 阅读
学无止境
慢生活
模板分享
好文分享
相册
typecho
登录
Search
标签搜索
typecho
网站
个人博客模板
typecho主题
广告
地址
htaccess
代码
设计
欲望
时代
干掉
电报局
指南针
打字机
介绍所
网龄
藏经阁
知道
聊天
爱奇智
累计撰写
26
篇文章
累计收到
174
条评论
首页
栏目
学无止境
慢生活
模板分享
好文分享
相册
typecho
页面
归档栏
优秀个人博客
时光机
搜索到
9
篇与
» typecho
的结果
2019-04-04
typecho非插件实现文章阅读次数统计(cookie版)
今天在这个基础上加入了cookie验证,让文章浏览次数更具有真实性。在 functions.php 中加入下面代码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) ?>来源:https://qqdie.com/archives/typecho-read-statistics.html
2019年04月04日
6,577 阅读
2 评论
0 点赞
2019-04-04
Typecho完美实现回复可见功能
步骤一就是《typecho非插件实现回复可见功能》里面的内容将post.php中的<?php $this->content(); ?>换成<?php $db = Typecho_Db::get(); $sql = $db->select()->from('table.comments') ->where('cid = ?',$this->cid) ->where('mail = ?', $this->remember('mail',true)) ->limit(1); $result = $db->fetchAll($sql); if($this->user->hasLogin() || $result) { $content = preg_replace("/\(.*?)\[\/hide\]/sm",'<div class="reply2view">$1</div>',$this->content); } else{ $content = preg_replace("/\(.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容需要评论回复后方可阅读。</div>',$this->content); } echo $content ?>步骤二解决缩略内容和feed暴露问题。在functions.php中加入如下代码即可Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('myyodux','one'); Typecho_Plugin::factory('Widget_Abstract_Contents')->contentEx = array('myyodux','one'); class myyodux { public static function one($con,$obj,$text) { $text = empty($text)?$con:$text; if(!$obj->is('single')){ $text = preg_replace("/\(.*?)\[\/hide\]/sm",'',$text); } return $text; } }就是用插件接口,在缩略内容输出之前,隐藏掉或者替换掉回复可见内容,同时使用if判断,来针对非single页面进行隐藏。步骤三使用方法在写文章需要隐藏部分内容时用以下写法(去掉@)[@hide]要隐藏的内容{/hide}css参考样式.reply2view { background:#f8f8f8; padding:10px 10px 10px 40px; position:relative }来源:https://qqdie.com/archives/typecho-recovery-visible-ok.html
2019年04月04日
4,014 阅读
0 评论
0 点赞
2019-04-04
typecho调用多张缩略图,非插件实现
这就是博客文章列表页显示三张缩略图的实现方式,本博客的模板也是将大多数功能都通过function.php中定义来实现,没有去借助插件之类的,那样确实搞起来很麻烦。比如目前这个功能,大概的参考了youdu模板的写法,问题还是有的,因为需要确保发布的文章必须有三张以上的图片附件,否则就会直接报错,更多的控制我也没有继续写下去,但是进一步的扩展肯定是可以的。代码如下:/** 输出文章缩略图 */ function showThumbnail($widget,$imgnum){ //获取两个参数,文章的ID和需要显示的图片数量 // 当文章无图片时的默认缩略图 $rand = rand(1,20); $random = $widget->widget('Widget_Options')->themeUrl . '/img/rand/' . $rand . '.jpg'; // 随机缩略图路径 $attach = $widget->attachments(1)->attachment; $pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i'; $patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i'; $patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i'; //如果文章内有插图,则调用插图 if (preg_match_all($pattern, $widget->content, $thumbUrl)) { echo $thumbUrl[1][$imgnum]; } //没有就调用第一个图片附件 else if ($attach && $attach->isImage) { echo $attach->url; } //如果是内联式markdown格式的图片 else if (preg_match_all($patternMD, $widget->content, $thumbUrl)) { echo $thumbUrl[1][$imgnum]; } //如果是脚注式markdown格式的图片 else if (preg_match_all($patternMDfoot, $widget->content, $thumbUrl)) { echo $thumbUrl[1][$imgnum]; } //如果真的没有图片,就调用一张随机图片 else{ echo $random; } }调用的代码就是以下这样,从0开始算,数字0则调用第一张<?php showThumbnail($this,0); ?>来源:https://www.ruletree.club/archives/877/
2019年04月04日
3,104 阅读
0 评论
0 点赞
2019-04-04
typecho添加文章类型字段,并调用不同样式
应该最近访问规则之树的都可以看出来,首页的列表我又更新了一下,原本只有两种类型,三图和正常图文章列表,但是现在大图也出来了。最开始我是通过对文章分类的判断,对指定的几个分类单独设置样式,问题比较麻烦,那就是我在模板里的控制总是识别不出来,就算使用stristr包含方法也会有问题。于是后面,我终于发现了typecho的自定义字段功能,可以在模板的function.php文件中定义,就可以每次发布文章的时候,都出现一个可以供用户选择的字段,总之很方便。教程如下1.修改模板的控制文件新增字段一般情况下,function.php文件夹内会有一段注释的代码,官方自带的,那其实就是官方提供的一个自定义字段的范例,它可以完全参考模板的设置表单的字段添加来写。function themeFields($layout) { $Pictype= new Typecho_Widget_Helper_Form_Element_Radio('Pictype',array('0' => _t('无'),'1' => _t('大图'),'2' => _t('多图')),'0',_t('文章类型'),_t("选择文章类型,模板设置在数据列表显示不同的样式,比如大图和三图并列的文章列表")); $layout->addItem($Pictype); }保存之后,点击创建或者新增文章,就会出现如下设置了。2.完成上述操作后,可以为文章设置类型。比如我对不同的文章设置大图与多图,那么他就会出现一个Pictype的可以调用的字段,所以前台的列表里可以这样写。<?php while($this->next()): ?> <?php if ($this->fields->Pictype == 1) { ?> 类型为大图的文章调用的相关代码,设置单独的class和结构 <?php } elseif ($this->fields->Pictype == 2) { ?> 类型为多图的文章调用的相关代码,设置单独的class和结构,在我的博客里,这里显示三张图片 <?php } else {?> 一般文章列表的相关代码,显示普通的样式 <?php }?> <?php endwhile; ?>可以看看我博客的实际效果。来源: https://www.ruletree.club/archives/1063/
2019年04月04日
5,518 阅读
2 评论
0 点赞
1
2