Getting Started with sCommerce
This guide will help you install and configure sCommerce for your Evolution CMS project.
Prerequisites
Before installing sCommerce, ensure you have:
- Evolution CMS 3.7+
 - PHP 8.3+
 - Composer 2.2+
 - One of the supported databases: MySQL 8.0+ / MariaDB 10.5+ / PostgreSQL 10+ / SQLite 3.25+
 
Installation
Step 1: Update Composer and Install
Navigate to your Evolution CMS core directory, update composer and install sCommerce:
cd core
composer update
php artisan package:installrequire seiger/scommerce "*"
Step 2: Publish Assets
Publish the package assets and configuration:
php artisan vendor:publish --tag=scommerce
Step 3: Run Migrations
Create the necessary database tables:
php artisan migrate
Basic Configuration
Step 1: Access Admin Panel
- Log in to your Evolution CMS manager
 - Navigate to Модулі → sCommerce
 - You should see the sCommerce dashboard
 
Step 2: Create Your First Category
- Go to Products → Categories
 - Click Add Category
 - Fill in the category details:
- Name: Category name (e.g., "Electronics")
 - Alias: URL-friendly name (e.g., "electronics")
 - Description: Category description
 - Parent Category: Leave empty for root category
 - Published: Check to make it visible
 
 
Step 3: Create Your First Product
- Go to Products → Products
 - Click Add Product
 - Fill in the product details:
 
Basic Information
- Name: Product name (e.g., "iPhone 15")
 - Alias: URL-friendly name (e.g., "iphone-15")
 - Description: Detailed product description
 - Short Description: Brief product summary
 - Category: Select the category you created
 
Pricing
- Regular Price: $999.00
 - Special Price: $899.00 (optional)
 - Currency: USD
 
Inventory
- SKU: Product code (e.g., "IPH15-128-BLK")
 - Stock Quantity: 100
 - Low Stock Threshold: 10
 - Track Inventory: Yes
 
SEO
- Meta Title: SEO-optimized title
 - Meta Description: SEO description
 - Keywords: Relevant keywords
 
- Click Save Product
 
Frontend Integration
Step 1: Create Product Template
Create a new template in Evolution CMS for displaying products:
<?php
// Get product data
$product = sCommerce::getProduct($_GET['product']);
if (!$product) {
    // Handle product not found
    return;
}
// Set page title
$modx->setPlaceholder('pagetitle', $product->name);
?>
<!DOCTYPE html>
<html>
<head>
    <title><?= $product->name ?></title>
    <meta name="description" content="<?= $product->meta_description ?>">
</head>
<body>
    <div class="product-details">
        <h1><?= $product->name ?></h1>
        
        <?php if ($product->images->count() > 0): ?>
            <div class="product-images">
                <?php foreach ($product->images as $image): ?>
                    <img src="<?= $image->image ?>" alt="<?= $image->alt ?>">
                <?php endforeach; ?>
            </div>
        <?php endif; ?>
        
        <div class="product-info">
            <div class="price">
                <?php if ($product->special_price): ?>
                    <span class="special-price">$<?= number_format($product->special_price, 2) ?></span>
                    <span class="regular-price">$<?= number_format($product->price_regular, 2) ?></span>
                <?php else: ?>
                    <span class="price">$<?= number_format($product->price_regular, 2) ?></span>
                <?php endif; ?>
            </div>
            
            <div class="description">
                <?= $product->description ?>
            </div>
            
            <div class="add-to-cart">
                <form method="POST" action="/cart/add">
                    <input type="hidden" name="product_id" value="<?= $product->id ?>">
                    <input type="number" name="quantity" value="1" min="1" max="<?= $product->in_stock ?>">
                    <button type="submit">Add to Cart</button>
                </form>
            </div>
        </div>
    </div>
</body>
</html>
Step 2: Create Category Template
Create a template for displaying product categories:
<?php
// Get category data
$category = sCommerce::getCategory($_GET['category']);
if (!$category) {
    // Handle category not found
    return;
}
// Get products in this category
$products = sCommerce::getProducts([
    'category' => $category->id,
    'published' => true
]);
// Set page title
$modx->setPlaceholder('pagetitle', $category->name);
?>
<!DOCTYPE html>
<html>
<head>
    <title><?= $category->name ?></title>
    <meta name="description" content="<?= $category->meta_description ?>">
