0

这是我第一次在这里发帖,所以如果我做错了什么,请告诉我!

我正在使用 Wordpress 和 Xenforo,使用 WP 作为门户页面。他们都有自己的数据库。我正在使用一个多年来没有继续支持的 WP 插件,专门为 Xenforo 设计。

问题:插件从 Xenforo 论坛中提取最新帖子(或最新帖子)并将它们显示在 WP 的侧边栏小部件中。但是帖子链接指向 THREAD 而不是特定的 POST。

我查看了插件的代码,试图找出我必须修改代码的哪一部分来纠正这个问题。我不知道要寻找什么。

这是插件的代码:

   <?php
//------------------------------------------------------------------------------------
//status:               CHECKED IN
//------------------------------------------------------------------------------------
/**
 * qry_lastposts.php:    run the query to get the last posts
 * @package plugins_lastposts
 * @version version 1.4.0
 * @copyright EIP Software LLC - eipSoftware_Copyright.php
 */
//------------------------------------------------------------------------------------
/**
 * Get Last Posts --> run the queries to get the latest forum posts
 * @return string last post query 
 */
function qry_LastPostList($userOptions)
{
    try
    {
        $qry_sql =  "   SELECT  thread.thread_id,
                                thread.title, 
                                thread.username                 as threadstarter,
                                thread.user_id                  as threadstarterid,
                                thread.reply_count              as replies,
                                thread.last_post_id             as lastpostid,
                                thread.last_post_username       as lastposter,
                                thread.last_post_user_id        as lastposteruserid,
                                thread.last_post_date           as lastpostdate,
                                usr.avatar_date                 as lastposteravatardate,
                                TRUNCATE(usr.user_id, -3)/1000  as lastposteravatardir

                        FROM    xf_thread                   as thread
                                inner join xf_user          as usr
                                on thread.last_post_user_id = usr.user_id

                        WHERE   thread.discussion_state = 1
                                AND usr.message_count >= " . $userOptions['forumUserPosts'] . "
                                AND node_id NOT IN  (" . $userOptions['excludeNodes'] . ")
                                AND thread.last_post_date >=UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL " . $userOptions['forumLookBack'] . " DAY))
                                AND usr.user_group_id NOT IN (" . $userOptions['forumUserGroup'] .")  
                        ORDER BY last_post_date DESC
                    ";      
        $qry_sql .= ($userOptions['forumPosts']>=1 && $userOptions['forumPosts']<=100) ? 
                    " LIMIT 0," .  $userOptions['forumPosts']
                    :" LIMIT 0,10";
        return($qry_sql);
    }
    catch(ExceptionHandler $e)
    {
        $e->ParseError($qry_sql);
    }
}
?> 

我在想这里有些东西与帖子 ID 无关。例如,当我单击列表中的第一个帖子时:

http://vi-control.net/community/index.php?threads/ORCHESTAL-TOOLS-ANNOUNCES-SOLOISTS-SERIES--new-TECH-DEMOS.46965/

我看到它针对线程 index.php?threads/ORCHESTAL-TOOLS-ANNOUNCES-SOLOISTS-SERIES--new-TECH-DEMOS

即使帖子 ID 在那里:#46965

当我点击它时,它确实到达了该线程的第一个帖子,而不是我期望找到的那个。所以这就像它向我展示了看到新帖子的最新线程,而不是把我带到帖子本身。

有没有人理解这些... :) 我可以进行更正、修改或添加来解决这个问题吗?

原始插件可以在这里找到: https ://www.dropbox.com/s/4jzfpfpcccjtrj6/eipSoftwareOnlineUsers_v1.2.5b.zip?dl=0

我在上面发布的代码来自文件:qry_lastposts.php,位于 eipSoftware\lastposts\qry。

感谢您的任何帮助!

问候,

安德烈

4

1 回答 1

0

安德烈,您提到的“帖子ID”(46965)实际上是线程ID。对于该线程上的第三个“帖子”,您的链接看起来就像帖子 IDhttp://vi-control.net/community/threads/46965/#post-3884651在哪里。#post-3884651

您的 MySQL 查询正在选择:

                        thread.last_post_id             as lastpostid,

所以你希望你的 URL 看起来像:

'http://vi-control.net/community/posts/'.$lastpostid.'/'

而不是用于线程的当前格式。如果您想让它threads/THREADID/#post-POSTID从一开始就看起来像,您还必须处理影响 URL 的分页,这会使事情复杂化。

于 2015-08-10T19:08:12.727 回答