paperMod是一个简单友好的单栏主题,但是它默认没有一个链接模板。

以下我用3种方法增加链接页面,简单可行~

用markdown表格收集链接

hugo new links.md

接下来就像编辑普通文章一样,可以给这个页面增加文字说明; 在需要放置链接的地方增加双栏表格代码(你可以扩展,弄成三栏的) 这个方式可以把单页弄成任意主题的网址导航~~


|  |  |
| :----------- | :----------- |
| [BlogFinder](https://bf.zzxworld.com/s/diligent_list)   | 发现优秀的个人博客 |
| [Discovery Insights](https://discoveryinsights.site/)    | 独立博客推荐,发现洞见,独立博客推荐|

如果你需要站外网址统一在新标签页打开,可以在单页模板里附加一段Javascript:

比如paperMod主题的对应模板是 layouts\_default\single.html

<script>
  // 确保DOM完全加载
    document.addEventListener('DOMContentLoaded', function () {
      // 获取表格内所有的<a>元素
      var tableLinks = document.querySelectorAll('table a');

      // 遍历所有表格内的链接
      for (var i = 0; i < tableLinks.length; i++) {
        // 检查链接是否已经有target属性
        if (!tableLinks[i].hasAttribute('target')) {
          // 设置target属性为"_blank",使其在新标签页中打开
          tableLinks[i].setAttribute('target', '_blank');
        }
      }
    });
</script>

效果预览

BlogFinder发现优秀的个人博客
Discovery Insights独立博客推荐,发现洞见,独立博客推荐

使用个站商店的小红帽链接API

如果你是 个站商店 的用户,建议采用这种方式:

使用这个方案的好处是,不用通过编辑markdown文件来发布新的链接;它依赖的是一个第三方网站提供的API;

缺点是,只能添加那个站点生态圈里的链接;

具体步骤见 往期建站log : 小红帽友链送货上门安装服务(hugo shortcode)

效果预览

这些友情链接是来自个站商店的一个子项目 ,点 这里 访问我在个站商店上的主页

自定义 shortcode 模板

这个就是短代码了

自由度拉满,结合css可以做出匹配你的站点主题的链接样式

layouts/shortcodes文件夹下新增 friend.html 文件

{{- if .IsNamedParams -}}
<a target="_blank" href={{ .Get "url" }} title={{if .Get "title"}} {{.Get "title"}} {{else}} {{.Get "name"}} {{end}} class="friendurl">
    <div class="frienddiv">
        <div class="frienddivleft">
            <img class="myfriend" src={{ .Get "logo" }} />
        </div>
        <div class="frienddivright">
            <div class="friendname">{{- .Get "name" -}}</div>
            <div class="friendinfo">{{- .Get "word" -}}</div>
        </div>
    </div>
</a>
{{- end }}

参考样式:

/*友链*/
.friendurl {
    text-decoration: none !important;
    color:var(--primary) !important;
    box-shadow: none !important;
}

.myfriend {
    width: 56px !important;
    height: 56px !important;
    border-radius: 50% !important;
    padding: 2px;
    margin-top: 20px !important;
    margin-left: 14px !important;
    background-color: #fff;
}

.frienddiv {
    overflow: auto;
    height: 100px;
    width: 49%;
    display: inline-block !important;
    border-radius: 5px;
    background: none;

    -webkit-transition: box-shadow 0.4s ease, transform 0.4s ease;
    -moz-transition: box-shadow 0.4s ease, transform 0.4s ease;
    -o-transition: box-shadow 0.4s ease, transform 0.4s ease;

    transition: box-shadow 0.4s ease, transform 0.4s ease;
}

.frienddiv:hover {
    background: var(--code-bg);

    /*-webkit-transform: scale(1.08);*/
    /*-moz-transform: scale(1.08);*/
    /*-ms-transform: scale(1.08);*/
    /*-o-transform: scale(1.08);*/
    /*transform: scale(1.08);*/

    transition: box-shadow 1s ease, transform 1s ease;
}

.dark .frienddiv:hover {
    background: var(--code-bg);

    /*-webkit-transform: scale(1.08);*/
    /*-moz-transform: scale(1.08);*/
    /*-ms-transform: scale(1.08);*/
    /*-o-transform: scale(1.08);*/
    /*transform: scale(1.08);*/

    transition: box-shadow 1s ease, transform 1s ease;
}

.frienddiv:hover .frienddivleft img {
    transition: 0.9s !important;
    /*-webkit-transition: 0.9s !important;*/
    /*-moz-transition: 0.9s !important;*/
    /*-o-transition: 0.9s !important;*/
    transform: rotate(360deg) !important;
    /*-webkit-transform: rotate(360deg) !important;*/
    /*-moz-transform: rotate(360deg) !important;*/
    /*-o-transform: rotate(360deg) !important;*/
    /*-ms-transform: rotate(360deg) !important;*/
}

.frienddivleft {
    width: 92px;
    float: left;
    margin-right: -5px;
}

.frienddivright {
    margin-top: 18px;
    margin-right: 18px;
}

.friendname {
    text-overflow: ellipsis;
    font-size: 100%;
    margin-bottom: 5px;
    color: var(--primary);
}

.friendinfo {
    text-overflow: ellipsis;
    font-size: 70%;
    color: var(--primary);
}

/* .dark .friendname, .dark .friendinfo {
    color: rgba(180, 181, 182, 0.8);
} */

@media screen and (max-width: 600px) {
    .friendinfo {
        display: none;
    }

    .frienddivleft {
        width: 84px;
        margin: auto;
    }

    .frienddivright {
        height: 100%;
        margin: auto;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .friendname {
        font-size: 18px;
    }
}

/* 小红帽opt */
.site-friend-link-image {
    border-radius: 50% !important;
}

.site-friend:hover img {
    transition: 0.9s !important;
    transform: rotate(360deg) !important;
}

使用示例:(图片支持绝对路径和相对路径,可以自定义title,默认为name) 记得加上首尾的{{}}

< friend name="小报童专栏推荐" url="https://read.daoyuchan.com" logo="https://daoyuc.oss-cn-hangzhou.aliyuncs.com/std/read.png" word="帮你把洞察转化为价值" >
< friend name="谙前码后" url="https://dadan.jaxer.cc/" title="一个小程序开发者" logo="/links/jaxer.png" word="用,写,迭代。爬虫不看样式。" >

效果预览

小报童专栏推荐
帮你把洞察转化为价值
谙前码后
用,写,迭代。爬虫不看样式。