【问题标题】:How to integrate vBulletin into a complex PHP site?如何将 vBulletin 集成到复杂的 PHP 站点中?
【发布时间】:2019-04-17 23:16:46
【问题描述】:

我正在管理一个 PHP 构建的站点,该站点使用多层 Smarty 模板系统,主模板包括子模板等。该站点本身具有自己的动态功能,包括标题中显示的用户配置文件、页脚站点地图和菜单下拉菜单,取决于用户访问级别等。

我现在需要在其中放置一个 vBulletin 论坛。

当然,我的一个选择是让 vBulletin “看起来像”该网站,并带有一个用于页眉和页脚的插件 - 但这几乎是不可能的,因为该网站的某些功能应该覆盖论坛访问完全(维护期、用户访问限制、偶尔的“启动页面”重定向),我们有 JavaScript 和标题位,然后是我提到的关于整个站点模板的部分。需要复制大量页面代码,而这是我非常希望避免的。

所以我采取了另一种方式,开始通过“包装”PHP 脚本包含论坛的文件,希望将其输出完全捕获到输出缓冲区中,并将其正确放入我的模板中。我什至模拟了 REQUEST_URIs 和其他 $_SERVER 字段,让论坛认为它是独立运行的。它猛烈地反击了我,打破了 ob_start()s 和 die()ing 而不是在某些点返回,以至于我回到了绘图板上。

我的另一个选择是以一种令人毛骨悚然的方式破解我自己的网站,提供一个论坛将使用的切断页眉和页脚 - 但随后会有一些位和脚本可以结合起来。此外,我将失去一次生成一页的能力,并且在页眉和页脚之间同步一次性生成的内容将成为一场噩梦。

我还有什么其他选择?是否所有使用 vBulletin 的网站都坚持使用简单的页眉和页脚,还是有一些明显的我遗漏的东西?

更新:如果 vB 支持“模板包装器”插件,将完全解决我的问题,该插件将论坛生成的所有 HTML 缓冲作为参数调用; “这是输出,继续做你想做的任何事情”。但是有支持吗?或者破解它是否可行?

【问题讨论】:

  • 不要混合使用这两个站点,将它们完全分开并在子域上独立部署 vbulletin。 (这也为您提供了选择使用他们的云托管的额外好处。)
  • 这是不可能的。论坛需要集成,而不是独立。
  • 定义集成。
  • 我从不喜欢这样做,但你考虑过使用 (i)frames 吗?
  • @AlexHowansky 集成,如:完全作为网站的一部分,而不是作为单独的功能来查找和运行。例如,登录用户的姓名和头像作为核心站点的一部分处理,并且需要保持不变。云托管将完全禁用它。

标签: php templates smarty integration vbulletin


【解决方案1】:

经过一番搜索,我发现vBulletin 5 恰好有一个hookFrontendBeforeOutput 钩子,它可以对vBulletin 的模板渲染产生的全部输出进行操作。因此,我可以创建一个插件,该插件将捕获 vB 的输出,在需要时对其进行更正,并将其输入我自己的模板系统以进行最终演示 - 以及触发站点的登录和其他逻辑机制。

This forum thread 有一个例子,展示了这个钩子,尽管是在一个更简单的例子中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-29
    • 2018-03-09
    • 2023-01-30
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多