如何在vbulletin v4的插件中获取线程的页码?

时间:2018-12-07 16:48:19

标签: plugins vbulletin page-numbering

我需要在vbulletin的插件中获取线程的页面编号。我的插件代码是:

global $vbulletin, $threadinfo, $bloginfo, $pagetitle;
if (THIS_SCRIPT == 'showthread'){
   $customTitle = $pagetitle.'-'.$pagenumber;
}
$rows = <<<ROW
<meta property="og:title" content="$customTitle" />
ROW;
$template_hook['headinclude_bottom_css'] .= $rows;

如何获取设置$ pagenumber的线程值的pagenumber? 我知道模板如下:

{vb:rawphrase page_x, {vb:raw pagenumber}}

但是我需要在插件中使用它。

1 个答案:

答案 0 :(得分:0)

您也应该全局声明$pagenumber

global $pagenumber;
if (THIS_SCRIPT == 'showthread'){
    echo '<!-- pageNumber: ' . $pagenumber . ' -->';
}

放置在showthread_start挂钩中,这给了我以下输出:<!-- pageNumber: 9 -->

但是请注意,如果您在global_start之类的全局可用钩子中加载插件代码,则这些线程变量可能不可用,因为它们稍后在vBulletin的代码中进行了初始化。在这种情况下,请尝试选择其他较早运行的钩子。在这里,尝试和错误帮助。

我建议尝试在showthread_start中使用一些POC代码以确保其有效。然后更改挂钩,以找出对于您的计划操作而言足够早的时间,并且其中包含所有必需的变量。有时,在钩子周围查看vB代码也很有用。

您可以使用例如在vBulletin安装的根目录中使用grep查找global_start的执行位置:

# grep -rn --include \*.php "fetch_hook('global_start')" .
./global.php:29:($hook = vBulletinHook::fetch_hook('global_start')) ? eval($hook) : false;

还可以在Windows系统上使用Notepad ++之类的工具进行搜索(在文件中搜索)。