Администратор
Неадекватный
Join Date: Aug 2005
Posts: 5,263
Версия vB: 3.8.x
Reputation:
Гуру 3907
Репутация в разделе: 49
|
Дал то, что лежит по указанной ссылке.
Еще код:
Note:
This hack will only work if your WordPress and vBulletin tables are in a single database.
This hack has only been tested on adding entries directly from the admin panel. It has not been tested on xmlrpc clients.
Use at your own risk. I will not be held liable for any loss of data nor problems that you might encounter on your site during the whole process of the mod.Backup your files and database(s) before proceeding.
Database Changes:
I have added a new column in WordPress’ posts table to maintian the vBulletin thread id that will be automatically generated for the blog entry. Note that the table name prefix might be different from your WordPress table settings:
Code:
ALTER TABLE `wp_posts` ADD `vb_threadid` INT(10);
Files to Upload:
Save the following as vb3–settings.php and upload it to the Wordpress wp-includes folder:
Code:
<?php
// This just holds the vb variables
$vb_bridge = 1; // 1=on 0=off
$vb_forumid = '2'; // forum id to post copy of article
$vb_userid = '1'; // user id to use for posting the article
$vb_username = 'admin'; // name of the user id
$vb_path = 'http://www.yoursite.com/forum'; //complete url of forums
$vb_dbprefix = 'vb3_'; //vBulletin database prefix
$vb_readmessage = 'Read the full blog entry.'; //message to be used in the forum to link back to the blog entry
?>$vb_forumid - is the forum id of the blog discussion forum. Usually, this is the ‘News’ or ‘Blog’ forum. I advice to to set the permission of this forum to not allow ‘New Posts’ but allow ‘New Replies.’ To get the id of the forum, on your vBulletin forums page, click on the forum that you want to assign and check the URL at the address bar. It will appear like ‘..forumdisplay.php?f=x’ where x is the forum id.
$vb_userid - is the user id you want to assign as the one who will automatically create a new thread in the forum you have chosen.To get the user id, go to your forum’s Member List and click on the member you would like to assign. The URL will appear like ‘member.php?u=x’ where x is the user id.
$vb_username - is the corresponding username of the user id. Rather than generating a new SQL query to get the username, it is better to just assign the name to this variable.
$vb_path - this is the actual URL of your site’s forum. Note that there is no trailing slash.
$vb_dbprefix - if you specified a table prefix when you installed vBulletin, enter it here.
$vb_dbprefix - This message will appear at the end of the vBulletin post that links back to the blog entry.
Added in v1.1: In the attached files at the right, download postfeed.php and upload it to the root folder of your vB forums (it should be in the same folder where external.php is).
Files to be Modified:
Here comes the slightly harder part. We need to modify some WordPress files. Part of the changes assume that you are using the Kubrick default theme. If you are using a different theme, change the corresponding files accordingly.
wp-includes/comment-functions.php
Replace:
Code:
function get_comments_number( $comment_id ) {
global $wpdb, $comment_count_cache;
$comment_id = (int) $comment_id;
if (!isset($comment_count_cache[$comment_id]))
$comment_count_cache[$comment_id] = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$comment_id' AND comment_approved = '1'");
return apply_filters('get_comments_number', $comment_count_cache[$comment_id]);
}
With:
Code:
function get_comments_number( $comment_id ) {
global $wpdb, $comment_count_cache;
include (ABSPATH . WPINC . '/vb3-settings.php');
$comment_id = (int) $comment_id;
if (!isset($comment_count_cache[$comment_id])) {
if ($vb_bridge){
$vb_threadid = $wpdb->get_var("SELECT vb_threadid FROM $wpdb->comments WHERE id = '$comment_id'");
$comment_count_cache[$comment_id] = $wpdb->get_var("SELECT count(*)-1 FROM {$vb_dbprefix}post WHERE threadid = '$vb_threadid'");
} else {
$comment_count_cache[$comment_id] = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$comment_id' AND comment_approved = '1'");
}
}
return apply_filters('get_comments_number', $comment_count_cache[$comment_id]);
}
Below:
Code:
function comments_popup_link($zero='No Comments', $one='1 Comment', $more='% Comments', $CSSclass='', $none='Comments Off') {
global $id, $wpcommentspopupfile, $wpcommentsjavascript, $post, $wpdb;
global $comment_count_cache;
Add:
Code:
include (ABSPATH . WPINC . '/vb3-settings.php');
if ($vb_bridge){
$vb_threadid = $post->vb_threadid;
if ($vb_threadid == "") {
echo $none;
return;
} else {
$comment_count_cache[$id] = $wpdb->get_var("SELECT count(*)-1 FROM {$vb_dbprefix}post WHERE threadid = '$vb_threadid'");
}
$number = $comment_count_cache[$id];
echo '<a href="'.$vb_path.'/showthread.php?t=' . $vb_threadid .'&goto=newpost">';
comments_number($zero, $one, $more, $number);
echo '</a>';
return;
}Save file.
Added in v1.1: wp-includes/feed-functions.php
Replace:
Code:
function comments_rss_link($link_text = 'Comments RSS', $commentsrssfilename = '') {
$url = comments_rss($commentsrssfilename);
echo "<a href='$url'>$link_text</a>";
}
With:
Code:
function comments_rss_link($link_text = 'Comments RSS', $commentsrssfilename = '') {
global $post;
include_once (ABSPATH . WPINC . '/vb3-settings.php');
if ($vb_bridge){
$url = $vb_path . '/postfeed.php?t=' . $post->vb_threadid . '&type=rss2';
} else {
$url = comments_rss($commentsrssfilename);
}
echo "<a href='$url'>$link_text</a>";
}Save file.
wp-admin/post.php
Below:
Code:
require_once('admin.php');
Add:
Code:
include_once (ABSPATH . WPINC . '/vb3-settings.php');
Below:
Code:
$result = $wpdb->query($postquery);
Modified in v1.2: Add:
Code:
// VB Bridge Start
if ($vb_bridge) {
if ($post_title == "") {
return;
}
$saveid = $vb_userid;
$savename = $vb_username;
$author_name = $wpdb->get_var("SELECT `user_login` FROM $wpdb->users WHERE `id` = '$post_author'");
if ($author_name != ""){
$vb_authorid = $wpdb->get_var("SELECT `userid` FROM " . $vb_dbprefix . "user WHERE `username` = '$author_name'");
if ($vb_authorid != ""){
$saveid = $vb_authorid;
$savename = $author_name;
}
}
$curtime = time();
$sql = "INSERT INTO `{$vb_dbprefix}thread`
SET `title`='{$post_title}',`lastpost`='{$curtime}', `forumid`='{$vb_forumid}', `open`='1', `postusername`='{$savename}', `postuserid`='{$saveid}', `lastposter`='{$savename}', `dateline`='{$curtime}', `visible`='1'";
$vbresult = $wpdb->query($sql);
$vb_threadid = $wpdb->insert_id;
if ($excerpt == ""){
$moreflag = strpos($content,'<!--more-->');
if ($moreflag === false) {
$introtext = $content;
} else {
$introtext = substr($content, 0, $moreflag);
}
$bbcontent = '[quote'.']'.strip_tags($introtext).'['.'/quote]';
} else {
$bbcontent = '[quote'.']'.strip_tags($excerpt).'['.'/quote]';
}
$bbcontent .= '[URL='.get_permalink($post_ID).']['.'b]'.$vb_readmessage.'['.'/b]['.'/URL]';
$sql = "INSERT INTO `{$vb_dbprefix}post`
SET `threadid`='{$vb_threadid}', `username`='{$savename}', `userid`='{$saveid}', `title`='{$post_title}', `pagetext`='{$bbcontent}', `ipaddress`='{$REMOTE_ADDR}', `allowsmilie`='1', `iconid`='1',`visible`='1', `dateline`='{$curtime}'";
$vbresult = $wpdb->query($sql);
$sql = "UPDATE `{$vb_dbprefix}forum` SET `threadcount`=`threadcount`+1, `lastpost`='{$curtime}', `lastposter`='{$savename}', `lastthread`='{$post_title}', `lastthreadid`='{$vb_threadid}', `lasticonid`='1' WHERE `forumid`='{$vb_forumid}' LIMIT 1";
$vbresult = $wpdb->query($sql);
$sql = "UPDATE $wpdb->posts SET `vb_threadid`={$vb_threadid} WHERE `ID`='{$post_ID}'";
$vbresult = $wpdb->query($sql);
}
// VB Bridge EndSave file.
If you are using the Kubrick default theme, open wp-content/themes/default/comments.php
Replace contents with:
Code:
<?php // Do not delete these lines
if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
die ('Please do not load this page directly. Thanks!');
if (!empty($post->post_password)) { // if there's a password
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie
?>
<p class="nocomments">This post is password protected. Enter the password to view comments.<p>
<?php
return;
}
}
/* This variable is for alternating comment background */
$oddcomment = 'alt';
?>
<!-- You can start editing here. -->
<p class="postmetadata">Discuss: <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>Save File.
If you are using the Kubrick default theme, open wp-content/themes/default/single.php
Replace:
Code:
You can <a href="#respond">leave a response</a>, or <a href="<?php trackback_url(true); ?>" rel="trackback">trackback</a> from your own site.
With (note that you are adding the path of the forum):
Code:
You can <a href="/forum/showthread.php?t=<?php echo( $post->vb_threadid ); ?>&goto=newpost">leave a response</a>, or <a href="<?php trackback_url(true); ?>" rel="trackback">trackback</a> from your own site.Save file.
If you are using the Kubrick default theme, open wp-content/themes/default/footer.php
Replace:
Code:
and <a href="feed:<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>.
With:
Code:
<!-- and <a href="feed:<?php bloginfo('comments_rss2_url'); ?>">Comments (RSS)</a>.-->Save file.
Lastly, open wp-rss2.php
Replace:
Code:
<wfw:commentRSS><?php echo comments_rss(); ?></wfw:commentRSS>
With (note that you are specifying the complete URL of the forum here):
Code:
<wfw:commentRSS>http://www.yoursite.com/forum/showthread.php?t=<?php echo $post->vb_threadid; ?></wfw:commentRSS>Save file.
vBulletin Settings:
The RSS feed will not work if you haven't activated RSS External synidcation on your forum. To do this, on your forums admincp, go to vBulletin Options->External Data Provider and check 'Yes' on Enable RSS Syncidcation.
|