Module · LNK FAQ Pro
  • PrestaShop

LNK FAQ Pro: a PrestaShop FAQ that answers where the customer asks

The same questions keep coming back: delivery times, returns, parcel tracking. They arrive by email or by phone, and some of them stop an order right before payment. The PrestaShop FAQ module LNK FAQ Pro publishes a searchable FAQ page, and places each group of questions on the pages that call for it: under product pages, on category pages, on the home page, on a CMS page. You write each answer once, in each language, and it serves everywhere. No theme edits, no override of the PrestaShop core.

  • Version 2.1.0 · PrestaShop 1.7.6 to 8.x
  • Version 2.9.0 · PrestaShop 9
  • PrestaShop 1.7.6 to 9.x
  • PHP 7.1 to 8.4
  • No override

Key points

  • A /faq page with search, translatable heading and meta description.
  • Questions on the pages that call for them: product pages, category pages, home page, CMS
  • Automatic takeover of LNK FAQ, checked text by text, with nothing lost on a mismatch.
  • schema.org FAQPage data, one block per page.
  • Native <details> accordion, usable with the keyboard and without JavaScript.
  • Colors, sizes and texts adjustable without CSS, falling back to the theme's look.
  • Multistore through PrestaShop's native association tables.
  • Multilingual, shipped in French, English and Arabic (right to left).
  • Native Symfony back office on PrestaShop 9: grids, drag and drop, translatable forms.
  • No core override, no external call, no cookie.
  • 3.9 KB of CSS and 2.2 KB of JavaScript compressed, the script on the /faq page only.

A FAQ where the question is asked

A standalone FAQ page gets few visits: customers ask their question on the product page or in the checkout, rarely after looking for the link to the FAQ. LNK FAQ Pro groups questions into categories, then shows each category in the positions you choose:

Position Scope
/faq page the module's FAQ page, with its short URL
Home page in the body of the page
Product pages all of them, or only the products you pick
Category pages all of them, or only the categories you pick
CMS pages all of them, or only the pages you pick, at the bottom of the page

A category can have as many positions as needed. Delivery questions under product pages, returns on the home page, payment terms on the CMS page about them: the same answer serves everywhere and is maintained in one place.

All these positions are native PrestaShop hooks, provided by the official themes. If your theme has no hook point where you want it, we add it for you free of charge.

A searchable FAQ page

The /faq page gathers the categories placed on it, with a heading, a title tag and a meta description, all translatable. A search box filters the questions as the visitor types, with no server request, highlights the matched word and says “2 results out of 9 questions”. A link to /faq#a-question opens the targeted answer directly. An optional footer block links to the FAQ and to its first questions (zero to ten).

Each answer opens in a native <details> element: the accordion works with the keyboard and without JavaScript, one answer open at a time per group.

Already using LNK FAQ: automatic takeover

A shop running our LNK FAQ module (lnk_faq) has nothing to type again. When FAQ Pro is installed or updated, the content is taken over: blocks, questions, answers, every language (matched by language id), same pages, same order, same look, same texts around the blocks.

Every imported text is then read back and compared with the source, language by language and shop by shop:

  • when everything matches, LNK FAQ is disabled (its data stays in the database, nothing is uninstalled) and FAQ Pro takes its exact place in each hook;
  • at the slightest difference, everything imported is removed, LNK FAQ keeps running, and the back office shows the reason with a "Try the import again" button.

