diff --git a/content/members/index.erb b/content/members/index.erb
index 22317fda..6d1a390d 100644
--- a/content/members/index.erb
+++ b/content/members/index.erb
@@ -5,7 +5,7 @@ kind: page
Hier finden sich ein paar Infos zu einigen unserer Mitglieder.
<% @items.select { |i| i[:kind] == 'member' }.each do |member| %>
-
+<%= member[:title] %>
<% if member[:pgp] %>
- PGP-Key: <%= member[:pgp] %>
diff --git a/content/members/leibi.md b/content/members/leibi.md
index c5e56329..71fb95bd 100644
--- a/content/members/leibi.md
+++ b/content/members/leibi.md
@@ -1,5 +1,8 @@
-----
-title: Leibi (Stefan Leibfarth)
+title: Stefan 'Leibi' Leibfarth
+shortName: Leibi
+aliases:
+ - Stefan Leibfarth (Leibi)
kind: member
pgp: "0xE5CEBB2AC1354426"
url: https://stefan.leibfarth.org/
diff --git a/content/members/princess.md b/content/members/princess.md
index 7bc761cf..5e9bdb33 100644
--- a/content/members/princess.md
+++ b/content/members/princess.md
@@ -1,5 +1,6 @@
-----
-title: Princess
+title: Andrea 'Princess' Wardzichowski
+shortName: Princess
kind: member
pgp: "0x9E5343DB80CE19A7"
url: http://blog.querulantin.de/
diff --git a/content/members/rince.md b/content/members/rince.md
index dec1bbe1..e7c34e73 100644
--- a/content/members/rince.md
+++ b/content/members/rince.md
@@ -1,5 +1,6 @@
-----
-title: Rince
+title: Hanno 'Rince' Wagner
+shortName: Rince
kind: member
pgp: "0xA75723A176CDE3460449956A7C3192F14CF2D85A"
url: http://blog.rince.de/
diff --git a/content/members/skyr.md b/content/members/skyr.md
index e18f244d..1660b246 100644
--- a/content/members/skyr.md
+++ b/content/members/skyr.md
@@ -1,5 +1,8 @@
-----
-title: Skyr
+title: Stefan 'Skyr' Schlott
+shortName: Skyr
+aliases:
+ - Stefan Schlott
kind: member
pgp: "0xFDF44AE875FD7074"
url: http://stefan.ploing.de/
diff --git a/content/planet-cccs.html b/content/planet-cccs.html
index b30089d8..cf83c01f 100644
--- a/content/planet-cccs.html
+++ b/content/planet-cccs.html
@@ -8,7 +8,7 @@ Hier die letzten Postings ihrer privaten Blogs (die Links führen direkt auf die
-
- - <%= post[:user] %>
+ - <%= member_link(post[:user]) %>
<% end %>
diff --git a/layouts/article_body.html b/layouts/article_body.html
index b505342a..c92d6241 100644
--- a/layouts/article_body.html
+++ b/layouts/article_body.html
@@ -9,7 +9,7 @@
diff --git a/layouts/event_header.erb b/layouts/event_header.erb
index f1397583..9d4a8fc8 100644
--- a/layouts/event_header.erb
+++ b/layouts/event_header.erb
@@ -21,7 +21,7 @@
<% @item[:speakers].each do |speaker| %>
-
- <%= speaker[:name] %><% if speaker[:affiliation]%> (<%= speaker[:affiliation] %>)<% end %>
+ <%= member_link(speaker[:name], false) %><% if speaker[:affiliation]%> (<%= speaker[:affiliation] %>)<% end %>
<% end %>
diff --git a/layouts/item_intro.erb b/layouts/item_intro.erb
index 1f205bbf..37c1a9b5 100644
--- a/layouts/item_intro.erb
+++ b/layouts/item_intro.erb
@@ -8,7 +8,7 @@
diff --git a/lib/members.rb b/lib/members.rb
new file mode 100644
index 00000000..1685ae20
--- /dev/null
+++ b/lib/members.rb
@@ -0,0 +1,22 @@
+def find_member(name)
+ name = name.downcase
+ return items.find { |i| i[:kind] == 'member' and (
+ i[:title].downcase == name or
+ (i[:shortName] and i[:shortName].downcase == name) or
+ (i[:aliases] and i[:aliases].map { |a| a.downcase }.include?(name) )
+ ) }
+end
+
+def member_short_name(member)
+ return member[:shortName] || member[:title]
+end
+
+def member_link(name, short=true)
+ member = find_member(name)
+ if member
+ shortName = member_short_name(member)
+ return "#{short ? shortName : member[:title]}"
+ else
+ return name
+ end
+end