回归田园风格

发表于 2020-05-09   |   分类于 分享

很久、很久、很久以前...
写过一个特别喜欢的模板InnerPeace,非常漂亮,因为没有备份的习惯,丢了。花了一点点时间在Quark的基础上改造了一番,强行模仿,不过,差相仿佛吧;想想以前写blog的日子,恍如隔世啊。

阅读全文 »

typecho主题函数functions.php里面怎么获取$this

发表于 2019-06-25   |   分类于 笔记

这个是我从网上复制粘贴来的,而且,我从来没用过这个方式。
嗯~看来,对于新鲜的“代码”还是要克制的,不然...浪费生命啊(既不用,收藏何意)

阅读全文 »

typecho不使用插件实现Ajax评论功能

发表于 2017-06-26   |   分类于 笔记

为了不使用插件实现Ajax评论功能需要实现:

监听评论表单,改用ajax方式提交
创建新的评论表单提交地址(用Typecho 主题提供的系统方法themeInit实现)

当访问文章加载主题时,themeInit方法首先被加载,可在此方法中判断是否为添加评论的操作,即新的评论表单地址为文章的链接(permalink).具体判断方法如下

阅读全文 »

Theme Quark For Typecho

发表于 2017-05-11   |   分类于 分享

完善而极度精简的Typecho主题,在极简方面不做“之一”而是真正极致的“唯一”。
Name:Quark;Description:“简爱”;Feature:自适应,极速,精致!Size:5.9k(未压缩)

阅读全文 »

起始,就是使用自定义字段而已。

在Typecho主题的functions.php 文件中,提供了三个系统方法:

themeConfig 用于配置主题
themeInit 在初始化皮肤函数时调用
themeFields 后台编辑文章时,为主题增加一个自动绑定的输入框(最新开发版添加此方法)

为了实现文章浏览数统计功能,这里用到了themeInit、themeFields,具体见下面的代码

// 添加浏览数字段到内容
function themeFields($layout) {
    $viewsNum = new Typecho_Widget_Helper_Form_Element_Text('viewsNum', NULL, 0, _t('文章浏览数'), _t('文章浏览数统计'));
    $layout->addItem($viewsNum);
}

/*
 * @params Widget_Archive $archive
 */
function themeInit($archive){
    // 判断是否为文章或页面
    if($archive->is('single')){
        viewCounter($archive);
    }
}

/*
 * 统计文章浏览数
 * @params Widget_Archive $archive
 */
function viewCounter($archive){
    $cid = $archive->cid;
    $views = Typecho_Cookie::get('__typecho_views');
    $views = !empty($views) ? explode(',', $views) : array();
    if(!in_array($cid,$views)){
        $db = Typecho_Db::get();
        $field = $db->fetchRow($db->select()->from('table.fields')->where('cid = ? AND name = ?', $cid , 'viewsNum'));
        if(empty($field)){
            $db->query($db->insert('table.fields')
            ->rows(array('cid' => $cid, 'name' => 'viewsNum', 'type' => 'str', 'str_value' => 1, 'int_value' => 0, 'float_value' => 0)));
        }else{
            $db->query($db->update('table.fields')->expression('str_value', 'str_value + 1')->where('cid = ? AND name = ?', $cid , 'viewsNum'));
        }
        array_push($views, $cid);
        $views = implode(',', $views);
        Typecho_Cookie::set('__typecho_views', $views); //记录到cookie
    }
}

显示浏览数则可直接在模板中使用

<?php if(isset($this->fields->viewsNum)){ $this->fields->viewsNum(); } ?>

则可进行输出显示

Typecho博客主题模版制作常用代码之用户篇

发表于 2015-06-26   |   分类于 笔记

Typecho博客主题模版制作常用代码之用户篇

阅读全文 »

Typecho主题制作常用代码之文章列表调用篇

发表于 2015-06-26   |   分类于 笔记

Typecho主题制作常用代码之文章列表调用篇

阅读全文 »

typecho文章没有标签时文章标签调用分类

发表于 2015-06-11   |   分类于 笔记

如果你的typecho模版的文章中有文章标签这块内容,当文章没有设置标签一般都会显示“抱歉本文还未添加标签”,或许这样的致歉已经十分虔诚,可是还是挺不友好的,当然如果没有标签就让文章分类“伪装”成文章标签引导用户去阅读相关内容或者是帮助用户找到相关内容会不会是用户想要的呢?

