Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 3 Articles

Reply
 
Thread Tools
How to turn the "Post Thank You" hack into a "Likes" system similar to vBulletin.org
BirdOPrey5's Avatar
BirdOPrey5
Join Date: Jun 2008
Posts: 10,610

The details of my life are quite inconsequential.

New York
Show Printable Version Email this Page Subscription
BirdOPrey5 BirdOPrey5 is offline 07-05-2011, 10:00 PM

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&amp;p=$post[postid]&amp;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>
Note: The above template will work correct if you use the "Post Groan Hack" which I also use. You can convert the "Post Groan Hack" into an "dis-like" system basiclly the same way we are changing "Thank You" to "Likes."


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&amp;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&amp;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') . '";');
and change it to:

Code:
eval('$template_hook[postbit_signature_end] .= " ' . fetch_template('post_thanks_box') . '";');
OK This will move the "Like" box into the actual post table instead of below it.

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">
Change it to:

Code:
<td class="alt2" rowspan="2" width="175" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-top: 0px; border-bottom: 0px">
Find:

Code:
$template_hook[postbit_signature_end]
And delete it.

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;">
On my forum I actually use a background image texture but did not include it here as it is an unnecessary complication.

Feel free to play around and tweak the box to your liking. :up:
Attached Images
File Type: jpg Likes_ss.jpg (313.7 KB, 0 views)
Attached Files
File Type: txt Like System Converion by BOP5.txt (6.1 KB, 138 views)
Reply With Quote
  #62  
Old 08-26-2011, 05:58 AM
viper357's Avatar
viper357 viper357 is offline
 
Join Date: Dec 2006
Location: Worthing, UK
Posts: 563
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well that's really strange, I tested it on the default style and it worked, so went back to my modified style and it was still working, I made no other changes whatsoever, really odd, oh well, it's working now, I don't know how or why, lol. Thanks for the help and for this mod.

Joe, pretty please Joe , I noticed on your site that you give your users the option to switch off this hack in their usercp. Would you mind sharing how to do that? Thanks.
Reply With Quote
2 благодарности(ей) от:
BirdOPrey5, NTMID8
  #63  
Old 08-26-2011, 08:49 AM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by viper357 View Post
Well that's really strange, I tested it on the default style and it worked, so went back to my modified style and it was still working, I made no other changes whatsoever, really odd, oh well, it's working now, I don't know how or why, lol. Thanks for the help and for this mod.

Joe, pretty please Joe , I noticed on your site that you give your users the option to switch off this hack in their usercp. Would you mind sharing how to do that? Thanks.
Glad it's working.

Step 1- Make new user profile field, single selection radio box, options:
No
Yes

Step 2- Edit the postbit_display_complete plugin. Change the 2nd Conditional to:
Code:
if (can_thank_this_post($post, $thread['isdeleted']) && !thanked_already($post) && $vbulletin->userinfo['field29'] != "No" && $post['userid'] != 0)
Step 3- Edit the postbit_display_start plugin. Change the 1st Conditional to:
Code:
if ($vbulletin->userinfo['field29'] != "No" && !(defined('LOCATION_BYPASS')) && !(post_thanks_off($this->thread['forumid'], $this->post, $this->thread['firstpostid'], THIS_SCRIPT)))
Change "field29" in each to whatever field number is assigned to your custom profile filed... maybe field5 or field6, depends how many others you already have.

Note: Putting the "No" before the "Yes" and checking for "No" in the code is important so that it's active for everyone EXCEPT those who specifically opt-out of it.
Reply With Quote
  #64  
Old 08-28-2011, 05:05 AM
viper357's Avatar
viper357 viper357 is offline
 
Join Date: Dec 2006
Location: Worthing, UK
Posts: 563
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Joe, much appreciated.
Reply With Quote
Благодарность от:
BirdOPrey5
  #65  
Old 09-05-2011, 09:08 PM
EddyMaxx EddyMaxx is offline
 
Join Date: Jan 2010
Posts: 78
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great tutorial. I was able to follow it all the way through for both the LIKE and DISLIKE buttons.

Nice job Joe!
Reply With Quote
  #66  
Old 09-06-2011, 01:43 AM
NTMID8 NTMID8 is offline
 
Join Date: Feb 2004
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MagicThemeParks View Post
"Sorry, you are not allowed to 'Like' this post."

Wasn't the standard, "you've liked this guy's posts too much" message
Quote:
Originally Posted by BirdOPrey5 View Post
FYI to all- Paul has reported the bug preventing the "Liking" of articles here on vb.org is fixed. :up:
Any idea what Paul did to fix this error? I have a few users randomly reporting the same on my forum. (using v4.1.5)

