blog/layouts/shortcodes/blogroll.html
2025-05-24 14:38:34 +02:00

89 lines
No EOL
2.4 KiB
HTML

{{ $csvFile := readFile "content/liens/blogroll.csv" }}
{{ $lines := split $csvFile "\n" }}
{{ $headers := split (index $lines 0) ";" }}
<style>
.blogroll {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* Responsive grid */
gap: 10px; /* Space between grid items */
margin: 0 0;
}
.blogroll-item a {
text-decoration: none;
box-shadow: none;
}
.blogroll-item {
padding: 0;
border-radius: 8px;
background-color: var(--entry);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
margin: 0;
padding: 10px;
}
.blogroll-name {
font-weight: bold;
font-size: 1.1rem;
margin-bottom: 0.5rem;
text-decoration: none;
color: var(--primary);
}
.blogroll a:hover {
color: var(--secondary);
text-decoration: underline;
}
.blogroll img {
width: 32px;
height: 32px;
object-fit: contain;
vertical-align: middle;
margin-right: 10px;
float: left;
}
.blogroll-desc {
flex-grow: 1; /* Allow description to take available space */
font-size: 0.9rem;
color: var(--secondary);
}
.blogroll-desc p {
margin: 0;
}
.blogroll-feed {
font-size: 0.9rem;
}
</style>
<div class="blogroll">
{{ range $i, $line := $lines }}
{{ if and (ne $i 0) (ne $line "") }}
{{ $cells := split $line ";" }}
{{ $rowData := dict }}
{{ range $j, $header := $headers }}
{{ $cellValue := index $cells $j | default "" }}
{{ $rowData = merge $rowData (dict $header $cellValue) }}
{{ end }}
<div class="blogroll-item">
<div class="blogroll-title">
{{ $siteUrl := index $rowData "url-site" }}
{{ $domain := replaceRE `^https?://([^/]+)/?.*$` "$1" $siteUrl }}
{{ $domain = replaceRE `\.[^.]+$` "" $domain }}
<img src="/blogroll-favicons/{{ $domain }}.png" alt="Favicon for {{ $domain }}" >
<a href="{{ index $rowData "url-site" }}" target="_blank">{{ index $rowData "nom" }}</a>
<span> - </span>
{{ if isset $rowData "url-feed" }}
<a class="blogroll-feed" href="{{ index $rowData "url-feed" }}" target="_blank">Feed</a>
{{ end }}
</div>
<div class="blogroll-feed">
</div>
<div class="blogroll-desc">
<p>{{ index $rowData "description" }}</p>
</div>
</div>
{{ end }}
{{ end }}
</div>