Existing modules should mostly work as-is with version 1.7. In this article, we dive into that “mostly”!

As you certainly know, all well-written 1.6 modules should work with little to no changes in version 1.7, except:

  • Those which target the theme/front office – because we rewrote the way themes are written.
  • Those which target the Product page – because the DOM of this page has changed.
  • Those which target the Modules page – again, because the DOM of this page has changed.

What this means for any upgrade is that in order for a PS 1.6 to migrate to PS 1.7, you (or your agency) will have to:

  • Rewrite the theme, ideally using the Starter Theme or the default theme.
  • Adapt the Product page modules (CSS and JavaScript).
  • Adapt the Modules page modules (CSS and JavaScript).
  • Test all the other modules – as you would for any new release.

In any case, we advise you to make sure that your module does work in PrestaShop 1.7.

(the information above comes straight from the PrestaShop 1.7 Project FAQ. Read it if you haven’t yet!)

Now, let’s dive into the details.

General information

  • We changed all variables passed to Smarty: make sure what you use is still assigned!
  • Objects are no longer passed to Smarty. We only use arrays now.
  • Smarty’s strings are now automatically escaped:
  • You should remove all your |escape:'html':'UTF-8' (FOR FRONT OFFICE TEMPLATES ONLY).
  • You should add the nofilter tag if you print HTML.
  • $link is deprecated. Use the {url} helper instead.
    • Even if $link is still passed to Smarty, it will be removed at some point in a future version.
  • Make sure you use the new way of calling templates: fetch(module:modulename/views/template.tpl).
  • Make sure you do not add your assets with a hardcoded path in the displayHeader hook.
    • Nothing new from v1.6 here, but it’s a bad practice.
  • Only rely on documented variables!

Overrides and namespaces

PrestaShop 1.7 introduces the use of namespaces with its new architecture, and in short, anything that has namespaces cannot be overridden.
The legacy architecture can still be overridden, though. But in general, we advise against overriding code. It is better to extend it.
Also, overrides are currently forbidden in the Symfony-based pages (namely, the Product page and the Modules page).

Overrides are a nice system to have, but the issue with it is that it is an uncontrolled extension system. We are working on a carefully planned process that will allow developers to extend the PrestaShop code in a much cleaner way. The gist of it would be that the developer team would integrate your needs for overrides in the next version of PrestaShop – kind of what polyfills do for HTML5 features :) In short, you tell us what you need, and while we include it in the next version, you can use an override.

Again: the override system is not going away, you will still be able to easily extend PrestaShop. We’re just changing the way we want this to happen: instead of each developer having a separate set of overrides, we want developers who need an override to let us know about it, so that the next version of PrestaShop includes it directly.

Introducing the PrestaShop UI Kit

The Product page and the Modules page are the only two pages that have been rewritten using Symfony, and they still work fine with pre-1.7 modules – albeit with a necessary design adaptation, as happened in all major version of PrestaShop before, only this time we provide a UI Kit to help developers easily have a consistent style for their module screens.

The whole PrestaShop 1.7 back office has its design based on the UI Kit. This UI Kit was built so that designers and developers can create interfaces which are consistent in style with the administration interface.

Check its reference documentation here: http://build.prestashop.com/prestashop-ui-kit/
Check its code here: https://github.com/PrestaShop/prestashop-ui-kit

Note that it is still a work in progress, and should not be considered stable until 1.7 is released.

Payment API change

Payment modules should be particularly looked after, as we wrote in the third article about the Starter Theme.

To provide the best user experience possible for customers, and to guarantee that PrestaShop orders respect the law in all countries, we slightly changed the payment API.
For example, the Terms & Conditions checkbox is now displayed with the payment options, and there is only one button to click in order to pay.
That way, theme designers have more control of the layout of payment options.

Hook changes

The updated payment API changes the parameters passed to these two hooks:

  • hookPaymentReturn
  • hookDisplayOrderConfirmation

Before

Key Value
total_to_pay The result of $order->getOrdersTotalPaid().
currency The currency sign (string).
currencyObj The loaded currency (Currency class).
objOrder The current order object (Order class).

After

Key Value
order The current order object (Order class).

Sample code

Everything can be retrieved from order. For instance.