Quote:
Originally Posted by Post Reader View Post
looks there is a problem when somone thanx the post the page needs to refresh again and AJAX feature is not working...
Has anyone figured out how to get AJAX working again? (using v4.1.5)

Quote:
Originally Posted by MagicThemeParks View Post
If you select the option to work with reputation points you can.
Probably right in front of me but I am not seeing it. Where do you set this up to work with reputation points?

--------------- Added [DATE]1315278204[/DATE] at [TIME]1315278204[/TIME] ---------------

Quote:
Originally Posted by BirdOPrey5 View Post
Glad it's working.

Step 1- Make new user profile field, single selection radio box, options:
No
Yes

Step 2- Edit the postbit_display_complete plugin. Change the 2nd Conditional to:
Code:
if (can_thank_this_post($post, $thread['isdeleted']) && !thanked_already($post) && $vbulletin->userinfo['field29'] != "No" && $post['userid'] != 0)
Step 3- Edit the postbit_display_start plugin. Change the 1st Conditional to:
Code:
if ($vbulletin->userinfo['field29'] != "No" && !(defined('LOCATION_BYPASS')) && !(post_thanks_off($this->thread['forumid'], $this->post, $this->thread['firstpostid'], THIS_SCRIPT)))
Change "field29" in each to whatever field number is assigned to your custom profile filed... maybe field5 or field6, depends how many others you already have.

Note: Putting the "No" before the "Yes" and checking for "No" in the code is important so that it's active for everyone EXCEPT those who specifically opt-out of it.
Anyone know how to get this working under v4.1.5? I made the change to postbit_display_complete as shown above. There is no postbit_display_start in v4 but that line exists in postbit_display_complete so I made that edit there as well. Tested out and regardless of whether my option is set to No or Yes, I can still see the Like system.
Reply With Quote
  #67  
Old 09-06-2011, 02:48 AM
MagicThemeParks's Avatar
MagicThemeParks MagicThemeParks is offline
 
Join Date: Sep 2009
Posts: 850
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Post #35 and Post #36 help you with the 4.x install instructions and alternate placement. :up:
Reply With Quote
  #68  
Old 09-06-2011, 03:13 AM
NTMID8 NTMID8 is offline
 
Join Date: Feb 2004
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MagicThemeParks View Post
Post #35 and Post #36 help you with the 4.x install instructions and alternate placement. :up:
I skimmed those but since I had it working other than AJAX I did not pay too much attention. Plus, they do not help with the user option to disable the whole system that BoP posted more recently.

However, I did fix my AJAX problem by going back and having a second look. For my site, the design of the Like box is all contained within the template post_thanks_postbit. Therefore the contents of my template post_thanks_box was simply:

PHP Code:
{vb:raw post_thanks_box
Upon taking another look, I changed it to the following which fixed the AJAX issue:

PHP Code:
<div id="post_thanks_box_{vb:raw post.postid}">
{
vb:raw post_thanks_box}
</
div
So thanks for making take a second look!
Reply With Quote
  #69  
Old 09-06-2011, 10:04 AM
BirdOPrey5's Avatar
BirdOPrey5 BirdOPrey5 is offline
Senior Member
 
Join Date: Jun 2008
Location: New York
Posts: 10,610
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by NTMID8 View Post
Anyone know how to get this working under v4.1.5? I made the change to postbit_display_complete as shown above. There is no postbit_display_start in v4 but that line exists in postbit_display_complete so I made that edit there as well. Tested out and regardless of whether my option is set to No or Yes, I can still see the Like system.
You can just edit the postbit_display_start and postbit_display_complete plugins... put the code that mentions the template hook inside this conditional:

PHP Code:
if ($vbulletin->userinfo['field29'] != "No")
{
     
//Original Code Here

again change "29" to whatever field number yours is.

As for your earlier question about what Paul did- it doesn't matter, the vb.org like system is completely custom and has nothing to do with the mod this article is based on- so nothing Paul did here is relevant.
Reply With Quote
  #70  
Old 09-21-2011, 03:18 PM
kevin.kool kevin.kool is offline
 
Join Date: Nov 2009
Posts: 74
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hope you will release this article for vB4 soon
Reply With Quote
  #71  
Old 09-21-2011, 03:19 PM
HMBeaty's Avatar
HMBeaty HMBeaty is offline
 
Join Date: Sep 2005
Posts: 4,141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kevin.kool View Post
Hope you will release this article for vB4 soon
Read the previous posts to use this with vB 4
Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:02 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.11974 seconds
  • Memory Usage 2,402KB
  • Queries Executed 28 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (14)bbcode_code
  • (3)bbcode_php
  • (9)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (49)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (2)postbit_attachment
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete