4.5 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a PrestaShop 1.7.x e-commerce store (interblue.pl) with a custom theme and multiple custom/third-party modules. The codebase is a live PrestaShop installation deployed via FTP to the production server.
Architecture
Directory Structure
themes/InterBlue/— Custom theme based on PrestaShop's classic theme. Templates use Smarty (.tpl), CSS is compiled from SCSS via VSCode Live Sass Compiler.modules/— 130+ modules. Custom/in-house modules:customfeaturetab,AddOrderExtraFields. Key third-party:x13allegro(Allegro marketplace),onepagecheckoutps(one-page checkout),baselinker,empikmarketplace,dpdpoland/sensbitinpost/sensbitpaczkawruchu/sensbitpocztapolska(shipping carriers).override/— PrestaShop class/controller overrides. Critical overrides:override/classes/order/Order.php— Modified bymodrefchangemodule to fire hooks (actionBeforeAddOrder,actionBeforeAddOrderInvoice,actionBeforeAddDeliveryNumber) before invoice/delivery number assignment.override/controllers/front/OrderController.php— Modified byonepagecheckoutpsmodule for one-page checkout flow.
src/— Extended PrestaShop core:src/Adapter/Order/QueryHandler/andsrc/Core/Domain/Order/for order viewing query pattern (CQRS).
Theme Architecture
- SCSS workflow: Edit
themes/InterBlue/assets/css/custom.scss(ortheme.scss). The VSCode Live Sass Compiler auto-compiles tocustom.csswith autoprefixer on save. - Templates override classic theme templates in
themes/InterBlue/templates/. - Default layout is full-width; category pages use left column.
Module Architecture
Custom modules follow standard PrestaShop module structure:
- Main PHP class extends
Module views/templates/for Smarty templatesclasses/for business logic- DB install/uninstall in
install()/uninstall()methods - Hooks registered via
registerHook()ininstall()
The customfeaturetab module (modules/customfeaturetab/) uses a custom DB table ps_custom_feature_tab to map product features/values to extra product page tabs, displayed via the displayProductExtraContent hook.
Override Conflicts
When adding overrides, check for existing overrides that multiple modules may have contributed to. The Order.php override was generated by AddOrderExtraFields copying files from modules/AddOrderExtraFields/_overrides/. If modrefchange module is installed, a different version is used.
Known issue: After updating empikmarketplace, the admin product catalog list view is overridden by:
modules/empikmarketplace/views/PrestaShop/Admin/Product/CatalogPage/Lists/list.html.twigmodules/empikmarketplace/views/PrestaShop/Admin/Product/CatalogPage/Lists/products_table.html.twig
Development Workflow
CSS/SCSS
Use the VSCode Live Sass Compiler extension. It watches on launch (configured in .vscode/settings.json) and compiles SCSS to compressed CSS with sourcemaps and autoprefixing automatically on save.
Main file to edit: themes/InterBlue/assets/css/custom.scss
Deployment
Files are deployed to production via FTP using the SFTP/FTP Sync VSCode extension (configured in .vscode/ftp-kr.json). Upload is not automatic on save — files must be manually synced.
PrestaShop Cache
After modifying PHP classes, overrides, or templates, PrestaShop's cache must be cleared from the admin panel: Advanced Parameters → Performance → Clear cache, or by deleting var/cache/ on the server.
When creating or modifying overrides, PrestaShop also needs to rebuild the class index (var/cache/*/class_index.php).
Key Conventions
- All custom module display strings use
$this->l('...')for translation support (Polish locale is primary). - Override classes extend
*Core(e.g.,class Order extends OrderCore). - Module DB tables use
_DB_PREFIX_constant (typicallyps_). - PrestaShop hooks are the integration point — prefer hooks over direct core edits.
- The
admin658c34/directory is the custom admin panel path (security through obscurity).
Custom Assistant Command
- If the user writes
zapisz-changelog, create or update monthly changelog filechangelog/YYYY-MM-DD.md(based on current date). - Add an entry for the current day with a concise summary of code changes made in the current session.
- Include touched file paths and relevant line references where possible.