Download the PHP package orangecat/module-product-lists without Composer

On this page you can find all versions of the php package orangecat/module-product-lists. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package module-product-lists

Orangecat_ProductLists

Saved product lists (order templates) for logged-in B2B customers — create, manage, and reorder from named lists.

Module: Orangecat_ProductLists Version: 1.0.0 License: OSL-3.0 Author: Oliverio Gombert [email protected]


Table of Contents

  1. Overview
  2. Theme Compatibility
  3. Requirements
  4. Installation
  5. What Gets Installed
  6. Configuration
  7. Store Admin Guide
  8. Buyer Guide
  9. Developer Guide
  10. REST API
  11. Frontend Routes Reference
  12. DevOps & Integrator Notes

Overview

Orangecat_ProductLists lets logged-in customers maintain multiple named product lists — essentially saved order templates. Each list holds products with their configured options (color, size, etc.) and quantities, which can be added to cart in one click.

The module handles:

Position in the Orangecat B2B Dependency Chain

Orangecat_ProductLists is independent of Orangecat_Company. It works for any logged-in customer, whether they belong to a company or not.

The buy_request Field

Each product_list_item row stores a buy_request JSON blob — the same data structure Magento uses for cart line items. This preserves the full configurable option selection (e.g. {"super_attribute":{"93":52,"142":167},"qty":2}). ProductListItem::getBuyRequestObject() deserializes this blob into a DataObject ready to pass to Cart::addProduct(), overriding the stored qty with the item's dedicated qty column.


Theme Compatibility

Theme Status Notes
Luma Supported Standard .phtml templates. add-to-list button injected into PDP (product.info.addto), PLP (category.product.addto), related, and upsell blocks. List selector is a jQuery modal (addto.phtml + productlists_addto.js). Less CSS from web/css/source/_module.less.
Breeze Evolution Supported Same templates and JS as Luma — Breeze bundles them via breeze_default.xml. Additional Less from web/css/breeze/_default.less.
Hyvä Supported Alpine.js templates (-hyva.phtml). hyva_* layout handles active. hyva_default.xml removes the Luma modal block. PLP uses a dedicated Hyvä modal component (list-modal-hyva.phtml) registered as a JS block dependency. CSS from web/css/hyva/module.css and view/frontend/tailwind/tailwind-source.css.

Hyvä templates follow the view/frontend/templates/ convention (not view/hyva/).


Requirements

Dependency Version / Notes
Magento 2.4.x Tested on 2.4.8-p5
PHP >= 8.1
orangecat/core Composer dependency
Magento_Customer Customer session
Magento_Catalog Product repository
Magento_Checkout Cart model
Magento_ConfigurableProduct Configurable option resolution

Installation

Via Git Submodule (recommended for this project)

Enable the Module

Run inside the PHP container (reward shell):


What Gets Installed

Database Tables

product_list

Column Type Notes
list_id int unsigned Primary key, auto-increment
customer_id int unsigned FK → customer_entity.entity_id (CASCADE DELETE)
list_name varchar(255) Default: "Main"
description text Optional list description, nullable
created_at timestamp Set on insert, not updated

Index on customer_id. Deleting a customer cascades to all their lists.

product_list_item

Column Type Notes
item_id int unsigned Primary key, auto-increment
list_id int unsigned FK → product_list.list_id (CASCADE DELETE)
product_id int unsigned Catalog product entity ID
qty decimal(12,4) Default: 1
buy_request text JSON blob with configurable options and qty
added_at timestamp Set on insert, not updated

Indexes on list_id and product_id. Deleting a list cascades to all its items.

EAV Attributes

None.

Data Patches

None. No default records, roles, or CMS pages are created.


Configuration

Path: Stores > Configuration > Orangecat > Product List

General Settings

Label Config path Default Description
Enable Product List productlists/general/enable_productlists No Master switch. When disabled, the "My Lists" nav link is hidden and all frontend routes become inaccessible.
Enable Ajax Product List productlists/general/enable_ajaxwishlist No When enabled, clicking "Add to List" silently posts via AJAX without page reload.

Both settings are configurable at Default, Website, and Store view scope.


Store Admin Guide

There is no Admin UI for managing individual product lists or customer list items. Lists are owned and managed entirely by customers via the frontend.

Admin access is limited to:

To grant a role access to the configuration section, assign the ACL resource Orangecat_ProductLists::config (visible under Stores > Settings > Configuration).


Buyer Guide

Accessing My Lists

After logging in, navigate to Account Dashboard > My Lists or go directly to:

The "My Lists" link appears in the customer account sidebar when Enable Product List is set to Yes.

Creating a List

From the My Lists page, click Add List. Enter a name and optional description in the modal dialog, then save.

Adding Products to a List

From a product listing page (PLP) or product detail page (PDP):

Click the Add to List button. If multiple lists exist, a modal appears to select the target list or create a new one inline. For configurable products, the required options (size, color, etc.) must be selected first — an error is shown if they are not.

If only one list exists and AJAX mode is enabled, the product is added silently.

Duplicate handling: Adding the same product with the same option selection to a list increments the existing item's quantity rather than creating a duplicate row.

Viewing a List

Click any list name from My Lists to open its detail page:

The detail page shows product thumbnails, names, configured options, unit prices, and a quantity field per item. A search box filters items by product name within the list.

Updating Quantities

Edit the quantity field for any item on the list detail page and click Update to save all changes at once.

Removing Items

Click Remove next to any item to delete it from the list immediately.

Adding to Cart

From the list detail page:

After a successful add, the browser redirects to the cart.

Exporting a List

From the list detail page, click Export to download a CSV file with columns: SKU, Price, Qty, Name, Options, URL.

Deleting a List

From My Lists, click Delete next to a list. A confirmation dialog is shown. Deleting a list permanently removes it and all its items.


Developer Guide

Module Structure

Key Interfaces

ConfigInterface

ProductListsProviderInterface

ProductListInterface

ProductListItemInterface

Observers

This module registers no observers. There is no etc/events.xml.

Plugins

Class Target Hook Purpose
Plugin\WishlistAddAction Magento\ProductLists\Controller\Index\Add around Validates configurable options are selected before add; returns AJAX-friendly JSON when ajax=1. Note: the target class name Magento\ProductLists is non-standard — verify it resolves correctly in your Magento installation.

JS Components

Frontend

File Purpose
js/productlists.js My Lists dashboard — creates/edits lists via AJAX modal, deletes with confirmation dialog, DOM-only row removal on delete
js/productlists_addto.js Add-to-List button behavior — list selector modal, new-list creation inline, configurable option validation (select dropdowns and swatch options), AJAX add mode

Both components use RequireJS AMD format and work on Luma and Breeze. Hyvä uses Alpine.js templates instead.

Admin JS

None.

Email Templates

This module sends no transactional emails. There are no email template files.

ACL Resources

Resource ID Title Location
Orangecat_ProductLists::config Multi Wishlist Stores > Settings > Configuration

Adding Custom Logic


REST API

This module exposes no REST API endpoints. There is no etc/webapi.xml.


Frontend Routes Reference

Route ID: product_lists (front name: product_lists)

Route Controller Method Access
/product_lists/index/index Controller\Index\Index GET Logged-in customers only
/product_lists/index/view?list_id=N Controller\Index\View GET Logged-in owner of the list
/product_lists/index/export?list_id=N Controller\Index\Export GET Logged-in owner of the list
/product_lists/item/add Controller\Item\Add POST Logged-in customers only
/product_lists/item/remove Controller\Item\Remove POST Logged-in owner of the item
/product_lists/item/update Controller\Item\Update POST Logged-in owner of the list
/product_lists/item/addall Controller\Item\AddAll POST Logged-in owner of the list
/product_lists/item/addselected Controller\Item\AddSelected POST Logged-in owner of the list
/product_lists/productlists/get Controller\Productlists\Get GET (AJAX only) Logged-in customers only
/product_lists/productlists/update Controller\Productlists\Update GET/POST (AJAX only) Logged-in customers only
/product_lists/productlists/delete Controller\Productlists\Delete POST (AJAX only) Logged-in owner of the list

All ownership checks are enforced by filtering collections on both customer_id and the requested entity ID — no separate authorization layer is needed.


DevOps & Integrator Notes

Deployment Checklist

Integration Token Scope

This module has no REST API. No integration token permissions are required to consume it. Direct database access to product_list / product_list_item requires no ACL resource.

For Admin panel config access, grant Orangecat_ProductLists::config.

Disabling Without Uninstalling

Disabling hides the "My Lists" nav link (ifconfig guard on the layout block) and stops all frontend routes from resolving, but leaves the database tables and data intact.

Data Integrity Notes


All versions of module-product-lists with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
magento/framework Version *
orangecat/core Version *
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package orangecat/module-product-lists contains the following files

Loading the files please wait ...