MENU

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

February 8, 2020 • 瞎折腾

目前使用的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://statics.skyblond.info/pictures/random.php</p>
</section>

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

Mirages默认字体大小修改

在主题设置里自定义CSS样式:

@media screen and (min-width: 768px) {
    html{
        font-size: 19px;
    }
}
</style>

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

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

全站黑白色遮罩

同样在主题设置中设定CSS样式。愿京阿尼早日渡过难关。

html{
filter: grayscale(100%);
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}

页脚显示站点运行时间

修改主题文件夹下./component/footer.php,第63起的代码块修改后如下示(注意保留原作者的版权信息):

<?php
    $copyright = 'Copyright &copy; '. date('Y') .' <a href="'. Mirages::$options->siteUrl .'">'. Mirages::$options->title .'</a>'; if (!Device::isPhone()) {$theme = "";}$theme = (Device::isPhone() ? '': 'Powered by <a href="http://typecho.org" target="_blank">Typecho</a> • ') . 'Theme <a href="https://get233.com/archives/mirages-intro.html" target="_blank">Mirages</a>';
    $runtime = '本站已经奋力挣扎了'.floor((time() - 1502694727)/86400).'天';
    if (Utils::hasValue(Mirages::$options->beian)) {
        $beiAn = "<a href=\"http://beian.miit.gov.cn\" target='_blank'> ".Mirages::$options->beian . "</a>";
        $copyright = "<p>{$copyright}</p><p>{$beiAn} • {$theme}</p><p>{$runtime}</p>";
    } else {
        $copyright = "<p>{$copyright} • {$theme}</p><p>{$runtime}</p>";
    }
?>

摘要线广告

请移步此页


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

Last Modified: March 31, 2023
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment

29 Comments
  1. Fvj Fvj

    这排版看得是真的舒服啊!(顺便膜拜一下大佬)⌇●﹏●⌇

  2. 妈耶……就我更喜欢小字体的嘛orz
    就是不大不小刚刚好的那种
    贼适合文艺站子|´・ω・)ノ

    1. @恶魔菌.我觉得字体小了太费眼睛,这个主题的默认字体在1080p的祖传屏幕上还要凑近看,在带鱼屏上简直就要钻进屏幕里了,我的眼睛实在是遭不住啊qwq

    2. @天空Blond其实就是不大不小刚刚好的那种
      因为我没用带鱼屏就没什么感觉orz

  3. 个人更喜欢Whisper这款Typecho主题的说~
    因为觉得那款板子很简约,配色也很清新
    比较适合日式小清新的站子啦
    ※最近看多了日本小清新的素材站随便bb的哈

    1. @恶魔菌.查了一下那个主题,确实很简约,而且粉色系我爱了,不过Typecho换主题还是挺麻烦的,主要还是好多功能Typecho都不提供,全依赖主题,emmmm,好纠结啊

  4. 好诶,尝试改改看

  5. 越来越完善啊

  6. ohoo ohoo

    博主您好,我想改变字体大小,但是没找到主题设置的css代码在哪里改,可以指点一下吗?感谢@(大拇指)

    1. @ohoo我是在主题设置里修改的。不过这个还是依主题而异,我用的主题提供了自定义html头的功能,我是把css放在那里的。

    2. ohoo ohoo

      @天空Blond咱俩用的是同一个主题@(太开心)。是把html{font-size: 19px;}放在自定义扩展的头部那里是吗?没反应#(害羞)

    3. @ohoo我在原文中把全部的贴上来了,你看一眼

    4. ohoo ohoo

      @天空Blond好嘞~~真好 感谢博主@(太开心)

  7. 是typecho的吧?单栏挺好看的。

  8. 不错的主题 ! 虽然自己从来都是用 Hexo…@(滑稽)

  9. 用媒体查询改一下移动端的字体大小8
    不然太大了,有些不协调#(高兴)

  10. 小小 小小

    能不能发一下yoduplayer插件,我看看我哪里修改错了?

  11. 备忘:主题本身的内容渲染(即`post.php`中的``)会给标题设置锚点,如果替换掉的话会导致目录无法正常工作。因此`回复可见`功能涉及到修改上述代码,致使目录无法正常工作,已经从修改清单中移除并已将源文件恢复原状。

    1. @天空Blond如一定要使用,请考虑使用主题提供的内容生成器,对该生成器产生的文章html代码进行隐藏可见的操作。

  12. 你可以把字体调成以px为单位的数字,比如我的博客是18px,看起来还是很舒服的。

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

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

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

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

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

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

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