阅读全文 »

typecho输出全部文章列表

发表于 2014-09-19   |   分类于 笔记

全部文章列表,可应用于归档或网站地图,蜘蛛指引等

<?php $this->widget('Widget_Contents_Post_Recent', 'pageSize=10000')->parse('<li>{year}-{month}-{day} : <a href="{permalink}">{title}</a></li>'); ?>

也可以自定义page数量,显示固件文章
文章数量少还行,想睿智狗电影这样数W级别的,别闹..

typecho全部标签列表 - 按时间排序

发表于 2014-08-15   |   分类于 笔记

全部标签列表,按照MID排序:

<?php $this->widget('Widget_Metas_Tag_Cloud')
                ->to($taglist); ?><?php while($taglist->next()): ?>
<li><a href="<?php $taglist->permalink(); ?>" title="<?php $taglist->name(); ?>"><?php $taglist->name(); ?></a></li>
<?php endwhile; ?>

此代码,是按照tag的创建时间排序

typecho全部标签列表 - 按文章数量排序

发表于 2014-08-09   |   分类于 笔记

自定义标签数量(就这里面的20),按照文章数量排序:

<?php $this->widget('Widget_Metas_Tag_Cloud', array('sort' => 'count', 'ignoreZeroCount' => true, 'desc' => true, 'limit' => 20))->to($tags); ?>   
<?php while($tags->next()): ?>   
<li><a rel="tag" href="<?php $tags->permalink(); ?>"><?php $tags->name(); ?></a></li>
<?php endwhile; ?>

Typecho留言板读者墙

发表于 2014-06-26   |   分类于 笔记

模板代码

<div id="reader">
<h2 class="module-title"><strong>读者风云榜</strong></h2>
<ul class="fno">
<?php
$period = time() - 999592000; // 時段: 30 天, 單位: 秒
$counts = Typecho_Db::get()->fetchAll(Typecho_Db::get()
->select('COUNT(author) AS cnt','author', 'url', 'mail')
->from('table.comments')
->where('created > ?', $period )
->where('status = ?', 'approved')
->where('type = ?', 'comment')
->where('authorId = ?', '0')
->group('author')
->order('cnt', Typecho_Db::SORT_DESC)
->limit('25')
);
$mostactive = '';
$avatar_path = 'http://cdn.v2ex.com/gravatar/';
foreach ($counts as $count) {
  $avatar = $avatar_path . md5(strtolower($count['mail'])) . '.jpg?s=60';
  $c_url = $count['url']; if ( !$c_url ) $c_url = Helper::options()->siteUrl;
  $mostactive .= "<li><a href='" . $c_url . "' title='" . $count['author'] . " (参与" . $count['cnt'] . "次探讨)' rel='nofollow' target='_blank'><img src='" . $avatar . "' alt='" . $count['author'] . "的照片' class='avatar' /><small>" . $count['author'] . "</small><i>" . $count['cnt'] . "</i></a></li>\n";
}
echo $mostactive; ?></ul> 
<!--end/.reader/--></div>  

CSS样式

#reader {} 
#reader ul {list-style: none;} 
#reader li {padding: 1px 1px 0 0;float: left;height: auto;} 
#reader a {position: relative;float: left;display: block;text-align: center;text-decoration: none;} 
#reader a img{ width: 60px; height:60px;z-index: 0;border: 0;margin: 0;display: block;}  
#reader a small {line-height: 60px; font-size: 12px;padding: 8px 0 ; display: none; position: absolute;bottom: 0px;top:0px; left: 0px;right: 0px;z-index: 1;
background-color:rgba(255,255,255,0.72)!important; background:#fff; filter:alpha(opacity=72);   *background:#fff; *filter:alpha(opacity=72);color: #111;}
#reader a:hover small {display: block;}
#reader a i {font-size: 10px;font-style: normal; width: 18px; height: 18px;line-height: 18px; background-color: red;color: #fff;position: absolute;top: 1px;right: 1px;border: 2px #fff solid; border-radius: 18px;} 
.float-no{zoom: 1; }
.float-no:after{content: "\20"; display: block; height: 0; clear: both; visibility: hidden; }

© 2020 Powered by Typecho & Theme Quark