$currency = new Currency($params['order']->id_currency);
$total_to_pay = $params['order']->getOrdersTotalPaid();

We advise you to dive into the Payment Example sample module, or to explore the native Bankwire module – most notably the commit that updated this module for 1.7.

Changes for modules targeting the Product page

The Product page has been entirely rewritten for PrestaShop 1.7 in order to make the product creation easier, faster, and more logical. 6 default tabs instead of the previous 12, with the main tab containing much more information; a greatly improved Combination generator/manager; new shortcuts; an in-page catalog browser; and other niceties…

If you created modules which target the Product Page, you may be impacted by these changes. To make them work as expected in the new Product page, you will need to adapt your code.

Here are the main information that you will need to update your modules.

Handling tabs

In PrestaShop 1.6, it is allowed to have a dedicated tab per module on the Product page. In version 1.7, we changed this and added a dedicated tab for all the Product page’s modules, via a new hook called hookDisplayAdminProductsExtra.

If you coded your modules by following the best practices of both PHP and PrestaShop 1.5-1.6, it should not take you too much time to update your code.

Back office hook Parameters

Parameters cannot be obtained from a query string anymore. From now on, an array of parameters is directly passed onto the hookDisplayAdminProductsExtra method.

See this sample hook:

public function hookDisplayAdminProductsExtra($params)

With $params taking these values:

$params [
  "_ps_version",
  "id_product",
  "cookie",
  "cart",
  "altern"
]

Assets

The URLs of back office assets (CSS, JavaScript, images, etc.) must be absolute, meaning that they must start with http:// or https://.

You can use the Tools::getCurrentUrlProtocolPrefix() method to make sure you always use the correct protocol.

Form fields

The form field names must be created in an array hook of this format: [MODULE_NAME][INPUT_NAME].

DOM

The format of the ID for the module’s container has been modified. Here is its new format: module_MODULE_NAME.

Changes for modules targeting the default theme.

All the 1.6 modules targeting the theme will likely be impacted (to various degrees) by the changes and need to be adapted for 1.7. From the moment your module targets the theme, it will have to be updated.

The Theme documentation

The Designer Guide is currently being entirely rewritten to focus on the 1.7 Theme system. We expect it to be available online in the coming weeks.

In the meantime, we invite you to dive into the source code:

Widgets

PrestaShop 1.7 introduces widgets, which you can use to place your module’s content directly in your theme.

Widgets introduce 2 major features for theme developer:

  • You can use a module directly within a theme.
  • Widgets can be hooked to any display hook.

More information about this will be available in the soon-to-be-available PrestaShop 1.7 Designer Guide.

Hook changes

The front office hooks have seen a bit of evolution. Some have been moved, some have been removed, and some have been created. Here are the lists!

1.6 hooks that are not available in 1.7

These hooks were only available in 1.6. They are removed from 1.7.

Hook name File(s)
DisplayOverrideTemplate
  • /classes/controller/FrontController.php
PDFInvoice
  • /classes/Hook.php
actionAfterDeleteProductInCart
  • /controllers/front/CartController.php
actionBeforeAuthentication
  • /controllers/front/AuthController.php
actionBeforeSubmitAccount
  • /controllers/front/AuthController.php
actionCartListOverride
  • /controllers/front/CartController.php
actionEmailAddAfterContent
  • /classes/Mail.php
actionEmailAddBeforeContent
  • /classes/Mail.php
actionOrderDetail
  • /controllers/front/GuestTrackingController.php
  • /controllers/front/OrderDetailController.php
actionProductListModifier
  • /controllers/front/CategoryController.php
actionProductListOverride
  • /controllers/front/CategoryController.php
actionSearch
  • /controllers/front/SearchController.php
addProduct
  • /classes/Hook.php
advancedPaymentOptions
  • /controllers/front/OrderOpcController.php
  • /controllers/front/ParentOrderController.php
backBeforePayment
  • /classes/Hook.php
deleteProduct
  • /classes/Hook.php
displayAfterShoppingCartBlock
  • /themes/default-bootstrap/shopping-cart-advanced.tpl
displayBanner
  • /themes/default-bootstrap/header.tpl
displayBeforePayment
  • /controllers/front/OrderController.php