Imported answers go through the same filter as the answer field of the form (PrestaShop's HTML purifier, then the isCleanHtml check). Any answer this filter changes visibly is listed in the report, for review.

Measured on a copy of a real three-language shop (French, English, Arabic, PrestaShop 9.1.4, PHP 8.4): 30 blocks and 222 questions imported, 84 pages compared before and after, no difference.

Your theme's look, adjustable without CSS

By default, the module takes the theme's colors and fonts. The appearance settings go further, with no CSS to write:

  • Colors: accent, headings, answer text, rules.
  • Sizes: headings, questions, answer text, in pixels.
  • Answer text strength: applied in the color itself, never through transparency; below 100 %, the settings screen reminds you to check the contrast.
  • Block heading: the FAQ page title, or the name of the category shown.
  • Texts around the blocks, in each language: eyebrow, introduction, contact link text. Left empty, they use the module's translation.

A field left empty keeps the theme's look. Settings are applied as CSS variables on the block itself: no file is generated on disk.

For integrators, the public --lnk-faq-* variables (accent, border, muted, gap, title-color, muted-opacity, title-size, question-size, text-size) can be set from the theme in one line. They fall back to the LNK themes' base tokens (--lnk-accent, --lnk-border, --lnk-muted), and the former --lnkfaq-* names are still read.

A native PrestaShop 9 back office

On PrestaShop 9, the module's screens are built with the Symfony components of the back office, with no AdminController and no HelperForm:

  • native grids for categories and questions: filters, sorting, drag and drop ordering, one-click status, bulk delete; questions are shown one category at a time;
  • Symfony forms with translatable fields and a rich text editor for answers;
  • a settings screen covering the FAQ page, the blocks and the appearance.

FAQPage structured data

Every page carrying a FAQ publishes a JSON-LD FAQPage block (schema.org) with its questions and answers, and only one per page, even when several blocks are shown there. A question without an answer is left out, because an empty entry invalidates the block. A switch turns this data off if another module already publishes a FAQPage on the same pages.

Questions and answers are text in the page's HTML, readable by a search engine or a conversational assistant that does not run scripts. The module makes your answers readable; their content does the rest. Details are in SEO.md.

Multilingual, Arabic included

Every question, answer, category name and FAQ page text is entered in every language of the shop. Texts are stored in PrestaShop's native _lang tables, one row per language. The module ships in French, English and Arabic, and the stylesheet handles right-to-left writing.

Questions accept up to 512 characters.

Compatible with PrestaShop 9

Branch Module version PHP Back office
9.0 → 9.x 2.9.0 8.1 → 8.4 native Symfony
1.7.6 → 8.x 2.1.0 (separate package) 7.1 → 8.1 classic

The 2.9.0 package installs on PrestaShop 9 only. Shops on 1.7 and 8 get the 2.1.0 package, with the same features and no Symfony file.

Updating from a 1.x version is automatic: categories and questions move to the native _shop multistore association tables, each one keeps its shop and its order, and your per-language texts are kept.

FAQ module without override

This module installs no override. The override/ folder does not exist.

For an agency, this means no conflict with another module overriding the same class, no orphan file after a PrestaShop update and nothing to clean up before a migration.

Light and fast

Figures measured on the shipped module, gzip-compressed (level 9). On the front office: a 3,999-byte stylesheet (3.9 KB) and a 2,279-byte script (2.2 KB), no jQuery. The script only loads on the /faq page, where it runs the search and opens a question from its link; every other page loads 0 bytes of it. The stylesheet only loads on pages that can carry a FAQ (home, product pages, category pages, CMS pages, /faq), or shop-wide when the footer block is on. No remote font, no CDN, no external call.

Frequently asked questions

What do I see right after installation?

A starter FAQ: one "Orders and delivery" category and three questions, in every installed language, shown on the FAQ page and under every product page. Their wording says itself that it is there to be replaced. Edit them, delete them, or untick a position on the category. On a shop that already has a FAQ, or that uses LNK FAQ, nothing is added.

Is this module compatible with my PrestaShop version?

Yes, from PrestaShop 1.7.6 to 9.x, in two packages. Version 2.9.0 covers PrestaShop 9.0 to 9.x (PHP 8.1 to 8.4), with a native Symfony back office. Shops on 1.7.6 to 8.x get version 2.1.0 (PHP 7.1 to 8.1), with the same features and the classic back office.

I already use LNK FAQ: do I have to type everything again?

No. When FAQ Pro is installed or updated, the LNK FAQ content is taken over: blocks, questions, answers, every language, same pages, same order, same look. Every imported text is read back and compared with the source, language by language and shop by shop. When everything matches, LNK FAQ is disabled, its data stays in the database, and FAQ Pro takes its exact place in each hook.

What happens if the LNK FAQ takeover fails?

Nothing changes for your visitors. At the slightest difference between the source and the import, everything imported is removed and LNK FAQ keeps running. The back office shows the reason for the difference and a "Try the import again" button. On a three-language shop with 222 questions, the takeover was checked on 84 pages compared before and after, with no difference.

Do I have to edit my theme?

No, in the standard case. Blocks are shown through native PrestaShop hooks, provided by the official themes, and the look follows the theme. If your theme is heavily customized and a block does not land where you want it, we add the hook point for you free of charge.

Does this module slow down my shop?

No. On the front office, it loads a 3.9 KB compressed stylesheet and, on the /faq page only, a 2.2 KB script for the search. Other pages load no JavaScript from the module: the accordion is the browser's native <details> element. No remote font, no CDN, no call to an external service.

Does the module contain a core override?

No, the module contains no override and the override/ folder does not exist. So it cannot conflict with any other module over a core class, and a PrestaShop update leaves no orphan file.

What happens with a large catalog?

Nothing special. The module does not go through your catalog: a FAQ category is placed either on every product page at once, or on the products you pick, and a page only reads the questions that concern it. The search on the /faq page filters the questions already in the page, with no extra request.

Will Google read my questions?

They are published to be read. Every page carrying a FAQ holds a FAQPage structured data block (schema.org), one per page, and the questions are text in the HTML. Showing them as a rich result remains Google's decision. If another module already publishes a FAQPage on the same pages, a switch turns ours off.

Does it work with multistore and several languages?

Yes. Categories and questions are linked to shops through PrestaShop's native association tables, and every text is entered language by language. A question left empty in a language is not shown in that language. The module ships in French, English and Arabic, with right-to-left layout.

Can I change the colors without writing CSS?

Yes. The appearance settings cover the accent color, the color of headings, answer text and rules, and the size of headings, questions and text. A field left empty keeps the theme's look. Integrators also have the --lnk-faq-* CSS variables.

What is left if I uninstall the module?

Nothing. Uninstalling removes the module's settings, menu entries and tables, and your questions and answers with them. PrestaShop shows a confirmation saying so before acting: to only hide the FAQ, disable the module. LNK FAQ's data, if you had it, stays intact.

Does the module set cookies?

No. The module sets no cookie or tracker, collects nothing about visitors and sends no data to a third party. There is nothing to declare in your consent banner.

I am coming from version 1.x of the module.

The update is automatic. Your categories and questions move to the native multistore association tables, each one keeps its shop and its order, and your per-language texts are kept. Questions now accept 512 characters, up from 255. On PrestaShop 9, the screens move to the Symfony back office.

Release history

6 versions released for PrestaShop

  1. Version 2.9.0 PrestaShop 9

    PrestaShop 9 branch (9.0 to 9.x, PHP 8.1 to 8.4). Shops on PrestaShop 1.7.6 to 8.x have their own package, 2.1.0, with the same features: no Symfony file is shipped to 1.7 and 8 shops, and the 2.9.0 package installs on PrestaShop 9 only.

    New

    • Native Symfony back office: native grids for categories and questions (filters, sorting, drag and drop, status, bulk delete; questions one category at a time), Symfony forms with translatable fields and a rich text editor, a settings screen. The module no longer ships any AdminController or HelperForm.
    • Automatic takeover of LNK FAQ (lnk_faq), on installation or update: blocks, questions, every language (matched by id_lang), same pages, same order, appearance (colors) and texts around the blocks. Every imported text is read back and compared language by language and shop by shop. When everything matches, lnk_faq is disabled (not uninstalled: its data stays) and FAQ Pro takes its exact place in each hook. At the slightest difference, everything imported is removed, lnk_faq keeps running, and the reason is shown with a "Try the import again" button.
    • Imported answers go through the same filter as the answer field (HTML purifier, isCleanHtml); answers changed visibly are listed in the report.
    • Separate appearance settings: accent color, heading color, answer text color, rule color; heading, question and text sizes; answer text strength, applied in the color and never through transparency, with a contrast warning below 100 %.
    • Per-language texts around the blocks: eyebrow, introduction, contact link text.
    • Choice of block heading: the FAQ page title or the category name.
    • French, English and Arabic translations (right-to-left writing).
    • Public CSS variables --lnk-faq-* (accent, border, muted, gap, title-color, muted-opacity, title-size, question-size, text-size), falling back to the LNK themes' base tokens (--lnk-accent, --lnk-border, --lnk-muted). The former --lnkfaq-* names are still read.

    Changes

    • Menu: the "FAQ" and "FAQ categories" screens go where the other LNK modules put theirs: under Modules, or under "Lnk - modules" while another module still uses that entry. FAQ Pro no longer creates it, and removes it when it is left empty.
    • Multistore through the native _shop tables: categories and questions are linked to shops through lnkfaq_category_shop and lnkfaq_question_shop. The update migrates the former id_shop column automatically; each record keeps its shop and each shop's order is kept.
    • Questions accept 512 characters (255 before).
    • A single FAQPage (schema.org) data block per page, even when several FAQ blocks are shown there.
    • A shop updated from 1.x keeps the 90 % strength of its answers, now applied in the color; a new installation starts at 100 %.
    • Addresses of the module's CSS and JS files versioned by the fingerprint of their content: after an update, neither a CDN nor the browser serves the old version.
    • Menu: a single “FAQ” entry. Categories open from the list of questions (“Manage categories” button in the header, “New category” next to the category choice); with no category, an empty state leads to creating the first one. Their tab stays registered, hidden from the menu: employee permissions do not change.

    Fixes

    • FAQ search: the matched word was invisible (white on white) when no accent colour is set. It is now highlighted with a tint of the accent, or the browser highlight, under text that keeps its colour: contrast measured from 7.7:1 to 15:1 on Classic and Hummingbird, in French and Arabic.
    • Search counter: "1 result out of 9 questions" instead of "1 / 9 matches", with the plurals of the language (0 and 1 singular in French); in Arabic, a wording without agreement, right for any number.
    • The lnk_faq back-office tab is no longer deleted on installation (1.4.0 defect: both modules share the AdminLnkFaq class name).
    • Updating keeps the per-language texts of the settings; a defect emptied them.
  2. Version 2.1.0 PrestaShop 1.7.6 to 8.x

    PrestaShop 1.7.6 to 8.x branch (PHP 7.1 to 8.1). PrestaShop 9 now has its own package, 2.9.0, with the same features: no Symfony file is shipped to 1.7 and 8 shops.

    New

    • Automatic takeover of LNK FAQ (lnk_faq), on installation or update: blocks, questions, every language (matched by id_lang), same pages, same order, appearance (colors) and texts around the blocks. Every imported text is read back and compared language by language and shop by shop. When everything matches, lnk_faq is disabled (not uninstalled: its data stays) and FAQ Pro takes its exact place in each hook. At the slightest difference, everything imported is removed, lnk_faq keeps running, and the reason is shown with a "Try the import again" button.
    • Imported answers go through the same filter as the answer field (HTML purifier, isCleanHtml); answers changed visibly are listed in the report.
    • Separate appearance settings: accent color, heading color, answer text color, rule color; heading, question and text sizes; answer text strength, applied in the color and never through transparency, with a contrast warning below 100 %.
    • Per-language texts around the blocks: eyebrow, introduction, contact link text.
    • Choice of block heading: the FAQ page title or the category name.
    • French, English and Arabic translations (right-to-left writing).
    • Public CSS variables --lnk-faq-* (accent, border, muted, gap, title-color, muted-opacity, title-size, question-size, text-size), falling back to the LNK themes' base tokens (--lnk-accent, --lnk-border, --lnk-muted). The former --lnkfaq-* names are still read.

    Changes

    • Menu: the "FAQ" and "FAQ categories" screens go where the other LNK modules put theirs: under Modules, or under "Lnk - modules" while another module still uses that entry. FAQ Pro no longer creates it, and removes it when it is left empty.
    • Declared range: PrestaShop 1.7.6 to 8.x. Shops on PrestaShop 9 move to the 2.9.0 package.
    • Classic back office kept (native PrestaShop 1.7 and 8 lists and forms), with the same features as the 9 branch. The new settings and the status of the LNK FAQ takeover are shown on the module's "Configure" page.
    • Multistore through the native _shop tables: categories and questions are linked to shops through lnkfaq_category_shop and lnkfaq_question_shop. The update migrates the former id_shop column automatically; each record keeps its shop and each shop's order is kept.
    • Questions accept 512 characters (255 before).
    • A single FAQPage (schema.org) data block per page, even when several FAQ blocks are shown there.
    • A shop updated from 1.x keeps the 90 % strength of its answers, now applied in the color; a new installation starts at 100 %.
    • Addresses of the module's CSS and JS files versioned by the fingerprint of their content: after an update, neither a CDN nor the browser serves the old version.
    • Menu: a single “FAQ” entry. Categories open from the list of questions (“Manage categories” button in the header, “New category” next to the category choice); with no category, an empty state leads to creating the first one. Their tab stays registered, hidden from the menu: employee permissions do not change.

    Fixes

    • FAQ search: the matched word was invisible (white on white) when no accent colour is set. It is now highlighted with a tint of the accent, or the browser highlight, under text that keeps its colour: contrast measured from 7.7:1 to 15:1 on Classic and Hummingbird, in French and Arabic.
    • Search counter: "1 result out of 9 questions" instead of "1 / 9 matches", with the plurals of the language (0 and 1 singular in French); in Arabic, a wording without agreement, right for any number.
    • The lnk_faq back-office tab is no longer deleted on installation (1.4.0 defect: both modules share the AdminLnkFaq class name).
    • Updating keeps the per-language texts of the settings; a defect emptied them.
  3. Version 1.4.0 PrestaShop 1.7.6 to 8.x

    New

    • A starter FAQ is created on installation: one category, "Orders and delivery", with three questions, translated into every language the shop has installed. It is placed on the FAQ page and on product pages, so the module shows what it does without any configuration. The wording says plainly that it is there to be edited, and unticking one box on the category removes either placement. Nothing is seeded on a shop that already has a FAQ category.

    Removed

    • The PrestaShop 1.6 compatibility layer. With the supported range starting at 1.7.6, the 1.6 branches in Compat, the init() override in the front controller and the faq16.tpl template were unreachable code that still shipped to merchants and suggested support we do not offer.
Show the 3 previous versions
  1. Version 1.3.1 PrestaShop 1.7.6 to 8.x

    Bug-fix release. No schema change; upgrade-1.3.1.php only repairs hook registration, and every setting a merchant has chosen is preserved.

    Changes

    • Uninstalling now deletes the module's tables, and with them every FAQ category and question. Previously the content survived an uninstall. The confirmation PrestaShop shows before uninstalling states this plainly; to hide the FAQ while keeping the content, use Disable.
    • The supported range is now PrestaShop 1.7.6 to 9.x, where it previously claimed 1.6. The code uses public const, which is PHP 7.1 syntax, and 1.7.6 is the first PrestaShop release requiring PHP 7.1: on anything older the module would trigger a PHP syntax error, with no clean refusal at installation.
    • Answers open one at a time: the accordion uses the native details name grouping, so no JavaScript was added.
    • All SQL moved out of the back-office controllers into the repositories, and the three near-identical placement-search queries became one.

    Fixes

    • /faq had no friendly URL on PrestaShop 8. The module skipped registering any hook whose name the core did not already know, which left moduleRoutes unregistered on that branch. The core creates the row itself, so the guard only ever suppressed registrations PrestaShop would have accepted. Shops already on 1.3.0 get the hook back through the upgrade script.
    • Back-office screens could fail to load with Attempted to load class "LnkFaqCategory" from the global namespace. The autoloader stopped after Composer's when a vendor/ directory was present, and Composer maps only the LnkFaq\ namespace, which left the global ObjectModels in classes/ unresolved.
    • The FAQ block on a CMS page rendered unstyled, and the footer links lost their styling everywhere outside the FAQ, home, product and category pages. The stylesheet was gated on a fixed list of page types that predated both the CMS placement and the shop-wide footer block.
    • A failed installation left the shop unusable: PrestaShop recorded the module as installed and active with no menu entry, no hooks and no settings, and refused to install it again. Installation steps no longer short-circuit, an exception in any step is caught and named, and a failure rolls itself back.
    • Upgrading from 1.1.0 or 1.2.0 never registered displayFooter, so every category placed on a CMS page was silently invisible. upgrade-1.3.0.php now reconciles hooks, tabs and configuration for any shop older than 1.3.0.
  2. Version 1.3.0 PrestaShop 1.7.6 to 8.x

    First version tracked in version control; earlier releases predate the repository and are not reconstructed here.

    • FAQ page at /faq, searchable, with schema.org FAQPage data. - Questions grouped in categories, translated per language and scoped per shop. - Placement of a category on the FAQ page, the home page, product pages, category pages or CMS pages: everywhere in a scope, or on chosen pages. - Footer links, an optional contact link, and an accent colour that defaults to the theme's own.
  3. Version 1.1.0 PrestaShop 1.7.6 to 8.x
    • Placements replaced the single hard-wired "category shown on product pages" setting; upgrade-1.1.0.php converts the old configuration into placement rows so the front office is unchanged after upgrading. - Back-office screens moved directly under the shared "Lnk - modules" menu, which 1.0.0 nested one level too deep to be displayed.

Your cart

Your cart is empty.