Я недавно реализовывал такую фичу для магазина <!-- m -->http://vkorobke.lg.ua<!-- m -->Решение простое: добавляем на страницу JS-функцию (у меня она называется "buyProduct"):<script type="text/javascript">function buyProduct(id){ $.ajax({ type: 'post', url: 'index.php?route=module/cart/callback', dataType: 'html', data: 'product_id='+id+'&quantity=1', success: function (html) { $('#module_cart .middle').html(html); }, complete: function () { var image = $('#image'+id).offset(); var cart = $('#module_cart').offset(); $('#image'+id).before('<img src="' + $('#image'+id).attr('src') + '" id="temp" style="position: absolute; top: ' + image.top + 'px; left: ' + image.left + 'px;" />'); params = { top : cart.top + 'px', left : cart.left + 'px', opacity : 0.0, width : $('#module_cart').width(), heigth : $('#module_cart').height() }; $('#temp').animate(params, 'slow', false, function () { $('#temp').remove(); }); } }); }</script>в нужном нам контроллере (для главной страницы это /catalog/controller/common/home.php) находим место, где в шаблон передаётся массив товаров и добавляем передачу идентификатора:$this->data['products'][] = array( 'id' => $result['product_id'], /*это та самая строчка*/ 'name' => $result['name'], 'model' => $result['model'], 'rating' => $rating, 'stars' => sprintf($this->language->get('text_stars'), $rating), 'thumb' => image_resize($image, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')), 'price' => $price, 'special' => $special, 'href' => $this->model_tool_seo_url->rewrite($this->url->http('product/product&product_id=' . $result['product_id'])));и добавляем в шаблон саму кнопку покупки, которая вызывает нашу функцию:[url="#"]);return false;" id="add_to_cart<?php echo $products[$j]['id']; ?>" class="buy">[/url]Ну и что бы работала анимация к атрибуту "id" изображений товаров дописываем наш идентификатор: id="image<?php echo $products[$j]['id']; ?>"и работает :shock: