【发布时间】: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