The Arcive of vBulletin Modifications Site. |
|
Details »»
|
|||||||||||||||||||||||||
Another quick, but kick-arse hack. We have a home-made content management system (actually, a beta tool see incursio.com for more info - product is called Editio). At any rate, it allows staff or community members to create online articles. Once articles are published, I wanted a way to automatically link them into our forums, so people could start a discussion, or join a discussion already in progress about that particular article. Yahoo! does this with news events as well.
At any rate, perl script. chmod 755, I call it discuss_link.cgi. It should be invoked via SSI. Under Apache: Code:
<!--#include virtual=/cgi-bin/discuss_link.cgi?topic=Downhill+Skiing+Basics&forum=5 --> Our content management system (through its plugin concept) allows us to have stuff like this embedded within each article - you could cobble up something similar in your own system with a little effort. Code:
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
use DBI;
#Require the cgi library
require '/opt/web/cgi-bin/cgi-lib.pl';
&ReadParse(*input);
# Grab fields
$topic = $input{'topic'};
$forum = $input{'forum'};
# Does the forum/topic combo exist?
# Connect to mySQL
$dbh = DBI->connect( "DBI:mysql:vbulletin", "id", "password");
if ( !defined $dbh ) {
print "<LI>Cannot connect to mySQL server: $DBI::errstr\n";
}
# Grab the forum name
$q = "SELECT title FROM forum WHERE forum = $forum";
$sth = $dbh->prepare($q);
$sth->execute;
@result = $sth->fetchrow_array;
$forum_name = $result[0];
$sth->finish;
$quoted_title = $dbh->quote($topic);
$q = "SELECT threadid FROM thread WHERE forumid = $forum AND title = $quoted_title";
$sth = $dbh->prepare($q);
$sth->execute;
@result = $sth->fetchrow_array;
$threadid = $result[0];
$sth->finish;
# Prep for linking
$topic =~ tr/ /+/;
if( $threadid <= 0 ) {
print "<A HREF=http://www.mysite.com/forums/newthread.php?s=&action=newthread&forumid=$forum&subject=$topic>Start a Conversation!</A>";
exit(1);
}
print ("<A HREF=http://www.mysite.com/forums/showthread.php?s=&threadid=$threadid>Join the Conversation!</A>");
exit;
Show Your Support
|
|||||||||||||||||||||||||
| Comments |
|
#2
|
|||
|
|||
|
For those who'd like to see it in action - take a peek:
http://www.wetcanvas.com/Articles/Scott_Burkett/105/ Check the bottom of the page. Cheers. |
|
#3
|
||||
|
||||
|
Good hack, but you should have done it in PHP and not icky pUrl
|
|
#4
|
|||
|
|||
|
Oh wow that really is cool!
I think it would be good for long community news articles too. |
|
#5
|
|||
|
|||
|
So rewrite in PHP. I wrote it in Perl because it was done long before I ever had vbulletin.
|
|
#6
|
|||
|
|||
|
unixman - you are the man! Thanks for the hack.
|
|
#7
|
|||
|
|||
|
Awesome hack! Thank you very much!
Any idea on when Editio will be ready for release? Looks like a cool product. TigerLily
|
|
#8
|
|||
|
|||
|
A bit off-topic for this board, but over the summer for sure. Just add yourself to our mailing list and you'll be the first to know. :-)
Cheers. |
|
#9
|
||||
|
||||
|
Quote:
All you should need to do is include("discussion_link.php") where you would like the "Start/Join a Conversation!" link to be. You'll need to set your own username, password, database, and forumpath in the script, of course. I've tried out the script on my site and it looks like it works. Any improvements, bug fixes, and such are always welcome. |
|
#10
|
|||
|
|||
|
Cool!
But how to use it? |
![]() |
|
|