This is a rough hack using template conditionals. It replaces the standard scheme for displaying reputation, with user defined graphics linked to the reputation levels set in the admincp.
This is how I have set it up. It works but I'm sure it's not the most elegant solution. Anyone is welcome to take the idea and develop it further - I'm not going to!
I have nine reputation levels set up. Three negative, one neutral and five positive. Positive reputation has one to five green blobs, negative has one to three red blobs. Neutral is one grey blob. Each level has it's own graphic (instead of repeating elements), which are uploaded to /images/reputation. I've based mine on the standard blobs, but they could be anything. The scores required for each level are controlled in the User Reputation Manager in the admincp.
You will need to know the reputationlevelid of each rep level which is not shown on the admincp. You can easily check it by looking at the reputationlevel table using something like phpMyAdmin.
The code in the postbit template looks like this:
Code:
<if condition="$show['reputation'] AND $post['reputationlevelid']==16">Credibility: <img src="$stylevar[imgdir_reputation]/-3.gif" alt="$post[username] $post[level]" border="0"></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==17">Credibility: <img src="$stylevar[imgdir_reputation]/-2.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==18">Credibility: <img src="$stylevar[imgdir_reputation]/-1.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==19">Credibility: <img src="$stylevar[imgdir_reputation]/0.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==20">Credibility: <img src="$stylevar[imgdir_reputation]/1.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==24">Credibility: <img src="$stylevar[imgdir_reputation]/2.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==21">Credibility: <img src="$stylevar[imgdir_reputation]/3.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==22">Credibility: <img src="$stylevar[imgdir_reputation]/4.gif" alt="$post[username] $post[level]" border="0" /></if>
<if condition="$show['reputation'] AND $post['reputationlevelid']==23">Credibility: <img src="$stylevar[imgdir_reputation]/5.gif" alt="$post[username] $post[level]" border="0" /></if>
This goes in place of
Code:
<if condition="$show['reputation']">$post[reputationdisplay]</if>
I suspect that it could be done in a single line using an array . . .
Reputation is also displayed in the member list (
memberlist_resultsbit) and
memberinfo
The code for this is lightly different and uses
Code:
condition="$userinfo['reputationlevelid']
I haven't posted any screen shots, because it doesn't actually look any different to the standard setup!
John