-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
🧩 Product Collections Admin Page
📄 Overview
This feature introduces a new admin page within Magento's backend to manage Builder.io Product Collections. It allows content managers to define dynamic product feeds based on specific criteria (Category, SKU, Condition), which Builder.io can consume via a REST API to build rich content like product carousels.
📁 Location in Admin Panel
Menu Path:
Content > Builder IO > Products
📊 Admin Grid: "Product Collections"
Functionality
- Display a grid of existing Product Collections
- Actions:
Add NewEditDelete
- Columns:
- Collection Name
- Type (Category / SKU / Condition)
- Product Count
- Collection URL
- Status (Active/Inactive)
- Date Created / Date Updated
➕ Add/Edit Product Collection Form
Fields
-
Collection Name
- Text input (required)
-
Collection Type
- Options:
- Category
- SKU
- Condition (Attribute-based logic)
- Options:
-
Type-Specific Configuration
A. Category
- Select Category (dropdown with tree structure)
- Sort By: Dropdown (
Price,Name,Newest,Best Sellers,Random) - Limit: Integer input for number of products to return
B. SKU
- Input field for comma-separated SKUs (e.g.
SKU123,SKU456) - Validation to ensure SKUs exist
C. Condition
- Use Magento Condition Builder
- Allow attribute-based logic (e.g. brand = "Nike" AND price < 100)
🧮 Product Count Preview
- Display the number of products matching the current selection
- Recalculate on field change
🌐 Dynamic Collection URL
- Auto-generated and displayed once saved
- Read-only field
- Format:
/rest/V1/builderio/collections/{collection_id or slug}
📦 API Response Structure
The endpoint will return a list of products in JSON format, suitable for use in Builder.io:
{
"products": [
{
"id": 123,
"sku": "SKU123",
"name": "Product Name",
"price": 99.99,
"image": "https://example.com/media/catalog/product/image.jpg",
"url": "https://example.com/product-url"
// ... other necessary product data
}
],
"count": 12
}- Only enabled and visible products will be returned
- Results should be cacheable (e.g. with Varnish) with a TTL of 1 hour
builderio_collections (
id INT PRIMARY KEY,
name VARCHAR,
type ENUM('category','sku','condition'),
config JSON,
product_count INT,
url_key VARCHAR,
is_active BOOLEAN,
created_at DATETIME,
updated_at DATETIME
)