[development] Styling comment blocks according to vote results
Larry Garfield
larry at garfieldtech.com
Tue Jan 16 14:56:46 UTC 2007
That's not quite how I'd do it, but it's close.
You probably don't want that sort of logic in comment.tpl.php. Instead, I'd
have a theme function that themes, well, a class. :-) Pass it your raw data
or some partially processed version thereof, and it returns a simple class
string that you assign to the comment. A simple implementation could be:
// Number of votes for each rating
$scores = array(1=>5, 2=>3, 4=> 7, 6=> 2);
theme_mysummary($scores) {
// Get an average of all scores, or a median, or whatever
if ($avg < 2) return 'sucks';
if ($avg < 4) return 'ok';
if ($avg < 7) return 'good';
return 'rocks';
}
Then you just assign the string returned from that theme function as a class
of the comment with a prefix, say "mysummary-{$summaryclass}".
And the rest is up to CSS. Since it's a theme function you can easily
override it in template.tpl.php with whatever logic you want for a given
site.
At least that's my early morning thought on the matter before I've had my
morning up of tea. :-)
On Tuesday 16 January 2007 6:26 am, Ben Campbell wrote:
> Hi there - I'm working on a system to change the appearance of comments
> based on how people rate them. So highly rated comments would appear
> bigger and brighter than badly-rated comments.
>
> The voting API abstracts away the rating mechanism nicely (so in theory
> you could pick any voting module to drive the ratings system).
>
> But I'm not 100% sure of the best way to apply different looks to
> differently rated comments.
>
> My current thinking is that it'll have to be pretty tied to a theme -
> I'd pass some sort of rating metric into comment.tpl.php as an extra
> parameter and the template applies an appropriate style (probably one of
> a range of styles defined in a stylesheet).
>
> Does this sound like a sane way to do it?
> Does anyone have any suggestions of approaches I could take to
> generalise it a little? It'd be nice to decouple it from the theming as
> much as possible so others can take advantage of it.
>
> Thanks!
> Ben.
--
Larry Garfield AIM: LOLG42
larry at garfieldtech.com ICQ: 6817012
"If nature has made any one thing less susceptible than all others of
exclusive property, it is the action of the thinking power called an idea,
which an individual may exclusively possess as long as he keeps it to
himself; but the moment it is divulged, it forces itself into the possession
of every one, and the receiver cannot dispossess himself of it." -- Thomas
Jefferson
More information about the development
mailing list