Available for projects & agency overflow · Quick reply, from the person who does the work

PrestaShop 1.6 to 1.7: the step that changes the theme

Moving from PrestaShop 1.6 to 1.7 is the first compulsory step to go further: the theme engine changes, part of the back office moves onto Symfony, and the hook for payment methods at checkout isn’t the same one anymore. Here’s what actually breaks and how I handle it.

Describe my issue Send a message

What actually changes between 1.6 and 1.7

PrestaShop 1.6 runs on a proprietary “legacy” framework, Smarty-only templating, with a default theme called Default. From 1.7, part of the admin and some front controllers move onto Symfony with Twig, Smarty staying in use for the rest: a hybrid architecture. The default theme also changes name, Classic replacing Default, built on Bootstrap 4 where the 1.6 theme was on Bootstrap 3. A 1.6 theme, even a customised one, doesn’t install as-is on 1.7: it has to be rebuilt template by template.

The change that most often breaks shops concerns checkout. On 1.6, payment modules hook into displayPayment. From 1.7, that hook is replaced by paymentOptions. A module that hasn’t been updated simply stops appearing at the payment step, with no visible error: the customer can’t pay.

The database structure also changes, with new tables and renamed columns: a raw SQL dump restored as-is isn’t reliable, it’s the official autoupgrade module that runs the needed schema scripts.

What typically breaks during a 1.6 to 1.7 migration

  • The payment module disappears from checkout with no error message: the displayPayment hook is no longer called.
  • The theme shows a blank page or broken rendering: the 1.6 .tpl templates no longer match the 1.7 folder structure.
  • Some back-office screens move, part of the admin now being handled by Symfony controllers.
  • Modules using the old curly-brace array syntax (e.g. $array{0}) throw fatal errors if PHP was also upgraded.

How I run a 1.6 to 1.7 migration

  1. Auditing modules and the theme

    I list every module and version, checking each declares 1.7 compatibility — same for the theme.

  2. Full backup before touching anything

    Every file, a full database dump, and the configuration of critical modules (payment, carriers), before running anything.

  3. Migration on a copy of the shop

    I run autoupgrade on a test environment, never production. It backs up files and database again first, with a restore option if it fails.

  4. Rebuilding the theme and swapping the payment hook

    I rebuild the theme on top of Classic and check every payment module uses paymentOptions rather than the old displayPayment.

  5. Checking, then switching over

    Once the test shop is approved, I schedule the switch for a low-traffic window, to limit impact on orders in progress.

What I back up and check afterwards

Before running anything, I back up the entire site tree, a full database dump, and the payment and carrier module configuration, the most hook-sensitive — kept outside autoupgrade/backup, since that folder can be overwritten later.

After the migration, I check that orders, customers and catalogue products match exactly, that main URLs still respond with the right status code, and that redirects work. I also run a full checkout to confirm the payment module appears via paymentOptions.

monmodule.php
// PS 1.6
$this->registerHook('displayPayment');

// PS 1.7+
$this->registerHook('paymentOptions');

To prepare for or complete this migration

  • PHP 5.2 to 7.1 PrestaShop 1.6
  • PHP 7.2 to 7.4 depending on sub-version PrestaShop 1.7

devdocs.prestashop-project.org

Describe your need in one minute

A few targeted questions so I can reply with an estimate rather than another questionnaire.

version-depart
version-arrivee
catalogue
modules-tiers (facultatif)
conserver (facultatif)
Please provide an email or a phone number so I can get back to you.

Please provide an email or a phone number so I can get back to you.

Frequently asked questions

Why did the payment module disappear from checkout after the migration?
Almost always the hook. On 1.6, payment modules hook into displayPayment; from 1.7, that hook is replaced by paymentOptions. If not updated, the module simply stops appearing, with no visible error.
Will my customised 1.6 theme work as-is on 1.7?
No. The default theme changes name and base (Classic replaces Default) and the template structure changes with the hybrid architecture: it needs adapting or rebuilding template by template.
Is it risky to stay on PrestaShop 1.6?
Official maintenance stopped on 30 June 2019: exposure to unpatched security flaws, without knowing precisely which ones or when they’ll be exploited.
Which PHP version should I target after migrating to 1.7?
Depends on the sub-version: only 1.7.5 to 1.7.8 support PHP 7.2, and only 1.7.8 supports PHP 7.4. No 1.7.x version runs under PHP 8.