Starting from Plesk 12, in addition to the ability to include
global.js
into pages (described in Adjust Pages by JavaScript and
CSS), there is also the option to generate on the server
side an additional HTML or JavaScript code for embedding into a page. To
do this, you need to implement a class derived from
pm_Hook_ContentInclude.
The class must be located in the directory plib/hooks/
.
The login page in Plesk does not include additional scripts that are
used on other Plesk pages. To form additional content on the login page,
you need to use the class
pm_Hook_LoginContentInclude.
There are several ways to embed JavaScript. One of the easiest ways is
to pass data from the server to the client (browser) by using the method
Use the following code:
class Modules_EmbedJs_ContentInclude extends pm_Hook_ContentInclude
{
public function getJsConfig()
{
return [
'dynamicVar' => date(DATE_ATOM),
];
}
...
}
The method must return an array which will be converted to JSON and
embedded into a resulting HTML page, inside the HEAD tag.
<!-- extension include: embed-js -->
<script>
//<![CDATA[
Jsw.namespace('PleskExt.EmbedJs');
//]]>
</script>
<script>
//<![CDATA[
PleskExt.EmbedJs.Config = {"dynamicVar":"2014-02-25T16:56:46+07:00"};
//]]>
</script>
For access to the data formed on the server side, an extension called
embed-js
can use an object PleskExt.EmbedJs.Config
. In addition
to that, the namespace PleskExt.EmbedJs
will be created.
There are also methods getJsContent
and getJsOnReadyContent
,
which allow forming blocks of JavaScript code on the server side and
adding it to the resulting HTML. The method getJsOnReadyContent
executes JavaScript code after a DOM tree is fully loaded.
It is also possible to embed additional HTML content at the end of the
HEAD and BODY tags. To do this, the methods getHeadContent
and
getBodyContent
can be used. The following is an example of how to
use these methods:
class Modules_EmbedJs_ContentInclude extends pm_Hook_ContentInclude
{
public function getHeadContent()
{
return '<!-- additional content for head tag -->';
}
public function getBodyContent()
{
return '<!-- additional content for body tag -->';
}
}
You can find the sample code in our repository
here.