displayBeforeShoppingCartBlock
  • /themes/default-bootstrap/shopping-cart-advanced.tpl
  • /themes/default-bootstrap/shopping-cart.tpl
displayCartTotalPriceLabel
  • /themes/default-bootstrap/shopping-cart-advanced.tpl
  • /themes/default-bootstrap/shopping-cart.tpl
displayCompareExtraInformation
  • /controllers/front/CompareController.php
displayCustomerIdentityForm
  • /controllers/front/IdentityController.php
displayHomeTab
  • /controllers/front/IndexController.php
displayHomeTabContent
  • /controllers/front/IndexController.php
displayMobileHeader
  • /classes/controller/FrontController.php
displayNav
  • /themes/default-bootstrap/header.tpl
displayPayment
  • /classes/module/Module.php
  • /controllers/front/OrderOpcController.php
  • /controllers/front/ParentOrderController.php
displayProductComparison
  • /controllers/front/CompareController.php
displayProductContent
  • /controllers/front/ProductController.php
displayProductDeliveryTime
  • /themes/default-bootstrap/product-list.tpl
  • /themes/default-bootstrap/product.tpl
  • /themes/default-bootstrap/products-comparison.tpl
  • /themes/default-bootstrap/shopping-cart-product-line.tpl
displayProductListFunctionalButtons
  • /themes/default-bootstrap/product-list.tpl
displayProductListReviews
  • /themes/default-bootstrap/product-list.tpl
displayProductTab
  • /controllers/front/ProductController.php
displayProductTabContent
  • /controllers/front/ProductController.php
displayTopColumn
  • /themes/default-bootstrap/header.tpl
newOrder
  • /classes/Hook.php
orderConfirmation
  • /classes/Hook.php
overrideTOSDisplay
  • /controllers/front/OrderController.php
  • /controllers/front/ParentOrderController.php
paymentConfirm
  • /classes/Hook.php
paymentReturn
  • /classes/Hook.php
postUpdateOrderStatus
  • /classes/Hook.php
productFooter
  • /classes/Hook.php
productOutOfStock
  • /classes/Hook.php
updateCarrier
  • /classes/Hook.php
updateOrderStatus
  • /classes/Hook.php
updateProductAttribute
  • /classes/Hook.php
updateQuantity
  • /classes/Hook.php

Hooks that were added in 1.7.0.x

These hooks are only available in the 1.7.0.x branch

Hook name File(s)
actionAjaxDie
  • /classes/controller/Controller.php
actionAjaxDieBefore
  • /classes/controller/Controller.php
actionAttributeCombinationDelete
  • /classes/Combination.php
actionAttributeCombinationSave
  • /classes/Combination.php
actionAuthenticationBefore
  • /classes/form/CustomerLoginForm.php
actionCartUpdateQuantityBefore
  • /classes/Cart.php
actionCustomerAccountUpdate
  • /classes/form/CustomerPersister.php
actionCustomerAddGroups
  • /classes/Customer.php
actionCustomerBeforeUpdateGroup
  • /classes/Customer.php
actionDeleteProductInCartAfter
  • /controllers/front/CartController.php
actionGetProductPropertiesAfter
  • /classes/Product.php
actionGetProductPropertiesBefore
  • /classes/Product.php
actionOnImageCutAfter
  • /classes/ImageManager.php
actionOnImageResizeAfter
  • /classes/ImageManager.php
actionProductSearchComplete
  • /classes/controller/ProductListingFrontController.php
actionValidateCustomerAddressForm
  • /classes/form/CustomerAddressForm.php
addWebserviceResources
  • /classes/webservice/WebserviceRequest.php
additionalCustomerFormFields
  • /classes/form/CustomerFormatter.php
displayAfterBodyOpeningTag
  • /themes/classic/templates/checkout/checkout.tpl
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayAfterCarrier
  • /classes/checkout/CheckoutDeliveryStep.php
displayBeforeBodyClosingTag
  • /themes/classic/templates/checkout/checkout.tpl
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayCMSDisputeInformation
  • /themes/classic/templates/cms/page.tpl
displayCMSPrintButton
  • /themes/classic/templates/cms/page.tpl
