Ok,
Here is a general idea. In case of templates you can access original entity used for binding through $Container.DataItem. First you can try to replace username with $Container.DataItem.AspnetUser.UserDisplayName. There is no guarantee user profile will be fetched and in that case you need to extend webpart and replace username with your display name. You can find basic steps for extending webparts in this
blog. Once you extend easiest way is to override ParseTemplateTags, find username tag used in template and replace value with your display name.
protected
override
Hashtable ParseTemplateTags(BlogEntity blog)
{
var tags =
base
.ParseTemplateTags(blog);
tags[
"<# UserName #>"
] = UserProfileBLL.GetInstance().GetCachedUserProfile(blog.UserId).UserDisplayName;
return
tags;
}
When having small active user base (around 100 users) caching will work just fine, in case of larger user base you should consider fetching profiles from database in that case you would need to override BindData to get list of user ids and fetch their user profiles from db and use this list inside ParseTemplateTags.
When you have extended webpart you must replace MonoX webpart with your own on your pages and that should be it.