# Добавление содержимого на страницы

Начиная с Plesk 12, в дополнение к возможности включать в страницы `global.js` (описанной в разделе Настройка страниц с помощью JavaScript и CSS), появилась возможность генерировать на стороне сервера дополнительный код HTML или JavaScript для включения в страницу. Для этого вам надо создать класс, наследуемый от pm_Hook_ContentInclude. Этот класс должен быть помещен в папку `plib/hooks/`.

Страница входа в Plesk не включает дополнительных скриптов, которые используются на других страницах Plesk. Для формирования дополнительного содержимого на странице входа вам надо использовать класс pm_Hook_LoginContentInclude.

Есть несколько способов введения JavaScript. Один из простейших способов – передать данные от сервера клиенту (браузеру), используя метод

- getJsConfig()

Используйте следующий код:

    class Modules_EmbedJs_ContentInclude extends pm_Hook_ContentInclude
    {
     public function getJsConfig()
    {
        return [
            'dynamicVar' => date(DATE_ATOM),
        ];
    }
     ...
    }

Этот метод должен возвращать массив, который будет сконвертирован в JSON и вставлен в результирующую страницу HTML внутри тега HEAD.

    <!-- 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>

Для доступа к данным, сформированным на стороне сервера, расширение `embed-js` может использовать объект `PleskExt.EmbedJs.Config`. В дополнение к этому, будет создано пространство имен `PleskExt.EmbedJs`.

Есть также методы `getJsContent` и `getJsOnReadyContent`, которые позволяют составлять блоки кода JavaScript на стороне сервера и добавлять их к результирующему коду HTML. Метод `getJsOnReadyContent` выполняет код JavaScript после полной загрузки дерева DOM.

Кроме того, можно загрузить дополнительное содержимое HTML в конце тегов HEAD и BODY. Для этого можно использовать методы `getHeadContent` и `getBodyContent`. Вот пример использования этих методов:

    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 -->';
        }
    }

Вы можете найти пример кода в нашем репозитории здесь.