Продолжая тему расширения функционала магазина, реализованного на движке Симпла. Программный код реализован под вторую версию системы, но логика, заложенная в код применима и к первой версии движка.

Благодаря тому, что автор системы разделил систему на ядро и отображение мы можем достаточно безболезненно внести правки в код.
Итак, открываем файл view/ProductView.php и в районе 144 строки находим код

143
144
$this->design->assign('related_products', $related_products);
}

И сразу после закрывающей скобки добавить систему генерации связанных товаров из той же категории, что и сам товар

145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
else { // генерируемые связанные товары
    $products->categories = $this->categories->get_categories(array('product_id'=>$product->id)); 
    $category = reset($products->categories);
 
    $related_products = array();
    $after = false;
 
    $products = $this->products->get_products(array('category_id' => $category->id, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));
 
    foreach($products as $p)
    {
        if($after && count($related_products) < 6)
            $related_products[$p->id] = $p;
        elseif($p->id == $product->id)
            $after = true;
    }
 
    if(count($related_products) < 6)
        foreach($products as $p)
            if($p->id != $product->id && count($related_products) < 6)
                $related_products[$p->id] = $p;
            else break;  
 
    $related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products)));
    foreach($related_products_images as $related_product_image)
        if(isset($related_products[$related_product_image->product_id]))
            $related_products[$related_product_image->product_id]->images[] = $related_product_image;
    $related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true));
    foreach($related_products_variants as $related_product_variant)
    {
        if(isset($related_products[$related_product_variant->product_id]))
        {
            $related_product_variant->price *= (100-$discount)/100;
            $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
        }
    }
    foreach($related_products as $r)
    {
        $r->image = &$r->images[0];
        $r->variant = &$r->variants[0];
    }
    $this->design->assign('related_products', $related_products);
} // end: генерируемые связанные товары

Логика заключается в том, что мы выбираем весь товары из категории (в скрипте есть ограничение в 100, если у Вас больше — увеличьте на предполагаемых длину). Скрипт выбирает связанный товар (6 штук), которые идут после данного товара. При достижении конца списка скрипт добирает нехватку ихз начала списка. Таким образом список связанных товар фиксированный до тех пока не внесут изменения в каталог.
P.S. Как обычно реквизиты для «благодарностей» справа — надо же как-то развивать систему.

Опубликовать в Яндекс
Опубликовать в Facebook
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в LiveJournal
Опубликовать в Google Plus
Опубликовать в Google Buzz