如何在WHMCS Admin Addon Module Template {headoutput}中添加行?

时间:2014-10-15 15:51:38

标签: module smarty add-on head whmcs

首先,我是新来的,我的英语不够好所以我很抱歉。这是我的问题;

我正在尝试为WHMCS 5编写一个插件模块,我想在我的插件页面中使用bootstrap模态窗口。我正在尝试将css和js行添加到我的插件的主页面中。我希望通过编码将它们放在 head 标签内,我不想更改模板文件,我知道可以这样做,因为" WHMCS的项目规划师和" WHMCS的项目规划师& #34;模块正在成功完成此操作。我可以在页面的源代码中看到它。

当我查看管理模板" header.tpl"文件,有两个聪明的代码。 {headoutput}和{headeroutput}。它们的位置如下;

<head>
  {headoutput}
</head>
<body>
  {headeroutput}

我已经就如何通过我的模块.php文件将代码发送到{headoutput}进行了大量研究。如果有人知道怎么做,请非常需要帮助。

非常感谢您的帮助。 最好的祝福, 蚕儿

1 个答案:

答案 0 :(得分:1)

我找到了在WHMCS文档和其他一些地方阅读更多文档的解决方案。

首先,据我所知,在WHMCS 4之后,开发人员改变了一些规则,并且模板中的WHMCS的{headoutput}和{headeroutput} smarties不再能够被代码直接编辑。 WHMCS使用 Hooks 在特殊html块之间添加用户代码。这是我的问题的解决方案。

文件。参考。 1:http://docs.whmcs.com/Hooks
文档。参考。 2:http://docs.whmcs.com/Hooks:System

在我们完成创建插件模块的基本操作之后,我们在名为“hooks.php”的模块文件夹中创建了一个新文件。 WHMCS直接将此文件包含在我们的模块中,而不包含任何内容。在“hooks.php”中,我们需要创建一个钩子函数,如 Doc中所述。参考。 1 。您的函数不需要具有特殊名称,但WHMCS开发人员建议您使用层次结构,例如以“hook_”开头,后跟文件名,然后是钩子正在执行的特定操作或任务。例如;

function hook_youraddonmodule_adminHeadBlock($vars) {
    //Here is my custom code below
    $headoutput = '<link href="../includes/jscript/css/bootstrap.min.css" rel="stylesheet">';
    return $headoutput;
}

命名函数后,必须根据需要在花括号之间键入代码。我把bootstrap css文件链接我希望包含在我所有模块页面的头块中。我们声明了一个钩子函数,然后我们需要准备它以供WHMCS的预定义钩子位置使用,如 Doc中所述。参考。 2 。要把代码放在head block之间,我们必须使用“AdminAreaHeadOutput”hook decleration。这是我使用的代码;

// Define Client Login Hook Call
add_hook("AdminAreaHeadOutput",1,"hook_youraddonmodule_adminHeadBlock");

这个定义意味着我们在管理区域头部输出中添加了一个钩子,它的优先级是第一个(1)。实际上我不知道为什么我们需要关于钩子的优先权,我没有对它进行研究,但如果它已经完成,它必须有它的优势:)现在你需要保存钩子文件并将其上传到你的服务器。全部完成。我希望它能帮助那些正在寻找这种技巧的人。

<强>更新

我已经认识到,当您创建一个钩子并在您的管理区域中使用您的模块激活它时,它适用于所有管理页面,因此它可以打破一些whmcs的标准javascripts和样式。如果您希望钩子只适用于您自己的模块,您应该添加如下代码,以防止您自己的代码应用于所有管理区域页面。

$moduleName = $_GET['module'];
if($moduleName == "yourmodulename"){
    return $headoutput;
}

的问候,
蚕儿。