1. Add Shortcode template
Add friends-link.html
in layouts/shortcodes/
<div class="friends-container">
{{ $lang := .Site.Language.Lang }}
{{ $links := index site.Data (printf "links.%s" $lang) }}
{{ range $links }}
{{ if .title }}
<h4>{{ .title }}</h4>
{{ else }}
<a class="friendurl" target="_blank" href="{{ .link }}" title="{{ .description }}">
<div class="frienddiv">
<div class="frienddivleft">
<img class="myfriend" src="{{ .avatar }}" alt="{{ .name }}" />
</div>
<div class="frienddivright">
<div class="friendname">{{ .name }}</div>
<div class="friendinfo">{{ .description }}</div>
</div>
</div>
</a>
{{ end }}
{{ end }}
</div>
2. Creating Multilingual Data Files
Add two files to the data/
directory
data/
├── links.zh.yaml
└── links.en.yaml
Take links.zh.yaml
as an example:
# - title: xxx You can set the category title for the link list
- title: 朋友们 1
- name: 三水水水碎碎念
link: https://sanshui756.github.io
description: Share life, bit by bit
avatar: https://gdhblog.com/blog-imgs/friends-links/sanshui756.github.io.jpg
- name: LI SIR
link: https://lisir.me
description: 你的时间花在哪里,你的收获就在哪里
avatar: https://gdhblog.com/blog-imgs/friends-links/lisir.me.png
- title: 朋友们 2
- name: 黄金屋导航
link: https://www.hjw.zone
description: 航爷出品
avatar: https://gdhblog.com/blog-imgs/friends-links/hjw.zone.png
3. Adding page content
Under content
add two page files
content/
├── friends-links.zh.md
└── friends-links.en.md
Take friends-links.zh.md
as an example:
---
title: "友情链接"
draft: false
ShowReadingTime: false
showToc: false
TocOpen: false
showDocInfo: false
enableDonate: false
---
# Here you can use Markdown to write content...
# Remove the $ sign
{${< friends-link >}$}
4. Add CSS style
Add friends-links.css
in assets/css/extended
.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);
transition: box-shadow 1s ease, transform 1s ease;
}
.dark .frienddiv:hover {
background: var(--code-bg);
transition: box-shadow 1s ease, transform 1s ease;
}
.frienddiv:hover .frienddivleft img {
transition: 0.9s !important;
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);
}
@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;
}
}
.site-friend-link-image {
border-radius: 50% !important;
}
.site-friend:hover img {
transition: 0.9s !important;
transform: rotate(360deg) !important;
}
5. Launch and verify
hugo server
Thank you for your patience in reading! Come pick an emoji or leave a comment!