Skip to end of metadata
Go to start of metadata

Compatibility: PrestaShop 1.7.1.0+


On the PrestaShop back office, the links on the side menu are linked to AdminControllers and ModuleAdminController classes. The first ones come from the PrestaShop Core, but the second ones are defined by the modules. If you want to add a link to your ModuleAdminControllers in the back office sidebar, this guide is for you.

Tabs registration

In order to register new links, open your main module class.

We will now use a property called $tabs, storing an array of link details. Each of them contains a class (= link) to add in the side menu.


How to define a tab in the menu

Depending on the options you provide, your links won’t be displayed the same way:

  • class_name: Mandatory, this is the file called when the merchant will click on your link.

  • name: Optional, this is the name displayed in the menu. If not provided, the class name is shown instead.

  • parent_class_name: Optional if you want to display it in a subcategory. Go farther in this document to see available values.

  • icon: Optional, will display an icon when the menu is reduced.


How to add names and their translations to a tab

Be default, your tab will be displayed in the menu with its class name. If you want to use something more explicit, you can set the name property.

Option 1: Use the same name for all languages

If you want to add the same name to all available and active languages available on the shop, just set the ‘name’ key with a single string:

 

public $tabs = array(
    array(
            'name' => 'Merchant Expertise', // One name for all langs
            'class_name' => 'AdminGamification',
            'visible' => true,
            'parent_class_name' => 'ShopParameters',
));

 

 

Option 2: Use a different name for each language

You can also add your translations per locale (ex.: fr-FR) or per language (ex.: fr), both are valid.

If a language is installed on the shop but is not found in your translated names, it will be automatically associated to the first value of the array.

Hence, we advise you to define the English value first.

 

public $tabs = array(
    array(
        'name' => array(
            'en' => 'Merchant Expertise', // Default value should be first
            'fr' => 'Expertise PrestaShop',
            ...
        ),
        'class_name' => 'AdminGamification',
        'parent_class_name' => 'ShopParameters',
));

 

Which parent to choose?

Here is the default structure of the side-menu from PrestaShop at the moment this page is written. You can choose an element from this list to use as a parent.

  • AdminDashboard    

  • SELL

    • AdminParentOrders

    •        AdminOrders

    •        AdminInvoices

    •        AdminSlip

    •        AdminDeliverySlip

    •        AdminCarts

    • AdminCatalog

  •        AdminProducts

    •        AdminCategories

    •        AdminTracking

    •        AdminParentAttributesGroups

    •        AdminParentManufacturers

    •        AdminAttachments

    •        AdminParentCartRules

    • AdminParentCustomer

    •        AdminCustomers

    •        AdminAddresses

    •        AdminOutstanding

    • AdminParentCustomerThreads

    •        AdminCustomerThreads

    •        AdminOrderMessage

    •        AdminReturn

    • AdminStats

    • AdminStock

    •        AdminWarehouses

    •        AdminParentStockManagement

    •        AdminSupplyOrders

    •        AdminStockConfiguration

  • IMPROVE

    • AdminParentModulesSf

    •        AdminModulesSf

    •        AdminModules

    •        AdminAddonsCatalog

    • AdminParentThemes

    •        AdminThemes

    •        AdminThemesCatalog

    •        AdminCmsContent

    •        AdminModulesPositions

    •        AdminImages

    •        AdminParentShipping

    •        AdminParentPayment

    • AdminInternational

    •        AdminParentLocalization

    •        AdminParentCountries

    •        AdminParentTaxes

    •        AdminTranslations

  • CONFIGURE

    • ShopParameters

    •        AdminParentPreferences

    •        AdminParentOrderPreferences

    •        AdminPPreferences

    •        AdminParentCustomerPreferences

    •        AdminParentStores

    •        AdminParentMeta

    •        AdminParentSearchConf

    • AdminAdvancedParameters

    •        AdminInformation

    •        AdminPerformance

    •        AdminAdminPreferences

    •        AdminEmails

    •        AdminImport

    •        AdminParentEmployees

    •        AdminParentRequestSql

    •        AdminLogs

    •        AdminWebservice

    •        AdminShopGroup

    •        AdminShopUrl


How to check the tabs registration

Once you're done, just install (or reset) your module.

The $tabs property will be read from PrestaShop and the tabs will be automatically displayed on the side menu. They will stay as long as your module is installed.