# Создание первого расширения

## Предварительные требования

Чтобы начать разработку расширений Plesk, вам нужен сервер с установленным Plesk. Если у вас его нет, установите Plesk, выполнив шаги, описанные здесь.

## Шаг 1: Создайте и установите расширение

Расширение Plesk представляет собой архив ZIP, который содержит организованную специальным образом структуру папок и файл с метаданными, описывающими программное обеспечение.

Примечание

Если вы хотите изучить структуру на примере тестового расширения, посмотрите наш пример расширения «Hello world» здесь.

Быстрый способ создания расширения – вызов утилиты командной строки `extension` (чтобы узнать о ней больше, читайте здесь):

    plesk bin extension --create hello-world

В результате этого вызова будет создана необходимая файловая структура на сервере Plesk. Все пути к папкам отображаются после завершения работы утилиты:

    The extension was successfully created.
    The path to extension's entry points: /usr/local/psa/admin/htdocs/modules/hello-world/
    The path to PHP classes: /usr/local/psa/admin/plib/modules/hello-world/
    The path to installation scripts: /usr/local/psa/admin/plib/modules/hello-world/scripts/
    The path to the directory with run-time data: /usr/local/psa/var/modules/hello-world/

Здесь вы можете посмотреть пути к папкам, где развернуты файлы расширения. Читайте подробнее о способе организации файлов расширения здесь.

После развертывания шаблонной структуры вам надо зарегистрировать расширение на сервере Plesk с использованием следующей команды:

    plesk bin extension --register hello-world

В результате новое расширение будет отображаться в списке расширений на странице Расширения в интерфейсе Plesk:

Инфраструктура

Расширения написаны на PHP, и при их организации широко используются практики Zend framework, например, использование схемы MVC (Модель-Представление-Контроллер) и конструирование форм. Хотя использование этих практик, строго говоря, необязательно, оно настоятельно рекомендуется. Поскольку хотя бы минимальное знание PHP обязательно для написания расширений, мы предполагаем, что читатели данного документа в той или иной степени знакомы с этим языком программирования. Если вы прежде не писали приложений на PHP, вы все равно можете использовать этот документ, но для разработки расширения вам может понадобиться изучить некоторые темы, связанные с PHP (выходящие за пределы содержания этого документа).

## Шаг 2: Создайте контроллер

Шаблон расширения, поставляемый в комплекте с Plesk, содержит один контроллер `/usr/local/psa/admin/plib/modules/hello-world/controllers/IndexController.php`, содержащий шаблонное действие.

Давайте передадим некоторые данные этого контроллера представлению. В нашем случае мы получаем доступ к учетной записи текущего пользователя pm_Session:

    class IndexController extends pm_Controller_Action
    {
        public function indexAction()
        {
            $this->view->name = pm_Session::getClient()->getProperty('pname');
        }
    }

## Шаг 3: Создайте представление

Кроме того, поставляемый шаблон расширения содержит представление для этого контроллера: `/usr/local/psa/admin/plib/modules/hello-world/views/scripts/index/index.phtml`

Предполагается, что в этом представлении будет отображено следующее сообщение:

    Hello, <?php echo $this->name; ?>!

Вы можете зайти на стартовую страницу расширения и удостовериться, что это сообщение отображается.

## Шаг 4: Сожмите расширение

Перед тем как распространять расширение, его надо сжать. Вы можете сделать это с помощью утилиты командной строки `extension`:

    plesk bin extension --pack hello-world

В случае успешного завершения команды вывод будет выглядеть следующим образом:

    The extension was successfully exported to /root/hello-world-1.0-1.zip

Теперь вы можете скачать полученный архив.

## Шаг 5: Удалите неиспользуемые файлы и папки

В рамках шаблона расширения было создано несколько функций, которые позволяют начать разработку быстрее, но не все из них используются. Рекомендуется просмотреть их и удалить те, которые не используются. В рассматриваемом примере расширения не используется ни один из скриптов установки, так что вы можете спокойно удалить папку `plib/scripts`.

## Шаг 6: Добавьте значки и снимки экрана

Чтобы расширение можно было опубликовать в каталоге расширений, оно должно содержать значки и снимки экрана (читайте подробнее о требованиях к сертификации расширений здесь). Для этого вам необходимо создать следующие папки и файлы:

- _meta
  - icons
    - 32x32.png – значок размером 32x32 пикселей
    - 64x64.png – значок размером 64x64 пикселей
  - снимки экрана (до 3 снимков с расширением 1024x768)
    - 1.png
    - 2.png

## Шаг 7: Обновите файл метаданных

Перед публикацией расширения вам надо добавить в файл метаданных корректное название, описание, имя и адрес сайта поставщика, поддерживаемую версию Plesk и так далее:

    <?xml version="1.0" encoding="UTF-8"?>
    <module>
       <id>hello-world</id>
       <name>Hello World extension</name>
       <description>Sample extension to display "Hello, World!"</description>
       <version>1.0</version>
       <release>1</release>
       <vendor>Plesk</vendor>
       <url>https://www.plesk.com</url>
       <plesk_min_version>11.0</plesk_min_version>
    </module>

Более подробную информацию о `meta.xml` смотрите здесь.

## Шаг 8: Пройдите сертификацию

Теперь вы можете отправить свое расширение на сертификацию для публикации в каталоге расширений. Более подробную информацию о процессе публикации смотрите здесь: https://www.plesk.com/partners/develop/help/.