displayCarrierExtraContent
  • /classes/checkout/DeliveryOptionsFinder.php
displayCheckoutSubtotalDetails
  • /themes/classic/templates/checkout/_partials/cart-detailed-totals.tpl
displayCheckoutSummaryTop
  • /themes/classic/templates/checkout/_partials/cart-summary.tpl
displayCrossSellingShoppingCart
  • /themes/classic/templates/checkout/cart-empty.tpl
displayCustomerLoginFormAfter
  • /themes/classic/templates/customer/authentication.tpl
displayCustomization
  • /classes/Product.php
displayExpressCheckout
  • /themes/classic/templates/checkout/_partials/cart-detailed-actions.tpl
displayFooterAfter
  • /themes/classic/templates/_partials/footer.tpl
displayFooterBefore
  • /themes/classic/templates/_partials/footer.tpl
displayNav1
  • /themes/classic/templates/_partials/header.tpl
  • /themes/classic/templates/checkout/_partials/header.tpl
displayNav2
  • /themes/classic/templates/_partials/header.tpl
  • /themes/classic/templates/checkout/_partials/header.tpl
displayNavFullWidth
  • /themes/classic/templates/_partials/header.tpl
displayNotFound
  • /themes/classic/templates/errors/not-found.tpl
displayOrderConfirmation1
  • /themes/classic/templates/checkout/order-confirmation.tpl
displayOrderConfirmation2
  • /themes/classic/templates/checkout/order-confirmation.tpl
displayPaymentByBinaries
  • /themes/classic/templates/checkout/_partials/steps/payment.tpl
displayReassurance
  • /themes/classic/templates/catalog/product.tpl
  • /themes/classic/templates/checkout/cart.tpl
  • /themes/classic/templates/checkout/checkout.tpl
displaySearch
  • /themes/classic/templates/errors/not-found.tpl
overrideMinimalPurchasePrice
  • /classes/controller/ModuleFrontController.php
  • /src/Adapter/Cart/CartPresenter.php
termsAndConditions
  • /classes/checkout/ConditionsToApproveFinder.php
validateCustomerFormFields
  • /classes/form/CustomerForm.php

Common hooks

These hooks are common to PrestaShop 1.6 and 1.7. Some have seen their location change in 1.7.

Hook name File(s) in 1.6 File(s) in 1.7.0
action
  • /classes/controller/AdminController.php
  • /controllers/admin/AdminPerformanceController.php
  • /classes/controller/AdminController.php
  • /controllers/admin/AdminPerformanceController.php
actionAdmin
  • /classes/controller/AdminController.php
  • /classes/controller/AdminController.php
actionAdminControllerSetMedia
  • /classes/controller/AdminController.php
  • /classes/controller/AdminController.php
actionAdminLoginControllerSetMedia
  • /controllers/admin/AdminLoginController.php
  • /controllers/admin/AdminLoginController.php
actionAdminMetaAfterWriteRobotsFile
  • /controllers/admin/AdminMetaController.php
  • /controllers/admin/AdminMetaController.php
actionAdminMetaBeforeWriteRobotsFile
  • /controllers/admin/AdminMetaController.php
  • /controllers/admin/AdminMetaController.php
actionAdminMetaSave
  • /controllers/admin/AdminMetaController.php
  • /controllers/admin/AdminMetaController.php
actionAdminOrdersTrackingNumberUpdate
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
actionAdminThemesControllerUpdate_optionsAfter
  • /controllers/admin/AdminThemesController.php
  • /controllers/admin/AdminThemesController.php
actionAttributeDelete
  • /classes/Attribute.php
  • /classes/Attribute.php
actionAttributeGroupDelete
  • /classes/AttributeGroup.php
  • /classes/AttributeGroup.php
actionAttributeGroupSave
  • /classes/AttributeGroup.php
  • /classes/AttributeGroup.php
actionAttributeSave
  • /classes/Attribute.php
  • /classes/Attribute.php
actionAuthentication
  • /controllers/front/AuthController.php
  • /classes/form/CustomerLoginForm.php
actionBeforeAjaxDie
  • /classes/controller/Controller.php
  • /classes/controller/Controller.php
actionBeforeCartUpdateQty
  • /classes/Cart.php
  • /classes/Cart.php
