MENU

【私人备忘】对于Mirages主题的一些修改

September 28, 2018 • Read: 376 • 瞎折腾

鉴于Mirages主题目前仍有不完善的地方或者我个人需求比较刁钻,因此对其文件进行了修改。本文将记述当前对于Mirages主题文件的一些修改,以便后续升级之后手动维护和差错之用。

文章置顶

Mirages主题内置了对sticky的支持,但是鉴于旧的sticky插件在启用时直接丢出异常,因此才用了无插件的方式来完成需求。目前仅需要对index.php进行修改,在主题作者信息下面加入如下如下代码(在作者信息前加入代码会导致后台无法读取主题信息):

/** 文章置顶 */
$sticky = '422'; //置顶的文章id,多个用|隔开
if($sticky){
    $sticky_cids = explode('|',$sticky); //分割文本
    $sticky_html = "<span style='color:red'>[置顶] </span>"; //置顶标题的 html

    $db = Typecho_Db::get();
    $pageSize = $this->options->pageSize;
    $select1 = $this->select()->where('type = ?', 'post');
    $select2 = $this->select()->where('type = ? && status = ? && created < ?', 'post','publish',time());

    //清空原有文章的列队
    $this->row = [];
    $this->stack = [];
    $this->length = 0;

    $order = '';
    foreach($sticky_cids as $i => $cid) {
        if($i == 0) $select1->where('cid = ?', $cid);
        else $select1->orWhere('cid = ?', $cid);
        $order .= " when $cid then $i";
        $select2->where('table.contents.cid != ?', $cid); //避免重复
    }
    if ($order) $select1->order(null,"(case cid$order end)"); //置顶文章的顺序 按 $sticky 中 文章ID顺序
    if ($this->_currentPage == 1) foreach($db->fetchAll($select1) as $sticky_post){ //首页第一页才显示
        $sticky_post['sticky'] = $sticky_html;
        $this->push($sticky_post); //压入列队
    }

    $uid = $this->user->uid; //登录时,显示用户各自的私密文章
    if($uid) $select2->orWhere('authorId = ? && status = ?',$uid,'private');

    $sticky_posts = $db->fetchAll($select2->order('table.contents.created', Typecho_Db::SORT_DESC)->page($this->_currentPage, $this->parameter->pageSize));
    foreach($sticky_posts as $sticky_post) $this->push($sticky_post); //压入列队
    $this->setTotal($this->getTotal()-count($sticky_cids)); //置顶文章不计算在所有文章内
}

代码由小さな手は编写。对文件的修改日期:2018年4月24日。

文章编辑页加入备忘

目前Mirages支持卡片式文章列表自动选取文章图片,但是普通的文章在显示文章详情页面时必须要手动设定文章主图。因此我在typecho的文章编辑,即./admin/write-post.php文件。

<div id="tab-advance" class="tab-content">下加入如下代码:

                        <section class="typecho-post-option">
                            <label for="token-input-tags" class="typecho-label"><?php _e('主图链接'); ?></label>
                            <p>https://www.skyblond.info/randombg/getbg.php</p>
                        </section>

                        <section class="typecho-post-option">
                            <label for="token-input-tags" class="typecho-label"><?php _e('图片阴影'); ?></label>
                            <p>在图片链接的尾部追加 #shadow </p>
                        </section>

文章内容回复可见

通过修改post.php文件来达到回复可见。目前回复可见内容不能出现在首页聚合中。
使用方法[@hide]xxxx[/hide] ,去掉@

替换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\](.*?)\[\/hide\]/sm",'<div 
    class="reply2view">$1</div>',$this->content);
    }
    else{
        $content = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'<div class="reply2view">此处内容需要评论回复后方可阅读。</div>',$this->content);
    }
    echo $content 
?>

并且在对应css中加入对应样式:

.reply2view {
    background:#f8f8f8;
    padding:10px 10px 10px 40px;
    position:relative
}

此处内容需要评论回复后方可阅读。

代码由我自己修改,修改日期2018年4月21日。

YoduPlayer的一些优化

网页由过于简洁的YoduBGM更换为YoduPlayer,目前最后更新为2018年5月28日。

修改如下:修改默认音量,在plugin.php中第103行yaudio.volume修改成了0.65,默认是0.18。
其次修改了播放时对于封面的处理。原YoduBGM未使用封面,因而使用Java处理时未写入配置文件,而实际上这些音频也没有对应的专辑。因此索性废掉专辑封面的功能,仅使用自带的封面。
在js/player.js中将带有cover内容的行(第31、49行)注释掉,修改为:
yaudio.fm="https://www.skyblond.info/usr/plugins/YoduPlayer/images/0014.jpg";

随后刷新页面即可。

Mirages默认字体大小修改

再更新完最新的1.7.7版本之后感觉网站字体小了很多。经过和主题作者的咨询,作者给出的方法如下:

将/usr/themes/Mirages/component/header.php内控制输出html标签的语句(第五行)修改成如下模样:

<html class="no-js" style="font-size: 20px ;" <?php Mirages::$options->rootFontSizeStyle()?>>

作者给出放大是115%,但是我觉得就算是124,网页都走样了,还是没法恢复到以前熟悉的字体大小。这个实在是有点遗憾。诸君今后看到的网页字体可能会有变化,我会尝试不同的显示屏看不同的效果来找到一个相对中庸的放大值。

感谢林海草原提供的解决方法,现在是20px,虽然字体大小和整页缩放124%差不多,但是在细节上会发现网站并不太走样,在行间距那里没有线性缩放,就很舒服。


知识共享许可协议
【私人备忘】对于Mirages主题的一些修改天空Blond 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://www.skyblond.info/about.html 处获得。

Tags: 备忘
Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

已有 8 条评论
  1. 你可以把字体调成以px为单位的数字,比如我的博客是18px,看起来还是很舒服的。

    1. @林海草原太感谢了,因为对php和网页这块不太了解,所以怕麻烦就只认准了主题作者给的。按照您给的18px调了下,感觉还是小2333所以现在是20px,个人的话喜欢大字,这样阅读起来不用太费劲吧。

    2. @天空Blond我手残了,我的是19px,哈哈哈。但是我用css控制手机和平板电脑端,也就是1110px下字号为21px,这样手机看着也舒服。没有基础不怕,我也没有基础,但是时间长了我居然自己会扒主题了。

    3. @林海草原扒主题我也差不多,基本上知道想要微调哪里怎么改,但是具体的重构或者整合到别的程序里之类的我就鸡肋了2333

  2. 大字体莫名觉得好舒服!

    1. @广树嗯,大字体看着痛快

  3. 现在手机上看你的站字体贼大,有点老年机的感觉哈哈。不过确实字体大一点眼睛不受罪。

    1. @熊猫小A嗯,我比较喜欢字大一点的

0:00