menu ZigZagK的博客
account_circle

正在努力加载中QAQ

魔改Links插件实现友链随机输出
apps Typecho
local_offer 查看标签
comment 3 条评论

我要在10月之前水出最后一篇文章!音乐与文章没有必然联系,我不是替身使者。

一时兴起

逛MonsterX博客的时候发现了友链随机输出的这个方式,我觉得的确挺不错的,于是开始折腾。

研究了一下Links插件发现……并不能在不改动插件的情况下实现该功能……

那能怎么办喽,只能改插件了……

魔改插件

Links插件中,output函数是把所有友链解析为html之后直接接成一个超长字符串……所以为了实现随机显示,需要输出数组而不是字符串,从而进行shuffle操作(数组随机打乱)。

那么就是把:

$str = "";
foreach ($links as $link) {
    if ($link['image'] == NULL) {
        $link['image'] = $nopic_url;
    }
    $str .= str_replace(
        array('{lid}', '{name}', '{url}', '{sort}', '{title}', '{description}', '{image}', '{user}'),
        array($link['lid'], $link['name'], $link['url'], $link['sort'], $link['description'], $link['description'], $link['image'], $link['user']),
        $pattern
    );
}
return $str;

改成这样:

$number = 0;
foreach ($links as $link) {
    if ($link['image'] == NULL) {
        $link['image'] = $nopic_url;
    }
    $Links[$number++] = str_replace(
        array('{lid}', '{name}', '{url}', '{sort}', '{title}', '{description}', '{image}', '{user}'),
        array($link['lid'], $link['name'], $link['url'], $link['sort'], $link['description'], $link['description'], $link['image'], $link['user']),
        $pattern
    );
}
return $Links;

输出友链

既然有了友链数组,你就可以想干嘛干嘛了自己魔改啦,比如随机顺序输出:

$Links=Links_Plugin::output('
    <div class="mdui-col">
        <div class="mdui-card mdui-m-y-1 mdui-hoverable">
            <a href="{url}" target="_blank">
                <div class="mdui-card-header">
                    <img class="mdui-card-header-avatar" src="{image}" alt="{name}"/>
                    <div class="mdui-card-header-title">{name}</div>
                    <div class="mdui-card-header-subtitle">{description}</div>
                </div>
            </a>
        </div>
    </div>
');
shuffle($Links); //PHP自带的函数,将数组随机打乱
$tot=count($Links);
for ($i=0;$i<$tot;$i++) echo $Links[$i]; //输出友链

效果可以查看友链页面

广告

插件已经上传到github了(内附较详细使用方法),戳这里

版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
名称不能为空
email
邮箱不能为空,请填写正确格式
link
网址请用http://或https://开头
message
评论不能为空
资瓷Markdown和LaTeX数学公式
sentiment_very_satisfied
    2019-10-01 20:07:13初夏阳光
    keyboard_arrow_down
    2019-10-01 20:07:13

    我来了嘿嘿,等我给自己放完假就改 Bug !

    remove_red_eye访客
      2019-10-04 12:44:40ZigZagK
      keyboard_arrow_down
      2019-10-04 12:44:40
      @初夏阳光 

      大佬您怎么把博客改炸了

      account_circle
      博主
        2019-10-04 12:47:50初夏阳光
        keyboard_arrow_down
        2019-10-04 12:47:50
        @ZigZagK 

        没有,是服务器炸了。正在修QaQ…

        remove_red_eye
        访客
keyboard_arrow_up