The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
How to turn the "Post Thank You" hack into a "Likes" system similar to vBulletin.org
BirdOPrey5
Join Date: Jun 2008
Posts: 10,610
The details of my life are quite inconsequential. New York
Note: These instructions are for VB 3.8. See post #35 by michal72 for a VB4 adaptation. First off, the "Likes" system on vBulletin.org is custom and does not use any other hacks- however it is too custom to be released. Instead you can modify an existing mod to do mostly the same thing. Several people have asked me for info on how to do this so I figured I'd write it up and post it here. You can see what it looks like on my live forum: http://www.juot.net/forums/showthread.php?t=60059 You need the latest version Abe1's Post Thank You Hack (7.7): Here. What you can see above was done with this mod plus some phrase changes and template edits, and an optional plugin edit. So step 1 is make sure you have the ?Thank You? mod installed and working. Step 2 is to change the following phrases. In Admin CP use Phrase Manager to "translate" these phrases from "Thank You" to "Like(s)": You can of course use your own translations but this is what I used- Phrase Name | Translation: post_thanks_already | You have already liked this post! post_thanks_remove_user | Remove Your Like post_thanks_search | Find All Liked Posts post_thanks_search_user | Find all liked posts by {1} post_thanks_search_user_gave | Find all posts liked by {1} post_thanks_thanked_post | Liked Post post_thanks_thanks | Likes post_thanks_time_post | Liked 1 Time in 1 Post post_thanks_times_post | Liked {1} Times in 1 Post post_thanks_times_posts | Liked {1} Times in {2} Posts post_thanks_total_thanks | Total Likes post_thanks_user_says | The Following User Likes This Post: post_thanks_users_say | The Following {1} Users Like This Post: Some of the above we won't actually use in my implementation but best to fix them all to be consistent. Step 3: At this point we need to have a "like.png" file in your images/buttons/ directory and the button directory for every custom style you have, if any. I will attach a couple of options but consider finding or making one unique to your forum. Step 4: Now we have to edit a couple of templates. Edit the template: post_thanks_button Replace it all with this: Code:
<a href="post_thanks.php?$session[sessionurl]do=post_thanks_add&p=$post[postid]&securitytoken=$bbuserinfo[securitytoken]" id="post_thanks_button_$post[postid]"<if condition="$vboptions[disable_ajax] != 2"> onclick="return post_thanks_give($post[postid], <if condition="$vboptions[post_groan_integrate]">true<else />false</if>);"</if> <if condition="$display_thanks_image == 'none'">style="display:none"</if> rel="nofollow"><img src="$stylevar[imgdir_button]/like.png" alt="Like This Post" border="0" /></a> Edit the template: post_thanks_postbit_legacy OR post_thanks_postbit (whichever postbit you use) Replace it all with this: Code:
<div style="background-color: #CAEBDA; border: 2px ridge #7BBA99; border-width: 2px 2px 2px 2px; padding: 2px; width:99%; margin: 0px auto 0px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; margin-top:auto; margin-bottom:0px;"> <table border="0" width="100%"> <tr> <td width="100"> <strong>Likes: ($post[post_thanks_amount_formatted])</strong><br /> </td><td> <div style="float:left;">$post[post_thanks_bit]</div> <div style="float:right;"><if condition="$bbuserinfo['usergroupid'] == 6"><a href="post_thanks.php?do=post_thanks_remove_all&p=$post[postid]"<if condition="$vboptions[disable_ajax] != 2"> onclick="return post_thanks_remove_all($post[postid], <if condition="$vboptions['post_groan_integrate']">true<else />false</if>);"</if> rel="nofollow">Delete All</a></if><if condition="$bbuserinfo['usergroupid'] == 6 AND $post['show_thanks_remove_option']"> | </if><if condition="$post['show_thanks_remove_option']"><a href="post_thanks.php?do=post_thanks_remove_user&p=$post[postid]"<if condition="$vboptions['disable_ajax'] != 2"> onclick="return post_thanks_remove_user($post[postid], <if condition="$vboptions['post_groan_integrate']">true<else />false</if>);"</if> rel="nofollow">Unlike</a></if></div> </td></tr></table> </div> At this point you should have a nice light-green "Like" box appearing below each post someone "Likes." You might want to stop here. The last steps are only if you want to integrate the Like box INTO the posts like on my forum. If you do the next step is pretty easy- In Admin CP -> Plugin Manager, edit the plugin: Post Thank You Hack on hook: postbit_display_start Find the line: Code:
eval('$template_hook[postbit_end] .= " ' . fetch_template('post_thanks_box') . '";'); Code:
eval('$template_hook[postbit_signature_end] .= " ' . fetch_template('post_thanks_box') . '";'); Again this is a good place to stop if you are happy. However there is one more template edit I did to keep the Like Box inside the post but at the very bottom of it regardless how short the post might be. In this case we must edit the postbit_legacy template. (I don't use the regular postbit template so I don't have any further instructions for people who use regular postbit. The following is ONLY for postbit_legacy.) IMPORTANT- Copy all of your postbit_legacy template to a text file and save it as a backup in case you make an error or the instructions don't work for you. You can also "Revert" the template but that will undo ALL customizations you may have made. Find in postbit_legacy: Code:
<td class="alt2" width="175" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-top: 0px; border-bottom: 0px"> Code:
<td class="alt2" rowspan="2" width="175" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-top: 0px; border-bottom: 0px"> Code:
$template_hook[postbit_signature_end] Find: Code:
<!-- / edit note --> </if> </td> </tr> Add BELOW it: Code:
<tr> <td class="alt1" valign="bottom"> $template_hook[postbit_signature_end] </td> </tr> And that should do it. Of course you are encouraged to make some customizations... Most of what you'll want to change is in the top part of the post_thanks_postbit_legacy template. The background color, border style, and the like are all controlled by this code: Code:
<div style="background-color: #CAEBDA; border: 2px ridge #7BBA99; border-width: 2px 2px 2px 2px; padding: 2px; width:99%; margin: 0px auto 0px auto; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; margin-top:auto; margin-bottom:0px;"> Feel free to play around and tweak the box to your liking. :up: |
#112
|
||||
|
||||
Then I don't know.
|
#113
|
|||
|
|||
I think you need to fix the functions_post_thanks.php file.
Find the following in function fetch_thanks_bit (around line 218). Code:
if ($cmpt<$number_rows) { $virg=","; } |
Благодарность от: | ||
Black Snow |
#114
|
|||
|
|||
You are a genius! Thx!
|
#115
|
|||
|
|||
Parse error: syntax error, unexpected $end in /home/feathert/public_html/includes/class_postbit.php(345) : eval()'d code on line 52
This is the error I've gotten. How do I fix it? Any ideas? |
#116
|
||||
|
||||
There is likely a typo in your postbit_display_start or postbit_display_complete plugin- if you can't find the error you could always reinstall the thank you mod but you will lose all customization.
|
#117
|
|||
|
|||
Install went great thanks for everyone's input.
I would like to ask for some help on these two things.. 1. removing the white space in the like box. 2. How to move the Like button to the left of or in between the "reply" or "Reply with quote" |
Благодарность от: | ||
SgtSling |
#118
|
|||
|
|||
Anychance I can get some help on this?
|
#119
|
|||
|
|||
I'm having a formatting error that I can't figure out. Everything displays properly, with one exception. For posts with more than 6 Thanks, the list of Thanks (which is hidden behind a toggle-able spoiler-style box) no longer displays for a person who has Thanked that post. It displays perfectly fine if you haven't thanked, but once you add yourself to the list clicking the toggle button does nothing. What am I doing wrong?
Code:
<div class="postbody"<vb:if condition="$vboptions['legacypostbit']"> style="margin-{vb:stylevar left}: 0; border-left: 0px"</vb:if>> <div class="postrow"> <vb:if condition="$bbuserinfo['usergroupid'] == 6 || $post['show_thanks_remove_option']"> <div class="smallfont" style="float:{vb:stylevar right}"> <vb:if condition="$bbuserinfo['usergroupid'] == 6"> <a href="post_thanks.php?do=post_thanks_remove_all&p={vb:raw post.postid}"<vb:if condition="$vboptions['disable_ajax'] != 2"> onclick="return post_thanks_remove_all({vb:raw post.postid}, <vb:if condition="$vboptions['post_groan_integrate']">true<vb:else />false</vb:if>);"</vb:if> rel="nofollow">{vb:rawphrase post_thanks_remove}</a> </vb:if> <vb:if condition="$bbuserinfo['usergroupid'] == 6 && $post['show_thanks_remove_option']"> | </vb:if> <vb:if condition="$post['show_thanks_remove_option']"> <a href="post_thanks.php?do=post_thanks_remove_user&p={vb:raw post.postid}"<vb:if condition="$vboptions['disable_ajax'] != 2"> onclick="return post_thanks_remove_user({vb:raw post.postid}, <vb:if condition="$vboptions['post_groan_integrate']">true<vb:else />false</vb:if>);"</vb:if> rel="nofollow">{vb:rawphrase post_thanks_remove_user}</a> </vb:if> </div> </vb:if> <vb:if condition="!$vboptions['legacypostbit']">post</vb:if> <vb:if condition="$post['post_thanks_amount'] == 1"> {vb:rawphrase post_thanks_user_says, {vb:raw post.username}} <vb:else /> {vb:rawphrase post_thanks_users_say, {vb:raw post.post_thanks_amount_formatted}, {vb:raw post.username}} </vb:if> <vb:if condition="$post['post_thanks_amount'] > 6"> <div class="smallfont" style="margin-bottom:0px"> <input type="button" value="Show List" style="width:60px;font-size:10px;margin:0px;padding:0px;float:left" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') {this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Hide List'; } else {this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Show List'; }"> </div><div class="alt1"><div style="display: none;"> {vb:raw post.post_thanks_bit} </div></div> <vb:else /> <span id="thanks"> <div class="content"> <div id="post_thanks_bit_{vb:raw post.postid}"> <blockquote class="postcontent restore"> {vb:raw post.post_thanks_bit} </blockquote> </div> </div> </span> </vb:if> </div> </div> <hr /> |
#120
|
|||
|
|||
I love this. I have been looking for something like this a long time. Thank you!
|
#121
|
|||
|
|||
How can I move the like box into the post for 4.2? I have tried a couple code edits, but can't get it to work. I'm not sure if I'm just missing something simple or what.
Also, does anyone have a link to where I can have each "like" notify the poster his post was liked? |
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|