给JOE主题添加首页友联,仅在首页显示

Admin
2025-07-24 / 0 评论 / 1 阅读 / 正在检测是否收录...

前言

JOE主题是Typecho博客一款高颜值、简洁、大气、绚丽、多功能免费开源的模版,深受广大Typecho博主的青睐,并且许多博主也是基于该模版进行二次创作。
但是JOE作者并没有在模版添加首页友情链接功能,今天就给大家分享一段JOE模版仅在首页显示友情链接的代码,分为首页链接和内页链接,博主们可以自定义首链和内链

教程

  • 仅首页显示友链,分页不会显示

1.首先打开模板根目录文件 index.php,在第180和181行之间(换行)加入以下代码(也可在footer.php添加);

    <div class="joe_container link">
        <?php if ($this->is('index')) : ?>
            <div class="item">
                <strong>友情链接:</strong>
                <?php
                $friends = [];
                $friends_text = $this->options->JFriendsIndex;
                if ($friends_text) {
                    $friends_arr = explode("\r\n", $friends_text);
                    if (count($friends_arr) > 0) {
                        for ($i = 0; $i < count($friends_arr); $i++) {
                            $name = explode("||", $friends_arr[$i])[0];
                            $url = explode("||", $friends_arr[$i])[1];
                            $avatar = explode("||", $friends_arr[$i])[2];
                            $desc = explode("||", $friends_arr[$i])[3];
                            $friends[] = array("name" => trim($name), "url" => trim($url), "avatar" => trim($avatar), "desc" => trim($desc));
                        };
                    }
                }
                ?>
                <?php if (sizeof($friends) > 0) : ?>
                    <?php foreach ($friends as $item) : ?>
                        <a class="contain" href="<?php echo $item['url']; ?>" target="_blank" rel="noopener noreferrer">
                            <span class="title" style="color:#70757a;"><?php echo $item['name']; ?></span>
                        </a>
                    <?php endforeach; ?>
                <?php endif; ?>
                <a class="contain" href="<?php $this->options->siteUrl(); ?>links.html" target="_blank" rel="noopener noreferrer">
                    <span class="title" style="color:#76b8fc;"> 更多 ></span>
                </a>
            </div>
        <?php endif; ?>
    </div><br>
  • 区分首页内页链接,内链不会出现在首页

