PS PrestaShop Beginner

Product Positions — Complete Guide

Install, configure and use the product positions module: drag & drop, multi-criteria auto sort, position pinning and protection against ERP imports for PrestaShop 8 and 9.

Updated Module version 1.1.0

Overview

The Product Positions module provides a modern drag & drop interface to reorder products in your PrestaShop categories, alongside powerful auto-sort tools and a pinning system that protects chosen positions against automated changes (ERP imports, CSV imports, third-party scripts).

The module is compatible with PrestaShop 8 and 9, in single-shop and multi-shop, and fully multilingual (FR, EN, ES, DE, IT). It writes directly to PrestaShop’s standard position column: the order defined in the back office appears identically in the front office, with no extra configuration or theme integration.

Installation

  1. In the back office, open Modules > Module Manager.
  2. Click Upload a module and drop the ZIP archive.
  3. Once installed, the Catalog > Product positions entry appears in the menu.

On install, the module creates a dedicated table for the pinning system and registers the hooks needed for automatic restoration of locked positions.

Interface

The management screen has three main areas:

  • Category tree on the left: full hierarchy navigation, instant search, product counter and pin counter for each category.
  • Toolbar in the top right: search inside the current category, Locking menu (orange) and Auto sort menu (purple).
  • Product list in the center: each product has a drag & drop handle, a click-to-edit position number, and four quick actions — pin, move to top, move to bottom, edit the product page.

Shop and language selectors at the top of the screen switch the context without leaving the page.

Reorder products manually

Drag & drop

Grab the handle on the left of a product and drag it to the desired location. Positions are saved automatically as soon as you release.

Edit the position number directly

Click a product’s position number to edit it with the keyboard. Press Enter to confirm; press Escape to cancel. The module automatically shifts other products to accommodate the new position.

“Move to top” and “Move to bottom” buttons

Two quick buttons send a product to the first or last position of the category in a single click.

Auto sort

The Auto sort menu applies an ordering to all products in the category according to the chosen criterion. The available criteria are:

  • By name: A → Z or Z → A, based on the name in the current language.
  • By price: ascending or descending.
  • By stock: high stock first or low stock first, with alphabetical tiebreaker.
  • By sales (last 90 days): best sellers or least sold first, calculated from valid orders on the current shop.
  • Newest / oldest: based on the product’s creation date.
  • Reference A → Z: alphabetical by internal reference.
  • Reverse current order: flips the entire list.
  • Random shuffle: random order on each run.

The Also apply to subcategories option propagates the sort to all descendant categories in a single operation.

Pinned products keep their position during a sort: only non-pinned products are reordered (see the next section).

Position pinning

Pinning freezes a product’s position so it does not change during an auto sort or after an external modification (ERP import, manual product update through the BO, script). It is an optional protection layer: without pinning, the manual order remains valid as long as you do not run an auto sort and no external system touches the positions.

Pin a single product

On each product row, the pin icon toggles the pinned / unpinned state of the product in the current category. A pinned product gets an orange left border and a small pin badge on its position number. The pinned counter in the status bar and in the category tree updates automatically.

You can still manually move a pinned product (drag & drop, direct edit, quick buttons): the locked position then follows the movement. Only auto sort and external modifications are blocked.

Lock the entire category

The Locking > Lock the entire category menu pins every product in the current category at its current position in one go. This is the recommended option for catalogs pushed by an ERP that regularly re-syncs categories: once the category is locked, no external import can change the order.

Unlock all

The Unlock all option removes every pin from the current category in a single action. The current positions are preserved; only the protection is lifted.

Restore pinned positions

The Restore pinned positions option manually replays the restoration algorithm on the current category. Useful after a large import to visually verify that all locked positions are back where they belong — although the automatic restoration hook already fires after every product update.

Use cases

Pin the first N products manually, sort the rest A → Z

Common scenario: manually pick the top 5 or 10 products of a category (hero spots, best sellers, new arrivals) and alphabetically sort everything else.

  1. Select the category in the tree.
  2. Arrange your top N products in the desired order (drag & drop or direct edit).
  3. Click the pin icon on each of those N products.
  4. Open Auto sort > By name > A → Z.

The N pinned products stay at their positions; the others are sorted alphabetically from position N+1 onwards. The same mechanism works with every sort criterion.

Protect a category against an ERP import

Common scenario: your ERP or an external script regularly re-syncs the product / category links, which resets positions.

  1. Organize the category in the desired order.
  2. Open Locking > Lock the entire category.
  3. Confirm: all products are pinned at their current position.

From that moment on, every update of a locked product automatically triggers the restoration of its original position, no matter which system performed the change.

Multi-shop

The module is fully compatible with PrestaShop’s multi-shop feature. The shop selector at the top of the interface switches the context. Positions and pins are independent per (category, shop) pair: pinning a product in shop A does not lock it in shop B.

Multilingual

The back-office interface is translated into French, English, Spanish, German and Italian. The language selector at the top of the screen changes the language of the tree and of the displayed product names; positions are shared across all languages of a shop (PrestaShop’s native behavior).

Performance

The module uses optimized SQL queries with joins on existing indexes (category_product, product_shop, stock_available). Position saves are debounced on the JavaScript side to avoid successive requests during fast reorganizations. The pinning table has a composite primary key and two secondary indexes for very fast restorations, even on categories with hundreds of products.

Uninstall

Uninstalling the module removes the pinning table and the corresponding menu entry. Positions in category_product stay intact: your current order is preserved. Only the protection (pinning and automatic restoration) is lifted.

FAQ

Do I have to pin every product for the manual order to stick?

No. The order defined via drag & drop or direct edit is saved into PrestaShop’s standard position column and stays there as long as no auto sort or external import changes it. Pinning is an optional protection layer, useful only if you want to mix manual positions with auto sorting, or if your ERP touches the product / category links during imports.

Is the back-office order correctly reflected in the front office?

Yes, with no extra configuration. The module writes to the native category_product.position column that PrestaShop already uses to order product lists on the front. No theme integration or additional hook is required.

My ERP re-syncs categories on every import — what should I do?

Open the Locking > Lock the entire category menu. This pins every product at its current position in one go. The automatic restoration hook will then put positions back in place every time the ERP modifies a locked product.

Can a pinned product still be moved?

Yes. Pinning protects against automated changes (auto sort, external imports). When you manually move a pinned product (drag & drop, position edit, top or bottom button), the locked position is updated to follow the move.

Does auto sort work with subcategories?

Yes. Tick the Also apply to subcategories option in the sort menu to propagate the criterion to all subcategories of the current one in a single operation.

Is the module compatible with PrestaShop 9?

Yes, the module is compatible with PrestaShop 8.x and 9.x, in single-shop and multi-shop, with no Composer dependency and no external JavaScript (jQuery and jQuery UI are provided natively by PrestaShop).

Does the module replace the native category positions screen?

No, it sits alongside it. PrestaShop’s native screen is still available; the module provides a more modern interface with pinning and multi-criteria sorting as a bonus.

Was this page helpful?

Still stuck? Contact support