mhinspeya / outfitbundles
The Outfit Bundles extension enables merchants to create and manage complete outfit collections using a dedicated Outfits category structure. Administrators can create outfit categories, assign multiple products, and upload outfit images through the Magento Admin Panel. On the storefront, customers
Package info
git.modehaus.de/hyvae/outfitbundles
Type:magento2-module
pkg:composer/mhinspeya/outfitbundles
Requires
- mhinspeya/backend-mod: ^1.0
Suggests
- mhinspeya/backend-mod: Support Configuration
README
``mhinspeya/module-outfitsbundles``
- Main Functionalities
- Features
- Installation
- Configuration
- Usage
- Technical Specifications
- Attributes
- API Endpoints
- Translations
- Troubleshooting
Main Functionalities
MHinspeya Outfits & Bundles is a powerful Magento 2 merchandising extension that enables store owners to organize, display, and sell curated lookbooks using native Magento category structures.
How It Works:
- Category Hierarchy:
- A main root Outfits category is created in the catalog.
- Under this main category, subcategories are created to represent individual Outfits (e.g., "Casual Winter Look", "Summer Beach Outfit").
- Product & Asset Assignment:
- Merchants assign the constituent products to each outfit subcategory.
- Up to 5 custom lookbook images, a vertical banner image, and promotional videos are assigned to showcase the complete look.
- One-Click Multi-Size Checkout (FE):
- On the storefront, customers browse the outfit and its component products.
- Customers can select specific sizes/options for each item individually.
- With a single click of the Shopping cart button, all selected items with their respective sizes are added to the cart simultaneously.
Features
1. Outfit Category Management
- Assign a dedicated category for outfit collections
- Automatic child category detection
- Multi-store view support
2. Picalike AI Integration
- Configure Picalike API URL and key
- Set product recommendation limits
- Automatic similar product fetching
- Cron-based data synchronization
3. Enhanced Add to Cart
- Multi-item cart addition: Add multiple outfit items in one click
- Stock tracking: Real-time out-of-stock detection
- Detailed feedback: Shows exactly how many items were added, out of stock, or skipped
- Error handling: Graceful handling of product availability issues
Example response:
{
"status": "success",
"message": "2 of 3 item(s) added to cart. 1 item(s) out of stock: Blue Shirt",
"added_count": 2,
"out_of_stock_count": 1,
"skipped_count": 0
}
4. CMS Block Automation
- Generate CMS blocks for outfit categories
- Update main outfit category landing page
- Customizable block content
5. Display Customization
- Button color configuration
- Text color settings
- Font size and letter spacing
- Custom font family support
6. Product Status Management
- Enable/Disable individual outfit products
- Bulk status updates
- Position/sorting management
Installation
* = in production please use the --keep-generated option
Type 1: Zip file
- Unzip the zip file in
app/code/MHinspeya - Enable the module by running
php bin/magento module:enable MHinspeya_OutfitsBundles - Apply database updates by running
php bin/magento setup:upgrade* - Compile dependency injection by running
php bin/magento setup:di:compile* - Deploy static content by running
php bin/magento setup:static-content:deploy* - Flush the cache by running
php bin/magento cache:flush
Type 2: Composer
- Make the module available in a composer repository for example:
- private repository
repo.magento.com - public repository
packagist.org - public github repository as vcs
- private repository
- Add the composer repository to the configuration by running
composer config repositories.repo.magento.com composer https://repo.magento.com/ - Install the module composer by running
composer require mhinspeya/module-outfitsbundles - Enable the module by running
php bin/magento module:enable MHinspeya_OutfitsBundles - Apply database updates by running
php bin/magento setup:upgrade* - Compile dependency injection by running
php bin/magento setup:di:compile* - Deploy static content by running
php bin/magento setup:static-content:deploy* - Flush the cache by running
php bin/magento cache:flush
Configuration
Navigate to Stores > Configuration > MHinspeya > Outfits & Bundles
General Settings
Outfit Category
- Select the parent category for outfit collections
- All child categories will be used for outfit grouping
Picalike Configuration
Activate Picalike
- Enable/Disable Picalike integration
- Default: Disabled
Picalike API URL
- Enter your Picalike API endpoint
- Example:
https://api.picalike.com/recommend
Picalike Key
- Your Picalike API authentication key
Product Limit
- Maximum number of similar products to fetch
- Default: 10
Display Settings
Button Color
- Hex color code for buttons
- Example:
#000000
Text Color
- Hex color code for button text
- Example:
#FFFFFF
Font Size
- Button font size in pixels
- Recommended: 10px
Letter Spacing
- Button letter spacing in pixels
- Recommended: 2px
Font Family
- Custom font family name
- Example:
avantgarde-gothic-std-regular
CMS Block Management
Create Outfit CMS Blocks
- Click button to generate CMS blocks for all outfit categories
- Automatically creates blocks with category content
Assign Main Page Outfits
- Update the main outfit category landing page
- Select CMS block for outfit main page
Automation
Generate Picalike Automatically
- Enable automatic Picalike data generation via cron
- Runs scheduled tasks to update similar products
Generate Outfit CMS Blocks Automatically
- Enable automatic CMS block generation via cron
Usage
Frontend Display
The module provides two main frontend templates:
Outfit List Template (
outfitspicalikebundles.phtml)- Displays all outfits in a category
- AJAX-based loading
- Error handling for missing outfits
Outfit Detail Template (
outfitdetailtemplate.phtml)- Shows individual outfit with similar products
- Size selection
- Multi-item add to cart
- Stock availability display
Admin Management
Navigate to: Outfits & Bundles > OutfitsBundles Products
Grid Features:
- View all outfit products
- Filter by status, category, product ID
- Bulk actions: Enable/Disable
- Edit individual products
- Position management
Product Fields:
- Product ID
- Main Product ID
- Product Name
- Product Status (Enable/Disable)
- Product Quantity
- Product Price
- Special Price
- Position
Technical Specifications
Database Tables
mhinspeya_outfitsbundles_outfitsbundles_products
- Stores outfit product relationships
- Links main products with similar products
- Manages product metadata (images, prices, status)
mhinspeya_outfitsbundles_outfitsbundles_picalike
- Stores Picalike configuration data
- Manages API responses
Cron Jobs
outfitsbundles_genratepicalike
- Frequency: Configurable
- Function: Fetches Picalike data for all outfit products
- Updates similar product recommendations
outfitsbundles_productdata_cron
- Frequency: Configurable
- Function: Synchronizes product data
- Updates prices, stock, and metadata
Type Safety
The module is fully type-safe with PHP 7.4+ strict typing:
- All method parameters have type declarations
- Return types are explicitly defined
- Proper type casting for database values
- Exception handling with typed exceptions
Attributes
Category Attributes
bundle_product (bundle_product)
- Type: Yes/No
- Scope: Store View
- Used to mark categories as outfit categories
Outfit Images (5 custom image fields)
outfit_image_1throughoutfit_image_5- Type: Image
- Scope: Store View
Vertical Image Outfit (vertical_image_outfit)
- Type: Image
- Scope: Store View
Video URL (videourl)
- Type: Text
- Scope: Store View
- Stores video URL for outfit display
API Endpoints
AJAX Endpoints
Add to Cart
- URL:
/outfitsbundles/ajax/addtocart - Method: POST
- Content-Type: application/json
- Request Body:
{ "addtocart": [ [main_product_id, option_value, super_attribute_id], [main_product_id, option_value, super_attribute_id] ] } - Response:
{ "status": "success|error", "message": "Detailed message", "added_count": 2, "out_of_stock_count": 1, "skipped_count": 0 }
Category Data
- URL:
/outfitsbundles/ajax/category?category_id={id} - Method: GET
- Returns: Category info and main products
Related Products
- URL:
/outfitsbundles/ajax/related?outfitcat_id={id} - Method: GET
- Returns: All outfit products with sizes and pricing
Translations
The module includes complete German translations for:
- de_DE (German - Germany)
- de_AT (German - Austria)
- de_CH (German - Switzerland)
Total translation entries: 119
All user-facing messages are translatable, including:
- Admin interface labels
- Frontend messages
- Error messages
- Success notifications
- Add to cart feedback
Troubleshooting
Common Issues
1. Picalike data not loading
- Verify Picalike configuration is activated
- Check API URL and key are correct
- Review cron job execution logs
- Check
var/log/outfitcollection.log
2. Products not appearing in frontend
- Ensure products are marked as "Enable" in admin grid
- Verify outfit category is correctly configured
- Check product stock status
- Clear cache:
php bin/magento cache:flush
3. Add to cart not working
- Check browser console for JavaScript errors
- Verify AJAX endpoint is accessible
- Ensure products are configurable type
- Check size attributes are properly configured
4. CMS blocks not generating
- Verify outfit category has child categories
- Check admin user permissions
- Review system.log for errors
- Ensure store view is properly configured
5. Type errors after upgrade
- Run:
php bin/magento setup:di:compile - Clear generated files:
rm -rf generated/* - Deploy static content:
php bin/magento setup:static-content:deploy
Debug Mode
Enable debug logging by checking:
var/log/outfitcollection.log- Picalike operationsvar/log/system.log- General errorsvar/log/exception.log- Exception traces
Support
For issues or feature requests, please contact MHinspeya support.
Version: 1.0.0
Magento Compatibility: 2.4.x
PHP Version: 7.4+
License: Proprietary