</head>
<body>
    <div class="category-page">
        <h1><?= $category->name ?></h1>
        
        <?php if ($category->description): ?>
            <div class="category-description">
                <?= $category->description ?>
            </div>
        <?php endif; ?>
        
        <div class="products-grid">
            <?php foreach ($products as $product): ?>
                <div class="product-card">
                    <a href="/product/<?= $product->alias ?>">
                        <?php if ($product->images->count() > 0): ?>
                            <img src="<?= $product->images->first()->image ?>" alt="<?= $product->name ?>">
                        <?php endif; ?>
                        
                        <h3><?= $product->name ?></h3>
                        
                        <div class="price">
                            <?php if ($product->special_price): ?>
                                <span class="special-price">$<?= number_format($product->special_price, 2) ?></span>
                                <span class="regular-price">$<?= number_format($product->price_regular, 2) ?></span>
                            <?php else: ?>
                                <span class="price">$<?= number_format($product->price_regular, 2) ?></span>
                            <?php endif; ?>
                        </div>
                    </a>
                </div>
            <?php endforeach; ?>
        </div>
    </div>
</body>
</html>
Step 3: Create Cart Template
Create a template for the shopping cart:
<?php
// Get cart data
$cart = sCommerce::getCart();
// Set page title
$modx->setPlaceholder('pagetitle', 'Shopping Cart');
?>
<!DOCTYPE html>
<html>
<head>
    <title>Shopping Cart</title>
</head>
<body>
    <div class="cart-page">
        <h1>Shopping Cart</h1>
        
        <?php if ($cart->items->count() > 0): ?>
            <div class="cart-items">
                <?php foreach ($cart->items as $item): ?>
                    <div class="cart-item">
                        <div class="product-info">
                            <h3><?= $item->product->name ?></h3>
                            <p>SKU: <?= $item->product->sku ?></p>
                        </div>
                        
                        <div class="quantity">
                            <form method="POST" action="/cart/update">
                                <input type="hidden" name="item_id" value="<?= $item->id ?>">
                                <input type="number" name="quantity" value="<?= $item->quantity ?>" min="1">
                                <button type="submit">Update</button>
                            </form>
                        </div>
                        
                        <div class="price">
                            $<?= number_format($item->total, 2) ?>
                        </div>
                        
                        <div class="remove">
                            <form method="POST" action="/cart/remove">
                                <input type="hidden" name="item_id" value="<?= $item->id ?>">
                                <button type="submit">Remove</button>
                            </form>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>
            
            <div class="cart-total">
                <h3>Total: $<?= number_format($cart->total, 2) ?></h3>
                <a href="/checkout" class="checkout-btn">Proceed to Checkout</a>
            </div>
        <?php else: ?>
            <div class="empty-cart">
                <p>Your cart is empty</p>
                <a href="/products">Continue Shopping</a>
            </div>
        <?php endif; ?>
    </div>
</body>
</html>
Next Steps
Now that you have sCommerce installed and configured:
- Add more products to your catalog
 - Create additional categories to organize your products
 - Configure payment methods in the admin panel
 - Set up shipping options for your store
 - Customize the frontend templates to match your design
 - Test the shopping cart and checkout process
 
Troubleshooting
Common Issues
Products not displaying
- Check if the product is published
 - Verify the category is published
 - Clear the cache: 
php artisan cache:clear 
Cart not working
- Ensure sessions are properly configured
 - Check if the cart table exists in the database
 - Verify the cart routes are set up correctly
 
Images not loading
- Check file permissions on the uploads directory
 - Verify the image paths are correct
 - Ensure the web server can access the files
 
Getting Help
If you encounter issues:
- Check the GitHub Issues
 - Join the GitHub Discussions
 - Review the Developer Guide for advanced configuration
 
What's Next?
- Developer Guide - Advanced configuration and customization
 - Admin Guide - Managing your store through the admin panel