Some months ago, I got a gig to develop an online store. We checked the options and decided to base the online store on PrestaShop 1.7. The main reason for choosing PrestaShop 1.7 was that the business’s existing online store was built on PrestaShop 1.6. So, as a developer I anticipated that migrating customers, products etc. will be easier if we use the same platform. In addition to that, I expected that the employees will not need much training if they continue using the same platform.
So, the plan was to do the following:
- Create a custom theme for Prestashop 1.7
- Modify/add/remove modules to achieve the desired functionality and performance
- Migrate data from the old website to the new website
- Launch the new online store on Prestashop 1.7
Now, if you check my work, you will see that I mostly deal with WordPress and thus I knew I’ll have to learn a lot of new things to develop a good online store on PrestaShop 1.7. Before I started developing this online store, I only had some basic experience with Prestashop 1.6, and all sources were saying that Prestashop 1.7 is a huge revamp. In the following I will explain which obstacles I/we encountered while developing an online store based on Prestashop 1.7 and how we overcome (some of) them. I will also talk about the advantages of PrestaShop and quickly compare it to other shopping platforms. When I started developing the online store the latest version of Prestashop was 1.7.6.X and we launched the online store using version 184.108.40.206.
Table of Contents:
Disadvantages of Prestashop 1.7
Saving products with many variations is a problem
When the new website was nearly done, I migrated the products from the old website to the new website. Then the staff went through the products and did the final adjustments and improvements. Soon after the team started editing products, I got a message that they have problems saving products. I investigated the problem and figured out that the problem occurs only if product has a lot of variations. So, what are variations? If a product is available in 5 sizes and 4 colors, it’s a variation product. It has 20 variations.
I did some debugging and the first thing I figured out was that product pages in the admin panel are consuming enormous amounts of memory when they are displaying a variation product. As a matter of a fact, some variation products were hitting the memory limit of 512 MB and thus triggering the beloved 500 internal server error.
So, I increased the memory limit and started investigating the problem with saving products. I figured out that saving products works well until the product has more than 15 variations or so. But when the number of variations increases, saving is painfully slow. I quickly stumbled upon an opened issue on GitHub where others were also complaining about this. Now, the thing is that this issue is opened since November 2017, meaning that Prestashop was not able to fix it in more than 2 years. Apparently, it’s connected to unfinished migration of product pages in admin panel to Symfony framework and is scheduled to be fixed in Prestashop 1.7.8.
In this case saving a variation product with 60 variations takes around 2 minutes which is insane. Luckily, the shop didn’t have many products with so many variations, but this is far from optimal. All I could do, was to explain the situation, increase the timeout and now we are all waiting for PS 1.7.8 which should be released by the end of the year. So, the bottom line is that if you are developing an online store for a company with many variation products steer clear of Prestashop until they fix this issue.
Some things are a bit buggy and unfinished
Product pages in the admin panel are not the only thing that’s buggy and unfinished. It seems to me that Prestashop 1.7 was released in a rush and now the developers are struggling to add features and fix bugs. We had quite some problems with translations. Some were simply not saving while others were translated but didn’t show up on the public side of the website. It was the same with email customizations/translations where I more than once edited the template and the platform didn’t register changes when I pressed the save button. Nevertheless, at the end we managed to translate/customize all emails and strings.
The staff also noticed that it’s impossible to bulk delete images of products. Since, they often duplicate a product and then create a new product out of that duplicate that was a big shortcoming for them. It obviously takes some time to delete images, especially because some product variations have more than 30 images. Another remark from the shop staff was about the category filter in the admin panel (the page displaying list of all products). In PS 1.6 it was according to them much better because PS 1.7 keeps closing it after you apply filters.
Pretty URLs are only partially pretty
Following the best SEO practices pretty URLs should be something like this:
- Product Pages: example.com/product-name/
- Category Pages: example.com/category-name/
In Prestashop they are by default like this:
- Product Pages: example.com/my-category/3-product-name.html
- Category Pages: example.com/10-category-name/
Each product and category page will have an ID in the URL. In the example above 3 is the ID of the product and 10 is the ID of the category. Now, Prestashop allows you to edit the structure of URLs but one thing you can’t remove from the URL is the ID. So, we settled for the following URL structure:
- Product Pages: example.com/3-product-name.html
- Category Pages: example.com/10-category-name/
This is not particularly bad, but I do really hope that Prestashop makes ID in the URL optional soon.
Prestashop validates postcode when new user registers an address. There is nothing wrong with that, but by default it requires the visitor to enter the postcode in not the most user-friendly format. So, if I register an address in Denmark, I’ll have to enter the postcode as DK-8000. Usually I would enter the postcode simply as 8000. But if I enter 8000 Prestashop will not let me proceed. That indeed causes a lot of confusion among customers. Now, there are at least three ways to fix this. You can simply remove postcode formatting in the admin panel but if you ship worldwide that’s a lot of work because you need to edit each country Prestashop supports. So, a better way to fix this is directly in the database or by overriding the controller. I decided to override the controller.
Advantages of Prestashop 1.7
The public side works surprisingly fast
I kept the website lightweight, meaning that I didn’t use many modules from third parties, and I was very satisfied with its speed once it was finished. No page exceeded the load time of 3 seconds and that is without caching. Since the website is run on LiteSpeed server I also utilized LiteSpeed cache. With LiteSpeed cache enabled most pages load in less than 1.5 seconds which is indeed good. Prestashop uses a lot of ajax on the frontend. Whenever you change color, size, quantity etc. a request is sent to the server via ajax. I was a bit worried about this, but all works fast and smooth so far. All in all, I’m very satisfied with the performance of the public side of the website.
From a developer perspective I was very satisfied with the MVC architecture. It allowed me to easily follow BEM methodology and quickly style the elements. I found the Smarty template engine easy to use and quick to learn. Prestashop allows you to write much nicer code than for example WordPress where everything is kind of bundled together.
Another thing I really liked is the Prestashop’s override system. Prestashop allows you to override the functionality of the core and the modules. In WordPress, for example, it’s often hard to change things, unless you are not planning to update them anymore; you can’t just modify a plugin because you’ll lose all your changes on update. That’s not the case with Prestashop where you can simply override classes for both modules and the core. I made several overrides to improve the functionality and UX.
A lot of features
Prestashop is indeed rich in online store features. Some of the features we really like are:
- You can handle returns directly in the admin panel. It even has an option to generate a voucher for returned products.
- You can manually place orders for your customers in the admin panel which is useful if you take orders by phone, email etc.
- Shipping costs can be based on country, weight of the package, payment method etc. It’s also easy to create multiple carriers.
- Smooth integration of payment methods like Braintree and PayPal.
- Smooth integration of multiple languages and currencies.
- GDPR compliance – it allows your customers to export all data you have about them which is required by the GDPR.
There are of course more features, but these are the first that come to my mind.
Prestashop has an okay forum where you can find solutions to problems or ask the community how they dealt with problems you are encountering. That’s indeed worth something. Members are quite active, although I got a feeling that they were much more active before the release of PS 1.7. There was a lot of negative press when PS 1.7 was released (probably justified as even now things are unfinished), and I believe than many switched to different platforms.
Okayish update system
PrestaShop doesn’t have a built-in update system, but they do have a free 1-click upgrade module. I was happy with this module although it bothered me that I couldn’t only update the core. I had to also update all modules and that I would rather do one-by-one. Almost always some modules broke during the update – mostly because they were changed and thus no longer compatible with my templates. It was always a quick fix, but I would still prefer to update the modules in a more controllable manner.
So, is PrestaShop 1.7 a good option for an online store in 2020? In my opinion it is, but definitely not for every online store. If your store has a lot of products with many variations, you should definitely steer clear of Prestashop 1.7 until they fix the problem mentioned above (see product variations). Otherwise I think Prestashop is best for medium-sized online stores which need more functionality than what WooCommerce (WordPress) can offer and don’t want to switch to a more expensive platform such as Magento.
I can’t say much about Magento since I haven’t worked with it yet but from what I’ve heard and read a development of a Magento online store can easily cost you more than $50.000 which is indeed much more than PrestaShop will cost you. A popular option these days is also Shopify and I’ve seen some great online stores using this platform. Nevertheless, with Shopify you are completely dependent on them in terms of hardware, software and pricing. If you are okay with that, Shopify is probably a good option. I must also mention ThirtyBees which is a fork of Prestashop 1.6. I was seriously considering it, but at the end I found it to risky to use a platform with a relatively small community.
What is your experience with Prestashop? Leave a comment below 🙂