feat: migration vers template academic-homepage original
Build and Deploy Jekyll / deploy (push) Successful in 42s

This commit is contained in:
2026-05-25 20:23:42 +02:00
parent 8500659207
commit b3c00734c2
78 changed files with 3458 additions and 188 deletions
+16
View File
@@ -0,0 +1,16 @@
<footer class="footer border-top py-2 mt-5 bg-white small">
<div class="{% if page.container_class %}{{ page.container_class }}{% else %}container-lg{% endif %}">
<div class="row my-3">
<div class="col-6">
<div class="text-muted">
<i>Last updated: {{ "now" | date: "%b %Y" }}</i>
</div>
</div>
<div class="col-6">
<div class="text-right text-muted">
{{ site.data.display.footer_text }}
</div>
</div>
</div>
</div>
</footer>
+18
View File
@@ -0,0 +1,18 @@
<nav class="navbar navbar-expand-sm navbar-light fixed-top mb-5 shadow-sm">
<div class="{% if page.container_class %}{{ page.container_class }}{% else %}container-lg{% endif %}">
<a class="navbar-brand"><strong>{{site.data.profile.navbar_name}}</strong></a>
<button class="navbar-toggler" style="font-size: 1em; padding: 0.5em;" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<i class="fas fa-map"></i> Menu
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
{% for item in site.data.navigation.pages %}
<li class="nav-item {% if item.name == page.navbar_title or include.active_page == item.name %}active{% endif %}">
<a class="nav-link" href="{{ item.url | relative_url }}">{{ item.name }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
</nav>
+60
View File
@@ -0,0 +1,60 @@
{%- assign authors = include.authors -%}
{%- assign has_eq_contrib = false -%}
{%- assign has_corresponding = false -%}
{%- for _key in authors -%}
{%- assign last_char = _key | slice: -1, 1%}
{%- assign last_2chars = _key | slice: -2, 2%}
{%- if last_2chars == "*#" or last_2chars == "#*" -%}
{%- assign key = _key | replace: "#*", "" | replace: "*#", "" -%}
{%- assign mark = "*<sup>#</sup>" -%}
{%- assign has_eq_contrib = true -%}
{%- assign has_corresponding = true -%}
{%- elsif last_char == "*" -%}
{%- assign key = _key | split: "*" | first -%}
{%- assign mark = "*" -%}
{%- assign has_eq_contrib = true -%}
{%- elsif last_char == "#" -%}
{%- assign key = _key | split: "#" | first -%}
{%- assign mark = '<sup>#</sup>' -%}
{%- assign has_corresponding = true -%}
{%- else -%}
{%- assign key = _key -%}
{%- assign mark = "" -%}
{%- endif -%}
{%- assign info = site.data.authors[key] -%}
{%- if info['name'] -%}
{%- assign name = info['name'] -%}
{%- else -%}
{%- assign name = key -%}
{%- endif -%}
{%- if info['bold'] == true -%}
{%- assign display_name = name | append: mark | prepend: "<strong>" | append: "</strong>" -%}
{%- else -%}
{%- assign display_name = name | append: mark -%}
{%- endif -%}
{%- if info['url'] -%}
<a class="text-body" target="_blank" href="{{ info['url'] }}">{{ display_name }}</a>{%- if forloop.index < authors.size -%}, {% endif -%}
{%- else -%}
<span class="text-body">
{{ display_name }}{%- if forloop.index < authors.size -%}, {% endif -%}
</span>
{%- endif -%}
{%- endfor -%}
{%- if has_eq_contrib or has_corresponding %}
<mark>(
{%- if has_eq_contrib -%}
* <i> equal contribution</i>
{%- endif -%}
{%- if has_corresponding -%}
{%- if has_eq_contrib -%}, {% endif -%}
<sup>#</sup> <i> corresponding author</i>
{%- endif -%}
)</mark>
{%- endif -%}
+39
View File
@@ -0,0 +1,39 @@
{% assign item = include.item %}
{% assign hide_bottom_border = include.hide_bottom_border %}
{% assign first = include.first %}
{% assign last = include.last %}
<div class="border-bottom border-gray p-3 {% if hide_bottom_border %}border-0{% endif %}">
<div class="row">
<div class="col-12">
<h5 class="mb-2">
<a href="{{ item.url | relative_url }}" class="text-dark text-decoration-none">
{{ item.title }}
</a>
</h5>
<div class="text-muted small mb-2">
<i class="fas fa-calendar-alt"></i> {{ item.date | date: "%B %d, %Y" }}
{% if item.tags %}
<span class="ml-3">
<i class="fas fa-tags"></i>
{% for tag in item.tags %}
<span class="badge badge-light">{{ tag }}</span>
{% endfor %}
</span>
{% endif %}
</div>
<div class="text-muted small">
{% if item.excerpt %}
{{ item.excerpt | strip_html | truncate: 500 }}
{% else %}
{{ item.content | strip_html | truncate: 500 }}
{% endif %}
</div>
<div class="mt-2">
<a href="{{ item.url | relative_url }}">
Read more <i class="fas fa-angle-double-right"></i>
</a>
</div>
</div>
</div>
</div>
+31
View File
@@ -0,0 +1,31 @@
<div>
<div id="{{ include.id | slugify }}" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
{% for item in include.images %}
<li data-target="#{{ include.id | slugify }}" data-slide-to="{{ forloop.index0 }}" {% if forloop.index == 1 %}class="active"{% endif %}></li>
{% endfor %}
</ol>
<div class="carousel-inner" style="height: {{ include.height }};">
{% for item in include.images %}
<div class="carousel-item {% if forloop.index == 1 %}active{% endif %}">
{% if item.link %}<a href="{{ item.link }}" target="_blank">{% endif %}
<div class="lazy always-load d-block rounded-xl" data-src="{{ item.src | relative_url }}" style="height: {{ include.height }};">
</div>
<div class="carousel-caption d-none d-md-block">
<h5>{{ item.title }}</h5>
<p>{{ item.desc }}</p>
</div>
{% if item.link %}</a>{% endif %}
</div>
{% endfor %}
</div>
<div class="carousel-control-prev" type="button" data-target="#{{ include.id | slugify }}" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</div>
<div class="carousel-control-next" type="button" data-target="#{{ include.id | slugify }}" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</div>
</div>
</div>
+26
View File
@@ -0,0 +1,26 @@
<div id="ghpages-domain-debug-message" class="row mt-3 d-none">
<div class="col">
<div class="alert alert-warning my-0" role="alert">
<h5><i class="fas fa-exclamation-triangle"></i> Warning</h5>
<strong>Problem:</strong>
The current name of your GitHub Pages repository ("<code class="repo-name-text"></code>") does not match the recommended repository name for your site ("<code class="domain-name-text"></code>").
<br>
<strong>Solution:</strong> Please consider renaming the repository to "<code class="domain-name-text"></code>", so that your site can be accessed directly at "<code>http://<span class="domain-name-text"></span></code>".
However, if the current repository name is intended, you can ignore this message by removing {% raw %}"<code>{% include widgets/debug_repo_name.html %}</code>"{% endraw %} in <code>index.html</code>.
</div>
</div>
</div>
<script>
striped_pathname = location.pathname.replace(/\/+$/, "");
document.querySelectorAll(".repo-name-text").forEach(function(element){
element.textContent = striped_pathname.replace("/", "");
});
document.querySelectorAll(".domain-name-text").forEach(function(element){
element.textContent = location.hostname;
});
if (location.hostname.search("github.io") != -1 && striped_pathname != ""){
document.getElementById("ghpages-domain-debug-message").classList.remove('d-none');
}
</script>
+24
View File
@@ -0,0 +1,24 @@
<div id="url-debug-message" class="row mt-3 d-none">
<div class="col">
<div class="alert alert-warning my-0" role="alert">
<h5><i class="fas fa-exclamation-triangle"></i> Action required</h5>
<strong>Problem:</strong>
The current root path of this site is "<code class="root-path-text"></code>",
which does not match the <code>baseurl</code> ("<code>{{ site.baseurl }}</code>") configured in <code>_config.yml</code>.
<br>
<strong>Solution:</strong>
Please set the <code>baseurl</code> in <code>_config.yml</code> to "<code class="root-path-text"></code>".
</div>
</div>
</div>
<script>
striped_pathname = location.pathname.replace(/\/+$/, "");
if(striped_pathname != "{{ site.baseurl }}"){
document.getElementById("url-debug-message").classList.remove('d-none');
}
document.querySelectorAll(".root-path-text").forEach(function(element){
element.textContent = striped_pathname;
});
</script>
+75
View File
@@ -0,0 +1,75 @@
<div class="row mt-3">
<div class="col">
<div class="card border-0 shadow-sm bg-white">
<div class="card-body p-4">
<div class="row" data-masonry='{"percentPosition": true }'>
{% if site.data.profile.education %}
<div class="col-lg-6">
<div class="mx-2 my-1">
<h6>Education</h6>
<ul class="list-unstyled mb-1">
{% for item in site.data.profile.education %}
<li class="media mb-1">
<img src="{{ item.logo | relative_url }}" alt="{{ item.name }}" style="width: 18px;" class="mr-1 mt-1">
<div class="media-body">
<div>{{ item.name }}</div>
<div class="small">{{ item.dept }}</div>
<div class="small d-flex">
<div>{{ item.position }}</div>
<div class="mt-auto ml-auto no-break"><em>{{ item.date }}</em></div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% if site.data.profile.experience %}
<div class="col-lg-6">
<div class="mx-2 my-1">
<h6>Experience</h6>
<ul class="list-unstyled mb-1">
{% for item in site.data.profile.experience %}
<li class="media mb-1">
<img src="{{ item.logo | relative_url }}" alt="{{ item.name }}" style="width: 18px;" class="mr-1 mt-1">
<div class="media-body">
<div>{{ item.name }}</div>
<div class="small">{{ item.dept }}</div>
<div class="small d-flex">
<div>{{ item.position }}</div>
<div class="mt-auto ml-auto no-break"><em>{{ item.date }}</em></div>
</div>
</div>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
{% if site.data.profile.awards %}
<div class="col-lg-6">
<div class="mx-2 my-1">
<h6>Honors & Awards</h6>
<ul class="list small pl-3 mb-1">
{% for item in site.data.profile.awards %}
<li>
<div class="d-flex">
<div>{{ item.name }}</div>
<div class="ml-auto mt-auto no-break"><em>{{ item.date }}</em></div>
</div>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
+21
View File
@@ -0,0 +1,21 @@
{% assign news_by_year = site.news | sort: "date" | reverse | slice: 0, include.limit | group_by_exp: "item", "item.date | date: '%Y'" -%}
<div class="my-3 bg-white shadow-sm rounded-xl">
<h6 class="p-3 mb-0 border-bottom border-gray"><i class="fas fa-rss"></i> News</h6>
<div class="px-3 pb-1 small">
{% for year in news_by_year %}
<div class="media py-1 {% if not_first -%}border-top border-gray{%- endif %}">
{% assign not_first = true %}
<div class="mr-3 text-muted my-1">{{ year.name }}</div>
<div class="media-body">
{% for item in year.items %}
<div class="my-1 d-flex">
<div>{{ item.title }}</div>
<div class="ml-auto mt-auto text-muted no-break"><i>{{ item.date | date: "%b %d" }}</i></div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div>
+121
View File
@@ -0,0 +1,121 @@
<div class="row">
<div class="col">
<div class="card border-0 shadow-sm bg-white">
<div class="card-body p-5">
<div class="row">
<div class="col">
{% if site.data.profile.portrait_url %}
<!-- When the screen is wider than md, float the portrait on the right -->
<div class="figure float-right ml-4 mb-4 d-none d-md-block">
<img
src="{{ site.data.profile.portrait_url | relative_url }}"
class="figure-img img-fluid img-thumbnail"
style="height: 200px;"
data-toggle="tooltip"
data-placement="top"
title="{{ site.data.profile.portrait_caption }}">
</div>
{% endif %}
<div class="d-flex">
<div class="h1 font-weight-normal">
{{ site.data.profile.primary_name }} <small>{{ site.data.profile.secondary_name }}</small>
</div>
{% if site.data.profile.portrait_url %}
<div class="ml-auto d-md-none">
<a target="_blank" href="{{ site.data.profile.portrait_url | relative_url }}">
<img src="{{ site.data.profile.portrait_url | relative_url }}" class="rounded-circle" style="height: 48px;" alt="Portrait">
</a>
</div>
{% endif %}
</div>
<div class="text-profile-position">
{% for position in site.data.profile.positions %}
{% if position.logo -%}
<img src="{{ position.logo | relative_url }}" alt="Logo" class="inline-badge"/>
{%- endif %}
{{ position.name }}<br/>
{% endfor %}
</div>
<div class="text-profile-bio mt-3" {% if site.data.profile.short_bio_text_justify %}style="text-align: justify;"{% endif %}>
{{ site.data.profile.short_bio }}
</div>
{% if site.data.profile.cv_link %}
<a target="_blank" href="{{ site.data.profile.cv_link | relative_url }}"><i class="fas fa-file-alt"></i> Curriculum Vitae</a> <br/>
{% endif %}
</div>
</div>
<hr />
<div class="row">
<div class="col">
<a class="pr-3" href="mailto:{{ site.data.profile.email | encode_email }}">
<i class="fas fa-at"></i> <span class="email-text">{{ site.data.profile.email | replace: "@", "(at)" }}</span>
</a>
{% if site.data.profile.gscholar %}
{%- if site.data.profile.gscholar contains 'scholar.google' -%}
{%- assign gscholar_url = site.data.profile.gscholar -%}
{%- else -%}
{%- assign gscholar_url = 'https://scholar.google.com/citations?user=' | append: site.data.profile.gscholar -%}
{%- endif -%}
<a class="pr-3 no-break" target="_blank" href="{{ gscholar_url }}">
<i class="fab fa-google-scholar"></i> Google Scholar
</a>
{% endif %}
{% if site.data.profile.github %}
<a class="pr-3 no-break" target="_blank" href="https://github.com/{{ site.data.profile.github }}">
<i class="fab fa-github"></i> GitHub
</a>
{% endif %}
{% if site.data.profile.wechat_qrcode %}
<a class="pr-3 no-break" data-toggle="modal" data-target="#modal-wechat">
<i class="fab fa-weixin"></i> WeChat
</a>
{% endif %}
{% if site.data.profile.twitter %}
<a class="pr-3 no-break" target="_blank" href="https://twitter.com/{{ site.data.profile.twitter }}">
<i class="fab fa-twitter"></i> Twitter
</a>
{% endif %}
{% if site.data.profile.linkedin %}
<a class="pr-3 no-break" target="_blank" href="https://www.linkedin.com/in/{{ site.data.profile.linkedin }}">
<i class="fab fa-linkedin"></i> LinkedIn
</a>
{% endif %}
{% if site.data.profile.orcid %}
<a class="pr-3 no-break" target="_blank" href="https://orcid.org/{{ site.data.profile.orcid }}">
<i class="fab fa-orcid"></i> ORCID
</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% if site.data.profile.wechat_qrcode %}
<div class="modal fade" id="modal-wechat" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-body p-0">
<img src="{{ site.data.profile.wechat_qrcode | relative_url }}" class="img-fluid">
</div>
{% if site.data.profile.wechat_prompt %}
<div class="modal-body p-1">
{{ site.data.profile.wechat_prompt }}
</div>
{% endif %}
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{% endif %}
@@ -0,0 +1,25 @@
<div class="mt-3 d-md-none"></div>
<div class="row">
<div class="col">
<div class="card border-0 shadow-sm bg-white">
<div class="card-body p-4">
<div class="row px-3 pt-3">
<div class="col h3">
About Me
</div>
</div>
<div class="row p-3">
<div class="col">
<div class="text-profile-bio mt-0" {% if site.data.profile.short_bio_text_justify %}style="text-align: justify;"{% endif %}>
{{ site.data.profile.short_bio }}
</div>
{% if site.data.profile.cv_link %}
<a target="_blank" href="{{ site.data.profile.cv_link | relative_url }}"><i class="fas fa-file-alt"></i> Curriculum Vitae</a> <br/>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
+113
View File
@@ -0,0 +1,113 @@
<div class="row sticky-top" style="top: 80px">
<div class="col">
<div class="card border-0 shadow-sm bg-white">
<div class="card-body px-4 pt-4 pb-3">
<div class="row">
<div class="col">
{% if site.data.profile.portrait_url %}
<!-- When the screen is wider than md, float the portrait on the right -->
<div class="figure d-none d-md-block">
<img
src="{{ site.data.profile.portrait_url | relative_url }}"
class="figure-img img-fluid"
data-toggle="tooltip"
data-placement="top"
title="{{ site.data.profile.portrait_caption }}">
</div>
<div class="mb-3 d-md-none text-center">
<img src="{{ site.data.profile.portrait_url | relative_url }}" class="rounded-circle" style="max-width: 50%;" alt="Portrait">
</div>
{% endif %}
</div>
</div>
<div class="row">
<div class="col text-center h4">
{{ site.data.profile.primary_name }}
</div>
</div>
<div class="row small">
<div class="col text-center">
{% for position in site.data.profile.positions %}
{{ position.name }}<br/>
{% endfor %}
</div>
</div>
<div class="row small">
<div class="col text-center">
<a class="email-text" href="mailto:{{ site.data.profile.email | encode_email }}">
{{ site.data.profile.email | replace: "@", "(at)" }}
</a>
</div>
</div>
<div class="row pt-2">
<div class="col text-center h4">
{% if site.data.profile.gscholar %}
{%- if site.data.profile.gscholar contains 'scholar.google' -%}
{%- assign gscholar_url = site.data.profile.gscholar -%}
{%- else -%}
{%- assign gscholar_url = 'https://scholar.google.com/citations?user=' | append: site.data.profile.gscholar -%}
{%- endif -%}
<a class="px-1 no-break" target="_blank" href="{{ gscholar_url }}">
<i class="fab fa-google-scholar"></i>
</a>
{% endif %}
{% if site.data.profile.github %}
<a class="px-1 no-break" target="_blank" href="https://github.com/{{ site.data.profile.github }}">
<i class="fab fa-github"></i>
</a>
{% endif %}
{% if site.data.profile.wechat_qrcode %}
<a class="px-1 no-break" data-toggle="modal" data-target="#modal-wechat">
<i class="fab fa-weixin"></i>
</a>
{% endif %}
{% if site.data.profile.twitter %}
<a class="px-1 no-break" target="_blank" href="https://twitter.com/{{ site.data.profile.twitter }}">
<i class="fab fa-twitter"></i>
</a>
{% endif %}
{% if site.data.profile.linkedin %}
<a class="px-1 no-break" target="_blank" href="https://www.linkedin.com/in/{{ site.data.profile.linkedin }}">
<i class="fab fa-linkedin"></i>
</a>
{% endif %}
{% if site.data.profile.orcid %}
<a class="px-1 no-break" target="_blank" href="https://orcid.org/{{ site.data.profile.orcid }}">
<i class="fab fa-orcid"></i>
</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
{% if site.data.profile.wechat_qrcode %}
<div class="modal fade" id="modal-wechat" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-body p-0">
<img src="{{ site.data.profile.wechat_qrcode | relative_url }}" class="img-fluid">
</div>
{% if site.data.profile.wechat_prompt %}
<div class="modal-body p-1">
{{ site.data.profile.wechat_prompt }}
</div>
{% endif %}
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
{% endif %}
+14
View File
@@ -0,0 +1,14 @@
{% assign publications = include.publications %}
<div class="my-3 p-0 bg-white shadow-sm rounded-xl">
<h6 class="border-bottom border-gray p-3 mb-0">
{% if include.title %}{{ include.title }}{% else %}<i class="fas fa-star"></i> Selected Recent Publications{% endif %}
<a href="{{ 'publications' | relative_url }}">(view all <i class="fas fa-angle-double-right"></i>)</a>
</h6>
{% for item in publications limit:include.limit %}
{% include widgets/publication_item.html item=item first=false last=false %}
{% endfor %}
<h6 class="d-block p-3 mt-0 text-right">
<a href="{{ 'publications' | relative_url }}">All publications <i class="fas fa-angle-double-right"></i></a>
</h6>
</div>
+54
View File
@@ -0,0 +1,54 @@
{% assign item = include.item %}
<div class="d-none d-md-block">
<div class="row no-gutters {% unless include.hide_bottom_border %}border-bottom{% endunless %} border-gray">
<div class="col-md-3 col-xl-2 mb-md-0 p-md-3">
{%- if item.cover -%}
<img data-src="{{ item.cover | relative_url }}" alt="{{ item.title }}" class="lazy w-100 rounded-sm" src="{{ '/assets/images/empty_300x200.png' | relative_url }}">
{%- else -%}
<svg class="bubble-visual-hash lazy w-100 rounded-sm" data-bubble-visual-hash="{{ item.id }}" viewBox="0 0 300 200"></svg>
{%- endif -%}
</div>
<div class="col-md-9 col-xl-10 p-3 pl-md-0">
<h5 class="mt-0 mb-1 font-weight-normal">{{ item.title }}</h5>
<p class="mt-0 mb-0 small">{% include widgets/author_list.html authors=item.authors %}</p>
<p class="mt-0 mb-0 small">{{item.pub_pre}}<i>{{ item.pub }}</i>{{ item.pub_post }} {{ item.pub_date }} {{ item.pub_last }} <span data-semantic-scholar-id="{{ item.semantic_scholar_id }}"></span></p>
<p class="mt-0 mb-0 small text-muted">{{ item.abstract }}</p>
<p class="small pb-0 mb-0 lh-125 text-muted abstract-links">
{% for link in item.links %}
{% if link[1].url %}
<a target="{{ link[1]['target'] }}" href="{{ link[1]['url'] }}">[{{ link[0] }}]</a>
{% else %}
<a target="_blank" href="{{ link[1] }}">[{{ link[0] }}]</a>
{% endif %}
{% endfor %}
</p>
</div>
</div>
</div>
<div class="row no-gutters d-md-none {% unless include.hide_bottom_border %}border-bottom{% endunless %} border-gray {% if include.first %}rounded-xl-top{% endif %} {% if include.last %}rounded-xl-bottom{% endif %} {% if item.cover %}lazy{% endif %}" data-src="{{ item.cover | relative_url }}">
<div class="w-100 {% if include.first %}rounded-xl-top{% endif %} {% if include.last %}rounded-xl-bottom{% endif %}" style="background-color: rgba(255,255,255,0.9);">
<div class="d-flex align-items-start flex-column py-3 px-4">
<div class="mb-auto"></div>
<div>
<h5 class="mt-0 mb-1 font-weight-normal">{{ item.title }}</h5>
<p class="mt-0 mb-0 small">{% include widgets/author_list.html authors=item.authors %}</p>
<p class="mt-0 mb-0 small">{{item.pub_pre}}<i>{{ item.pub }}</i>{{ item.pub_post }} {{ item.pub_date }} {{ item.pub_last }} <span data-semantic-scholar-id="{{ item.semantic_scholar_id }}"></span></p>
<p class="mt-0 mb-0 small text-muted">{{ item.abstract }}</p>
<p class="small pb-0 mb-0 lh-125 text-muted abstract-links">
{% for link in item.links %}
{% if link[1].url %}
<a target="{{ link[1]['target'] }}" href="{{ link[1]['url'] }}">[{{ link[0] }}]</a>
{% else %}
<a target="_blank" href="{{ link[1] }}">[{{ link[0] }}]</a>
{% endif %}
{% endfor %}
</p>
</div>
</div>
</div>
</div>