actionCarrierProcess
  • /controllers/front/ParentOrderController.php
  • /classes/checkout/CheckoutDeliveryStep.php
actionCarrierUpdate
  • /controllers/admin/AdminCarrierWizardController.php
  • /controllers/admin/AdminCarriersController.php
  • /controllers/admin/AdminCarrierWizardController.php
  • /controllers/admin/AdminCarriersController.php
actionCartSave
  • /classes/Cart.php
  • /classes/Cart.php
actionCartSummary
  • /classes/Cart.php
  • /classes/Cart.php
actionCategoryAdd
  • /classes/Category.php
  • /classes/Category.php
actionCategoryDelete
  • /classes/Category.php
  • /classes/Category.php
actionCategoryUpdate
  • /classes/Category.php
  • /controllers/admin/AdminProductsController.php
  • /classes/Category.php
  • /controllers/admin/AdminProductsController.php
actionCustomerAccountAdd
  • /controllers/front/AuthController.php
  • /classes/form/CustomerPersister.php
actionCustomerLogoutAfter
  • /classes/Customer.php
  • /classes/Customer.php
actionCustomerLogoutBefore
  • /classes/Customer.php
  • /classes/Customer.php
actionDeliveryPriceByPrice
  • /classes/Carrier.php
  • /classes/Carrier.php
actionDeliveryPriceByWeight
  • /classes/Carrier.php
  • /classes/Carrier.php
actionDispatcher
  • /classes/Dispatcher.php
  • /classes/Dispatcher.php
actionDownloadAttachment
  • /controllers/front/AttachmentController.php
  • /controllers/front/AttachmentController.php
actionFeatureDelete
  • /classes/Feature.php
  • /classes/Feature.php
actionFeatureSave
  • /classes/Feature.php
  • /classes/Feature.php
actionFeatureValueDelete
  • /classes/FeatureValue.php
  • /classes/FeatureValue.php
actionFeatureValueSave
  • /classes/FeatureValue.php
  • /classes/FeatureValue.php
actionFrontControllerSetMedia
  • /classes/controller/FrontController.php
  • /classes/controller/FrontController.php
actionGetExtraMailTemplateVars
  • /classes/Mail.php
  • /classes/Mail.php
actionGetIDZoneByAddressID
  • /classes/Address.php
  • /classes/Address.php
actionHtaccessCreate
  • /classes/Tools.php
  • /classes/Tools.php
actionInvoiceNumberFormatted
  • /classes/order/OrderInvoice.php
  • /classes/order/OrderInvoice.php
actionModuleInstallAfter
  • /classes/module/Module.php
  • /classes/module/Module.php
actionModuleInstallBefore
  • /classes/module/Module.php
  • /classes/module/Module.php
actionModuleRegisterHookAfter
  • /classes/module/Module.php
  • /classes/Hook.php
actionModuleRegisterHookBefore
  • /classes/module/Module.php
  • /classes/Hook.php
actionModuleUnRegisterHookAfter
  • /classes/module/Module.php
  • /classes/Hook.php
actionModuleUnRegisterHookBefore
  • /classes/module/Module.php
  • /classes/Hook.php
actionObject
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectAddAfter
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectAddBefore
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectAttributeAddBefore
  • /controllers/admin/AdminAttributesGroupsController.php
  • /controllers/admin/AdminAttributesGroupsController.php
actionObjectAttributeGroupAddBefore
  • /controllers/admin/AdminAttributesGroupsController.php
  • /controllers/admin/AdminAttributesGroupsController.php
actionObjectDeleteAfter
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectDeleteBefore
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectUpdateAfter
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionObjectUpdateBefore
  • /classes/ObjectModel.php
  • /classes/ObjectModel.php
actionOrderEdited
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
actionOrderHistoryAddAfter
  • /classes/order/OrderHistory.php
  • /classes/order/OrderHistory.php
actionOrderReturn
  • /controllers/front/OrderFollowController.php
  • /controllers/front/OrderFollowController.php
actionOrderSlipAdd
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
actionOrderStatusPostUpdate
  • /classes/order/OrderHistory.php
  • /classes/order/OrderHistory.php
