Add blogroll feature with CSV support and shortcode implementation

This commit is contained in:
gribse 2025-05-24 12:01:54 +02:00
parent 39651412c6
commit 44ae47f5b9
6 changed files with 124 additions and 7 deletions

View file

@ -0,0 +1,82 @@
{{ $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(200px, 1fr)); /* Responsive grid */
gap: 10px; /* Space between grid items */
margin: 0 0;
}
.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;
transition: transform 0.2s, box-shadow 0.2s;
}
.blogroll-item:hover {
transform: translateY(-3px);
box-shadow: 0 5px 15px rgba(0,0,0,0.1);
}
.blogroll-name {
font-weight: bold;
font-size: 1.1rem;
margin-bottom: 0.5rem;
text-decoration: none;
color: var(--primary);
}
.blogroll-name a:hover {
color: var(--tertiary);
}
.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 {
align-self: flex-end;
font-size: 0.9rem;
}
.blogroll-feed *{
text-decoration: none;
}
</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-name">
<a href="{{ index $rowData "url-site" }}" target="_blank">{{ index $rowData "nom" }}</a>
</div>
<div class="blogroll-feed">
{{ if isset $rowData "url-feed" }}
<a href="{{ index $rowData "url-feed" }}" target="_blank">🛜 Feed</a>
{{ end }}
</div>
<div class="blogroll-desc">
<p>{{ index $rowData "description" }}</p>
</div>
</div>
{{ end }}
{{ end }}
</div>