Index: src/views/partials/post-card.ejs
===================================================================
--- src/views/partials/post-card.ejs	(revision 7963a6e9c576b291e837823c55309d6bb470d2d9)
+++ src/views/partials/post-card.ejs	(revision 9f81a0939fe58cdd4565e908750e31dd04697f9a)
@@ -12,5 +12,8 @@
 
 const _base      = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '';
-const _href      = _base + '/' + post.slug;
+const _external  = post.external_url || null;
+const _href      = _external || (_base + '/' + post.slug);
+const _ext       = !!_external;
+const _src       = post.source_name || '';
 const _hasCover  = !!post.cover_image_url;
 const _typeLabel = (post.type && post.type !== 'overig' && post.type !== 'post') ? post.type : '';
@@ -43,6 +46,5 @@
   <% if (_hasCover) { %>
     <a class="post-list-cover" href="<%= _href %>"
-       hx-get="<%= _href %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
-       hx-push-url="<%= _href %>" hx-indicator="#pcms-loading"
+       <% if (_ext) { %>target="_blank" rel="noopener"<% } else { %>hx-get="<%= _href %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML" hx-push-url="<%= _href %>" hx-indicator="#pcms-loading"<% } %>
        aria-label="<%= post.title || '(zonder titel)' %>" tabindex="-1">
       <img src="<%= post.cover_image_url %>" alt="" loading="lazy" decoding="async">
@@ -54,4 +56,5 @@
       <% if (_isPinned) { %><span class="post-list-pin" aria-label="Vastgepind">★</span><% } %>
       <time datetime="<%= post.published_at || post.created_at %>"><%= _ddmmyyyy(post.published_at || post.created_at) %></time>
+      <% if (_src) { %><span class="post-list-type">&middot; via <%= _src %></span><% } %>
       <% if (_typeLabel) { %>
         <span class="post-list-type">· <%= _typeLabel.charAt(0).toUpperCase() + _typeLabel.slice(1) %></span>
@@ -64,6 +67,5 @@
     <h3 class="post-list-title">
       <a href="<%= _href %>"
-         hx-get="<%= _href %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
-         hx-push-url="<%= _href %>" hx-indicator="#pcms-loading">
+         <% if (_ext) { %>target="_blank" rel="noopener"<% } else { %>hx-get="<%= _href %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML" hx-push-url="<%= _href %>" hx-indicator="#pcms-loading"<% } %>>
         <%= post.title || '(zonder titel)' %>
       </a>