actionOrderStatusUpdate
  • /classes/order/OrderHistory.php
  • /classes/order/OrderHistory.php
actionPDFInvoiceRender
  • /classes/PaymentModule.php
  • /classes/order/OrderHistory.php
  • /controllers/admin/AdminPdfController.php
  • /controllers/front/PdfInvoiceController.php
  • /classes/PaymentModule.php
  • /classes/order/OrderHistory.php
  • /controllers/admin/AdminPdfController.php
  • /controllers/front/PdfInvoiceController.php
actionPasswordRenew
  • /controllers/front/PasswordController.php
  • /controllers/front/PasswordController.php
actionPaymentCCAdd
  • /classes/order/OrderPayment.php
  • /classes/order/OrderPayment.php
actionPaymentConfirmation
  • /classes/order/OrderHistory.php
  • /classes/order/OrderHistory.php
actionProductAdd
  • /controllers/admin/AdminProductsController.php
  • /controllers/admin/AdminProductsController.php
actionProductAttributeDelete
  • /classes/Product.php
  • /classes/Product.php
actionProductAttributeUpdate
  • /classes/Product.php
  • /classes/Product.php
actionProductCancel
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
actionProductCoverage
  • /classes/stock/StockManager.php
  • /classes/stock/StockManager.php
actionProductDelete
  • /classes/Product.php
  • /classes/Product.php
actionProductOutOfStock
  • /controllers/front/ProductController.php
  • /themes/classic/templates/catalog/_partials/product-details.tpl
actionProductSave
  • /classes/Product.php
  • /classes/Product.php
actionProductUpdate
  • /classes/Product.php
  • /controllers/admin/AdminProductsController.php
  • /classes/Product.php
  • /controllers/admin/AdminProductsController.php
actionSetInvoice
  • /classes/order/Order.php
  • /classes/order/Order.php
actionShopDataDuplication
  • /classes/shop/Shop.php
  • /classes/shop/Shop.php
actionUpdateQuantity
  • /classes/stock/StockAvailable.php
  • /classes/stock/StockAvailable.php
actionValidateOrder
  • /classes/PaymentModule.php
  • /classes/PaymentModule.php
actionWatermark
  • /classes/FileUploader.php
  • /classes/webservice/WebserviceSpecificManagementImages.php
  • /controllers/admin/AdminImportController.php
  • /controllers/admin/AdminProductsController.php
  • /classes/FileUploader.php
  • /classes/webservice/WebserviceSpecificManagementImages.php
  • /controllers/admin/AdminImportController.php
  • /controllers/admin/AdminProductsController.php
dashboardData
  • /controllers/admin/AdminDashboardController.php
  • /controllers/admin/AdminDashboardController.php
dashboardZoneOne
  • /controllers/admin/AdminDashboardController.php
  • /controllers/admin/AdminDashboardController.php
dashboardZoneTwo
  • /controllers/admin/AdminDashboardController.php
  • /controllers/admin/AdminDashboardController.php
displayAdminOrderContentOrder
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
displayAdminOrderContentShip
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
displayAdminOrderTabOrder
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
displayAdminOrderTabShip
  • /controllers/admin/AdminOrdersController.php
  • /controllers/admin/AdminOrdersController.php
displayAdminProductsExtra
  • /controllers/admin/AdminProductsController.php
  • /controllers/admin/AdminProductsController.php
displayAdminStatsModules
  • /controllers/admin/AdminStatsTabController.php
  • /controllers/admin/AdminStatsTabController.php
displayBackOfficeCategory
  • /controllers/admin/AdminCategoriesController.php
  • /controllers/admin/AdminCategoriesController.php
displayBackOfficeHeader
  • /classes/controller/AdminController.php
  • /classes/controller/AdminController.php
displayBackOfficeTop
  • /classes/controller/AdminController.php
  • /classes/controller/AdminController.php
displayBeforeCarrier
  • /controllers/front/OrderOpcController.php
  • /controllers/front/ParentOrderController.php
  • /classes/checkout/CheckoutDeliveryStep.php
displayCarrierList
  • /classes/Cart.php
  • /classes/Cart.php
displayCartExtraProductActions
  • /themes/default-bootstrap/shopping-cart-product-line.tpl
  • /themes/classic/templates/checkout/_partials/cart-detailed-product-line.tpl
