Book Image

Practical Module development for Prestashop 8

By : Louis AUTHIE
Book Image

Practical Module development for Prestashop 8

By: Louis AUTHIE

Overview of this book

After version 1.7, PrestaShop underwent a host of changes, including migration to a Symfony-based system from an outdated legacy code. This migration brought about significant changes for developers, from routine maintenance to module development. Practical Module Development for PrestaShop 8 is curated to help you explore the system architecture, including migrated and non-migrated controllers, with a concise data structure overview. You’ll understand how hooks enable module customization and optimize the CMS. Through the creation of seven modules, you’ll learn about the structure of modules, hook registration, the creation of front-office controllers, and Symfony back-office controllers. By using Doctrine entities, services, CQRS, grids, and forms, you’ll be guided through the creation of standard, payment and carrier modules. Additionally, you'll customize and override themes to achieve your desired e-commerce store look. By the end of this book, you’ll be well equipped to provide modern solutions with PrestaShop that meet client requirements.
Table of Contents (23 chapters)
1
Part 1 – Understanding How PrestaShop is Structured and How It Works
8
Part 2 – How to Create Your Own Modules
16
Part 3 – Customizing Your Theme
Appendix – Module Upgrade, The Hooks Discovery Tool, and Multi-Store Functions

Presenting the two types of hook

If you connect to your database and select all the rows of the table named prefix_hook, you may see that the name values almost always follow the same pattern. The name column is always in camelCase and sometimes starts with action or display. There we are: we found the two main types of hooks used by PrestaShop!

The display hooks are visual and are executed in one, or sometimes many, Smarty or Twig templates arbitrarily, and they trigger the registered module(s) to insert custom HTML. Some parameters can be retrieved by the called modules. They run like actions in WordPress, if you know them. For example, if you want a module to add a block of text inside a page, you can use a display hook.

The action hooks are invisible because they only have an effect on the payload data transmitted as referenced parameters. To continue with the WordPress comparison, they can be compared to WordPress filters. For example, if you have an array of products to...