Custom Buttons

Starting from Plesk 12.0, there is an easy way to add custom buttons related to an extension. Previously, extension developers had to use CLI or XML API calls in post-install and pre-uninstall scripts for creating custom buttons.

To add custom buttons, you need to develop a class derived from pm_Hook_CustomButtons. The class must be placed in the directory plib/hooks/. You can find the complete list of supported values for 'place' under 'Constants'.

The following example shows how to add several custom buttons:

class Modules_CustomButtons_CustomButtons extends pm_Hook_CustomButtons
    {
     
        public static function getButtons()
        {
            return [[
                'place' => self::PLACE_DOMAIN,
                'title' => 'Domain Button',
                'description' => 'Description for domain button',
                'icon' => pm_Context::getBaseUrl() . 'images/icon.png',
                'link' => pm_Context::getBaseUrl() . 'index.php/index/index',
            ], [
                'place' => [
                    self::PLACE_HOSTING_PANEL_NAVIGATION,
                    self::PLACE_ADMIN_TOOLS_AND_SETTINGS,
                    self::PLACE_RESELLER_TOOLS_AND_SETTINGS,
                ],
                'title' => 'Multi Place Button',
                'description' => 'Description for multi place button',
                'link' => 'http://plesk.com/',
                'newWindow' => true,
            ]];
        }
     
    }

You can set up custom buttons in the following places:

  • PLACE_COMMON
  • PLACE_ADMIN_HOME
  • PLACE_RESELLER_HOME
  • PLACE_CUSTOMER_HOME
  • PLACE_ADMIN_TOOLS_AND_SETTINGS
  • PLACE_RESELLER_TOOLS_AND_SETTINGS
  • PLACE_HOSTING_PANEL_NAVIGATION
  • PLACE_DOMAIN
  • PLACE_DOMAIN_PROPERTIES
  • PLACE_TOOLBAR
  • PLACE_LIST_ACTIONS

One button can be set up for multiple places at once. In some places, you can use such optional parameters as icon and description. You can specify both local and external hyperlinks.

You can find the sample code in our repository here.

 

Leave your comments on this page

Leave your feedback or question on this documentation topic below. For technical assistance, contact your hosting service provider or submit a request to Plesk support. Suggest new features for Plesk here. Discuss general questions on the Plesk forum. All offtopic comments will be removed.