从去年换了这个主题后, 又已经一年了. 这些年我对换样式, 设计主题什么的早已兴趣大减, 所以如果没有特殊情况的话, 估计以后都是这个主题了(也不好说).
虽然平日写的不多, 但是一年了, 还是有点疲劳, 所以有在悄悄对主题进行细节修改, 反正也没人看. 这里做个汇总.
设计的时候就是打算是简约的白底, 当初第一版在背景上心机的弄了些随机小点纹理, 后来觉得影响阅读, 就去掉了. 现在觉得纯白底色过于刺眼, 黑色又太酷了驾驭不了, 所以稍微上了一点颜色, 本意是想带点那种发黄的感觉. 纯色上去后觉得还是寡淡了还没原来的清爽, 遂又在背景上弄了点小点做纹理. 但是考虑到影响到文章的阅读, 所以在文章内容的地方还是纯色的.
因为对背景颜色进行了修改, 所以部分不和谐的配色也统一进行了调整, 在保留绿色的情况下, 整体做了个偏色.
还有一些小处的修改, 比如鼠标和滚动条, 图片, 分割线, 自定义字段显示, 以及加了几种正文样式, 就不细说了. 有时候觉得加了有点多余, 但是还蛮少女心的.
我一直觉得我大多数文字是一时冲动的不吐为快, 冷静之后就觉得那样的表露特别蠢(可恶, 是黑历史), 但是删了又觉得可惜, 毕竟记忆保留不了那么长久, 而文字可以作为提醒.
微信的朋友圈显示时间范围就特别好, 现在很多的app都有这样的设计. 为了避免看到太过久远的吐槽被聚合显示出来, 所以我对所有展示的文章限制为距今12个月. 这种改动主要体现在聚合页上, 旧文章也没有被实际删除/私密, 直接输入地址仍然会被显示. 主要是不想对typecho的代码进行修改, 虽然它已经很多年没有更新了, 现在的功能对于我来说足足够. 但是万一呢, 我肯定是要升级的, 那样再改可就太麻烦了.
我主要在内容/顶部信息/上下篇关联部分进行了限制.
聚合页内容
我对聚合页文章列表的创建时间进行了筛选, 距今超过12个月的文章就不会进行显示了. typecho没有特别好的办法, 考虑到我的文章频率, 我拉取了最新的100篇(我肯定写不了这么多)文章, 然后筛选显示. 如果拉回的文章列表是空的, 就显示一行文字调侃下.
确实不太优雅, 反正是能用.
$this->widget('Widget_Contents_Post_Recent', 'pageSize=100')->to($post);
$data_min = date("Y-m", strtotime("-11 month"));
while($post->next()):
$data_tmp = date('Y-m', $post->created);
if ($data_min > $data_tmp ) {
break;
}
$output .= '...'; //在这里的文章就是我想要输出的
endwhile;
echo $output;
隐藏分类链接
typecho在输出文章分类信息的时候会默认给加上连接, 这样会直接进入这个分类所有的文章页面, 这就破坏了我只想聚合12个月的初衷, 因此把第二个参数赋为false, 就不会输出链接了.
<?php $this->category(',', false); ?>
上一篇/下一篇
在文章页, 我设计的是会显示上一篇/下一篇的内容. 这块跟分类一样, 也是会对跳出我的聚合范围, 所以在对上/下一篇的输出时候, 我同样也进行了筛选.
让我们首先剽窃一下Ryan大佬的代码, 对functions进行扩充.
function getNextPost($archive)
{
$db = Typecho_Db::get();
$post = $db->fetchRow($db->select()->from('table.contents')->where('table.contents.created > ? AND table.contents.created < ?', $archive->created, Helper::options()->time)
->where('table.contents.status = ?', 'publish')
->where('table.contents.type = ?', $archive->type)
->where("table.contents.password IS NULL OR table.contents.password = ''")
->order('table.contents.created', Typecho_Db::SORT_ASC)
->limit(1));
return $post;
}
function getPrevPost($archive)
{
$db = Typecho_Db::get();
$post = $db->fetchRow($db->select()->from('table.contents')->where('table.contents.created < ?', $archive->created)
->where('table.contents.status = ?', 'publish')
->where('table.contents.type = ?', $archive->type)
->where("table.contents.password IS NULL OR table.contents.password = ''")
->order('table.contents.created', Typecho_Db::SORT_DESC)
->limit(1));
return $post;
}
能够在当前文章获取上/下篇文章的更多信息之后, 就可以对链接开始筛选显示了, 以获取上一篇为例.
$data_min = date("Y-m", strtotime("-11 month"));
$prevPost = getPrevPost($this);
$data_tmp = date('Y-m', $this->created);
$data_prev = date("Y-m", $prevPost['created']); //上一篇时间
if ($data_min <= $data_tmp && $data_min <= $data_prev) { //本文与上一篇时间均在许可时间内
echo $this->thePrev('%s', '没有咯');
}
Memos挺好用的, 之前的一年多我一直在用. 但是我的Memos更多的是写给我自己的备忘录, 比如计划买什么, 看什么这种. 这样的内容我不太想放到网上, 因此用的时候一直写的私密的信息. 今年索性把Memos移到NAS上内网使用了. 因此, 就把主题内部关于Memos的内容全部移除了. 未来要不要在放一块类似这样的信息, 以及如何的展现, 我还在犹豫的过程中, 所以现下就这样吧.
我不太想继续维持RSS的输出了. 主要有以下几个考量, 第一是我对聚合内容的时间限制. 在不修改typecho代码的情况下, 想在RSS上实现这个功能, 我目前没有什么头绪.
第二是, 再次回归博客后, 我发现各类的博文聚合网站如雨后春笋. 它们大都通过RSS来收集成员的变动. 一些聚合网站还好, 只收录站点名称/文章标题等信息; 又或者是成员制的, 你必须要申请才能加入. 但有一些聚合网站是全文收录或者在成员制外会主动收录一些站点(我并不是说我的文章很好会被收录). 这样的聚合让我很困扰, RSS与我而言是能方便好友阅读的方式, 但我提供RSS不代表默许了被收录/转载. 且当我删除文章/抛弃博客的时候, 我希望的是公网上这些文字也一起毁灭, 而不是存在若干个影印本(内网/私有的我不在乎). 跟前文的聚合时间限制的缘由一样, 我讨厌被人翻旧账.
去年8月底, 我在网上围观了一场关于聚合网站收录的局部战斗. 这让保留RSS的想法彻底粉碎. 我撤掉了cc协议, 并在今年我不再对内容进行RSS的输出.
typecho如果想在不修改代码的情况下关闭RSS的输出, 只能通过修改数据库来实现了, 这部分内容剽窃fordes大佬的方案.
进入数据库, 找到结尾为options表, 将name为defaultAllowFeed的行, 将其value值修改为0, 如果你的站点有多个用户, 可能会有多项记录, 记得一并修改.
UPDATE `options` SET `value` = '0' WHERE `name` = 'defaultAllowFeed';
修改完默认配置后, 还需要修改掉之前文章的配置. 同样的, 找到后缀为contents的表, 将所有文章的allowFeed字段值修改为0.
UPDATE `contents` SET `allowFeed` = '0';
目前还有一些在计划中的修改, 由于真的快要考试了还没有复习, 所以暂时都不会动工.
主页&头图部分
目前的头图用了一只可爱的黑猫, 会摇尾巴的那种🥰~ 这个只是暂时的, 在计划中我打算对此块区域做一些有趣的事儿, 由于还没有开工, 就先保密吧.
留言本/提问箱
去年在制作主题的时候, 对原有的留言本进行了破坏. 我现在有一种新的实现想法, 虽然已经一年了, 目前还只是一个文件夹. 所以等混完考试后这部分才会动工.
现在这个博客的底色特别好,我手机里阅读小说的APP背景色也是类似的,真的对眼睛友好。我也要去研究研究给自己博客换个配色了~
谢谢喜欢~ 你的博客也好久没有折腾啦, 现在正是好时节.
又, 我帮你改过来啦🤭
哎呀,一个不小心贴了你的博客地址,我贴错啦抱歉抱歉TAT