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

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

To start building Plesk extensions, you need a server with Plesk installed. Learn how to install 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: Обновите файл метаданных

Before submitting your extension for certification, you need to update the meta file with the correct name, description, vendor name and website address, the supported Plesk version, and so on:

    <?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` смотрите здесь.

## Step 8: Prepare Your Extension For Certification

If you want your extension to be featured on the Plesk Marketplace and make it available to all Plesk users, it must be certified by the Plesk team first. Before submitting your extension, follow these steps:

- Add an end-user license agreement (EULA) to your extension. The EULA must be shown to users before they can start using the extension, and a copy of the EULA must be stored on every Plesk server the extension is installed on.

- Prepare a Privacy Policy statement for your extension.

- Make sure that your extension meets the core requirements for marketplace inclusion (under «Core Requirements for Marketplace Inclusion»)

## Step 9: Submit For Certification

You can now submit your extension for certification (under «Application Form»). If your extension passes the review and is certified, we will work with you to onboard your extension and schedule its official launch on the Plesk Marketplace.