从钩子更改whmcs模板

时间:2016-01-13 11:41:02

标签: php templates smarty whmcs

我也在所有论坛中搜索,甚至我在whmcs论坛上发布我的问题,但没有回复。我需要的是我在模块中创建一个插件,我想在这个插件的钩子中更改模板(从六到五)。目的是为特定客户更改模板。 我已经测试过更改GET var但是没有工作:

$_GET['systpl'] = 'five';

我也对此进行了测试,但css文件无法加载。它将我重定向回家:

global $smarty;
$template = $smarty->getTemplateVars('template');
$template = 'six';
$smarty->assign('template', $template);
$template = $smarty->getTemplateVars('template');

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我已经在我的一个产品中完成了这项工作 - 要使其工作,您必须提取全局$ systpl变量:

global $systpl;
$systpl = $tpl;

$GLOBALS['_SESSION']['Template']    = $tpl;
$GLOBALS['CONFIG']['Template']      = $tpl;

其中$ tpl是您要设置的模板名称,在您的情况下为“五”。您还必须在那里设置GLOBALS变量,以便使用该模板维护用户会话,以便系统知道在从配置中提取时使用该模板名称。

希望有所帮助。

答案 1 :(得分:0)

在WHMCS中为指定页面加载另一个模板文件夹,我做了:

<?php

use WHMCS\Database\Capsule;
use WHMCS\View\Menu\Item as MenuItem;

define("CLIENTAREA", true);

// Set the template you want to use for the custom page BEFORE init.php is called
$GLOBALS['_REQUEST']['systpl'] = 'five';

require("init.php");

// WHATEVER YOU ARE DOING IN HERE

// Set the session back to the default template:
$GLOBALS['_SESSION']['Template'] = 'six'; 

$ca->output();