2.打开模板根目录文件 friends.php ,将第35至105行代码替换成如下代码;

                        <?php
                        $friends_index = [];
                        $friends_index_color = [
                            '#F8D800',
                            '#0396FF',
                            '#EA5455',
                            '#7367F0',
                            '#32CCBC',
                            '#F6416C',
                            '#28C76F',
                            '#9F44D3',
                            '#F55555',
                            '#736EFE',
                            '#E96D71',
                            '#DE4313',
                            '#D939CD',
                            '#4C83FF',
                            '#F072B6',
                            '#C346C2',
                            '#5961F9',
                            '#FD6585',
                            '#465EFB',
                            '#FFC600',
                            '#FA742B',
                            '#5151E5',
                            '#BB4E75',
                            '#FF52E5',
                            '#49C628',
                            '#00EAFF',
                            '#F067B4',
                            '#F067B4',
                            '#ff9a9e',
                            '#00f2fe',
                            '#4facfe',
                            '#f093fb',
                            '#6fa3ef',
                            '#bc99c4',
                            '#46c47c',
                            '#f9bb3c',
                            '#e8583d',
                            '#f68e5f',
                        ];
                        $friends_index_text = $this->options->JFriendsIndex;
                        if ($friends_index_text) {
                            $friends_index_arr = explode("\r\n", $friends_index_text);
                            if (count($friends_index_arr) > 0) {
                                for ($i = 0; $i < count($friends_index_arr); $i++) {
                                    $name = explode("||", $friends_index_arr[$i])[0];
                                    $url = explode("||", $friends_index_arr[$i])[1];
                                    $avatar = explode("||", $friends_index_arr[$i])[2];
                                    $desc = explode("||", $friends_index_arr[$i])[3];
                                    $friends_index[] = array("name" => trim($name), "url" => trim($url), "avatar" => trim($avatar), "desc" => trim($desc));
                                };
                            }
                        }
                        ?>
                        <?php if (sizeof($friends_index) > 0) : ?>
                            <h3 class="joe_mtitle"><span class="joe_mtitle__text">首页友链</span></h3>
                            <ul class="joe_detail__friends">
                                <?php foreach ($friends_index as $iitem) : ?>
                                    <li class="joe_detail__friends-item">
                                        <a class="contain" href="<?php echo $iitem['url']; ?>" target="_blank" rel="noopener noreferrer" style="background: <?php echo $friends_index_color[mt_rand(0, count($friends_index_color) - 1)] ?>">
                                            <span class="title"><?php echo $iitem['name']; ?></span>
                                            <div class="content">
                                                <div class="desc"><?php echo $iitem['desc']; ?></div>
                                                <img width="40" height="40" class="avatar lazyload" src="<?php _getAvatarLazyload(); ?>" data-src="<?php echo $iitem['avatar']; ?>" alt="<?php echo $iitem['name']; ?>" />
                                            </div>
                                        </a>
                                    </li>
                                <?php endforeach; ?>
                            </ul>
                        <?php endif; ?>

                        <?php
                        $friends = [];
                        $friends_color = [
                            '#F8D800',
                            '#0396FF',
                            '#EA5455',
                            '#7367F0',
                            '#32CCBC',
                            '#F6416C',
                            '#28C76F',
                            '#9F44D3',
                            '#F55555',
                            '#736EFE',
                            '#E96D71',
                            '#DE4313',
                            '#D939CD',
                            '#4C83FF',
                            '#F072B6',
                            '#C346C2',
                            '#5961F9',
                            '#FD6585',
                            '#465EFB',
                            '#FFC600',
                            '#FA742B',
                            '#5151E5',
                            '#BB4E75',
                            '#FF52E5',
                            '#49C628',
                            '#00EAFF',
                            '#F067B4',
                            '#F067B4',
                            '#ff9a9e',
                            '#00f2fe',
                            '#4facfe',
                            '#f093fb',
                            '#6fa3ef',
                            '#bc99c4',
                            '#46c47c',
                            '#f9bb3c',
                            '#e8583d',
                            '#f68e5f',
                        ];
                        $friends_text = $this->options->JFriends;
                        if ($friends_text) {
                            $friends_arr = explode("\r\n", $friends_text);
                            if (count($friends_arr) > 0) {
                                for ($i = 0; $i < count($friends_arr); $i++) {
                                    $name = explode("||", $friends_arr[$i])[0];
                                    $url = explode("||", $friends_arr[$i])[1];
                                    $avatar = explode("||", $friends_arr[$i])[2];
                                    $desc = explode("||", $friends_arr[$i])[3];
                                    $friends[] = array("name" => trim($name), "url" => trim($url), "avatar" => trim($avatar), "desc" => trim($desc));
                                };
                            }
                        }
                        ?>
                        <?php if (sizeof($friends) > 0) : ?>
                            <h3 class="joe_mtitle"><span class="joe_mtitle__text">内页友链</span></h3>
                            <ul class="joe_detail__friends">
                                <?php foreach ($friends as $item) : ?>
                                    <li class="joe_detail__friends-item">
                                        <a class="contain" href="<?php echo $item['url']; ?>" target="_blank" rel="noopener noreferrer" style="background: <?php echo $friends_color[mt_rand(0, count($friends_color) - 1)] ?>">
                                            <span class="title"><?php echo $item['name']; ?></span>
                                            <div class="content">
                                                <div class="desc"><?php echo $item['desc']; ?></div>
                                                <img width="40" height="40" class="avatar lazyload" src="<?php _getAvatarLazyload(); ?>" data-src="<?php echo $item['avatar']; ?>" alt="<?php echo $item['name']; ?>" />
                                            </div>
                                        </a>
                                    </li>
                                <?php endforeach; ?>
                            </ul>
                        <?php endif; ?>
  • 添加首页内页链接控制

3.打开模板根目录文件 functions.php ,将第720~731行的代码替换成如下代码;

    $JFriendsIndex = new Typecho_Widget_Helper_Form_Element_Textarea(
        'JFriendsIndex',
        NULL,
        '小王先森 || https://xwsir.cn/ || https://thirdqq.qlogo.cn/g?b=qq&nk=2027821710&s=100 || 山川异域,风月同天',
        '首页链接(非必填)',
        '介绍:用于填写首页友情链接 <br />
         格式:博客名称 || 博客地址 || 博客头像 || 博客简介 <br />
         其他:一行一个,一行代表一个友链'
    );
    $JFriendsIndex->setAttribute('class', 'joe_content joe_other');
    $form->addInput($JFriendsIndex);

    $JFriends = new Typecho_Widget_Helper_Form_Element_Textarea(
        'JFriends',
        NULL,
        'Joe的博客 || https://78.al || https://fastly.jsdelivr.net/npm/typecho-joe-next@6.0.0/assets/img/link.png || Eternity is not a distance but a decision',
        '内页链接(非必填)',
        '介绍:用于填写友情链接 <br />
         注意:您需要先增加友链链接页面(新增独立页面-右侧模板选择友链),该项才会生效 <br />
         格式:博客名称 || 博客地址 || 博客头像 || 博客简介 <br />
         其他:一行一个,一行代表一个友链'
    );

0

评论 (0)

取消