displayCustomerAccount
  • /controllers/front/MyAccountController.php
  • /themes/classic/templates/customer/my-account.tpl
displayCustomerAccountForm
  • /controllers/front/AuthController.php
  • /controllers/front/OrderOpcController.php
  • /classes/form/CustomerForm.php
displayCustomerAccountFormTop
  • /controllers/front/AuthController.php
  • /controllers/front/OrderOpcController.php
  • /controllers/front/AuthController.php
displayFeaturePostProcess
  • /controllers/admin/AdminFeaturesController.php
  • /controllers/admin/AdminFeaturesController.php
displayFeatureValuePostProcess
  • /controllers/admin/AdminFeaturesController.php
  • /controllers/admin/AdminFeaturesController.php
displayFooter
  • /classes/controller/FrontController.php
  • /themes/classic/templates/_partials/footer.tpl
displayFooterProduct
  • /controllers/front/ProductController.php
  • /themes/classic/templates/catalog/product.tpl
displayHeader
  • /classes/controller/FrontController.php
  • /classes/controller/FrontController.php
displayHome
  • /controllers/front/IndexController.php
  • /controllers/front/IndexController.php
displayInvoiceLegalFreeText
  • /classes/pdf/HTMLTemplateInvoice.php
  • /classes/pdf/HTMLTemplateInvoice.php
displayLeftColumn
  • /classes/controller/FrontController.php
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayLeftColumnProduct
  • /controllers/front/ProductController.php
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayMaintenance
  • /classes/controller/FrontController.php
  • /classes/controller/FrontController.php
displayOrderConfirmation
  • /controllers/front/OrderConfirmationController.php
  • /controllers/front/OrderConfirmationController.php
displayOrderDetail
  • /controllers/front/GuestTrackingController.php
  • /controllers/front/OrderDetailController.php
  • /controllers/front/GuestTrackingController.php
  • /controllers/front/OrderDetailController.php
displayPaymentReturn
  • /controllers/front/OrderConfirmationController.php
  • /controllers/front/OrderConfirmationController.php
displayPaymentTop
  • /controllers/front/OrderOpcController.php
  • /controllers/front/ParentOrderController.php
  • /themes/classic/templates/checkout/_partials/steps/payment.tpl
displayProductButtons
  • /controllers/front/ProductController.php
  • /themes/classic/templates/catalog/_partials/quickview.tpl
  • /themes/classic/templates/catalog/product.tpl
displayProductPriceBlock
  • /themes/default-bootstrap/product-list.tpl
  • /themes/default-bootstrap/product.tpl
  • /themes/default-bootstrap/products-comparison.tpl
  • /themes/classic/templates/catalog/_partials/miniatures/product.tpl
  • /themes/classic/templates/catalog/_partials/product-prices.tpl
  • /themes/classic/templates/checkout/_partials/cart-summary-product-line.tpl
  • /themes/classic/templates/checkout/_partials/order-confirmation-table.tpl
displayRightColumn
  • /classes/controller/FrontController.php
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayRightColumnProduct
  • /controllers/front/ProductController.php
  • /themes/classic/templates/layouts/layout-both-columns.tpl
displayShoppingCart
  • /controllers/front/CartController.php
  • /controllers/front/ParentOrderController.php
  • /themes/classic/templates/checkout/cart.tpl
displayShoppingCartFooter
  • /controllers/front/CartController.php
  • /controllers/front/ParentOrderController.php
  • /themes/classic/templates/checkout/cart.tpl
displayTop
  • /classes/controller/FrontController.php
  • /themes/classic/templates/_partials/header.tpl
  • /themes/classic/templates/checkout/_partials/header.tpl
moduleRoutes
  • /classes/Dispatcher.php
  • /classes/Dispatcher.php
updateProduct
  • /classes/Hook.php
  • /classes/Product.php
  • /classes/webservice/WebserviceSpecificManagementImages.php
  • /classes/Product.php
  • /classes/webservice/WebserviceSpecificManagementImages.php

That’s it for now!

More information is coming soon!

If you have specific questions about module development that are not answered in this article, let us know in the comments: it will help us build a better Developer Guide!