moovix

OpenCart: всплывающее уведомление о добавлении товара в корзину

Moovix » Блог » OpenCart: всплывающее уведомление о добавлении товара в корзину
В принципе это можно сделать для любого движка, но об этом я напишу позже, т.к. сейчас у нас исключительно OpenCart 2.x Выглядеть в итоге это будет примерно так:

В принципе это можно сделать для любого движка, но об этом я напишу позже, т.к. сейчас у нас исключительно OpenCart 2.x

Выглядеть в итоге это будет примерно так:

  1.  в default/template/product/category.tpl добавляем перед footer код:

Товар добавлен в корзину!

Перейти в корзину   или   Продолжить покупки

2. в default/template/product/product.tpl добавляем перед footer код:

Товар добавлен в корзину!

Перейти в корзину   или   Продолжить покупки

.modal-content — является стилем диалогового окна, может быть любым

3. Содержимое файлов такое

  • catalog/controller/product/category.php
				
					load->language('product/category');		$this->load->model('catalog/category');		$this->load->model('catalog/product');		$this->load->model('tool/image');		if (isset($this->request->get['filter'])) {			$filter = $this->request->get['filter'];		} else {			$filter = '';		}		if (isset($this->request->get['sort'])) {			$sort = $this->request->get['sort'];		} else {			$sort = 'p.sort_order';		}		if (isset($this->request->get['order'])) {			$order = $this->request->get['order'];		} else {			$order = 'ASC';		}		if (isset($this->request->get['page'])) {			$page = $this->request->get['page'];		} else {			$page = 1;		}		if (isset($this->request->get['limit'])) {			$limit = $this->request->get['limit'];		} else {			$limit = $this->config->get('config_product_limit');		}		$data['breadcrumbs'] = array();		$data['breadcrumbs'][] = array(			'text' => $this->language->get('text_home'),			'href' => $this->url->link('common/home')		);		if (isset($this->request->get['path'])) {			$url = '';			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$path = '';			$parts = explode('_', (string)$this->request->get['path']);			$category_id = (int)array_pop($parts);			foreach ($parts as $path_id) {				if (!$path) {					$path = (int)$path_id;				} else {					$path .= '_' . (int)$path_id;				}				$category_info = $this->model_catalog_category->getCategory($path_id);				if ($category_info) {					$data['breadcrumbs'][] = array(						'text' => $category_info['name'],						'href' => $this->url->link('product/category', 'path=' . $path . $url)					);				}			}		} else {			$category_id = 0;		}		$category_info = $this->model_catalog_category->getCategory($category_id);		if ($category_info) {			$this->document->setTitle($category_info['meta_title']);			$this->document->setDescription($category_info['meta_description']);			$this->document->setKeywords($category_info['meta_keyword']);		 			$data['heading_title'] = $category_info['name'];			$data['text_refine'] = $this->language->get('text_refine');			$data['text_empty'] = $this->language->get('text_empty');			$data['text_quantity'] = $this->language->get('text_quantity');			$data['text_manufacturer'] = $this->language->get('text_manufacturer');			$data['text_model'] = $this->language->get('text_model');			$data['text_price'] = $this->language->get('text_price');			$data['text_tax'] = $this->language->get('text_tax');			$data['text_points'] = $this->language->get('text_points');			$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));			$data['text_sort'] = $this->language->get('text_sort');			$data['text_limit'] = $this->language->get('text_limit');			$data['button_cart'] = $this->language->get('button_cart');			$data['button_wishlist'] = $this->language->get('button_wishlist');			$data['button_compare'] = $this->language->get('button_compare');			$data['button_continue'] = $this->language->get('button_continue');			$data['button_list'] = $this->language->get('button_list');			$data['button_grid'] = $this->language->get('button_grid');			// Set the last category breadcrumb			$url = '';			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['breadcrumbs'][] = array(				'text' => $category_info['name'],				'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'])			);			if ($category_info['image']) {				$data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));			} else {				$data['thumb'] = '';			}			$data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');			$data['compare'] = $this->url->link('product/compare');			$url = '';			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['categories'] = array();			$results = $this->model_catalog_category->getCategories($category_id);			foreach ($results as $result) {				$filter_data = array(					'filter_category_id'  => $result['category_id'],					'filter_sub_category' => true				);				$data['categories'][] = array(					'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)				);			}			$data['products'] = array();			$filter_data = array(				'filter_category_id' => $category_id,				'filter_filter'      => $filter,				'sort'               => $sort,				'order'              => $order,				'start'              => ($page - 1) * $limit,				'limit'              => $limit			);			$product_total = $this->model_catalog_product->getTotalProducts($filter_data);			$results = $this->model_catalog_product->getProducts($filter_data);			foreach ($results as $result) {				if ($result['image']) {					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));					$image_big = $this->model_tool_image->resize($result['image'], round($this->config->get('config_image_product_width')*2), round($this->config->get('config_image_product_height')*2)); // this line popup				} else {					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));					$image_big = $this->model_tool_image->resize('placeholder.png', round($this->config->get('config_image_product_width')*2), round($this->config->get('config_image_product_height')*2)); // this line popup				}				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));				} else {					$price = false;				}				if ((float)$result['special']) {					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));				} else {					$special = false;				}				if ($this->config->get('config_tax')) {					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);				} else {					$tax = false;				}				if ($this->config->get('config_review_status')) {					$rating = (int)$result['rating'];				} else {					$rating = false;				}				$data['products'][] = array(					'product_id'  => $result['product_id'],					'thumb'       => $image,					'big_img'       => $image_big, // this line popup					'name'        => $result['name'],					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',					'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),					'price'       => $price,					'special'     => $special,					'tax'         => $tax,					'rating'      => $result['rating'],					'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)				);			}			$url = '';			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['sorts'] = array();			$data['sorts'][] = array(				'text'  => $this->language->get('text_default'),				'value' => 'p.sort_order-ASC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)			);			$data['sorts'][] = array(				'text'  => $this->language->get('text_name_asc'),				'value' => 'pd.name-ASC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)			);			$data['sorts'][] = array(				'text'  => $this->language->get('text_name_desc'),				'value' => 'pd.name-DESC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)			);			$data['sorts'][] = array(				'text'  => $this->language->get('text_price_asc'),				'value' => 'p.price-ASC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)			);			$data['sorts'][] = array(				'text'  => $this->language->get('text_price_desc'),				'value' => 'p.price-DESC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)			);			if ($this->config->get('config_review_status')) {				$data['sorts'][] = array(					'text'  => $this->language->get('text_rating_desc'),					'value' => 'rating-DESC',					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)				);				$data['sorts'][] = array(					'text'  => $this->language->get('text_rating_asc'),					'value' => 'rating-ASC',					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)				);			}			$data['sorts'][] = array(				'text'  => $this->language->get('text_model_asc'),				'value' => 'p.model-ASC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url)			);			$data['sorts'][] = array(				'text'  => $this->language->get('text_model_desc'),				'value' => 'p.model-DESC',				'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url)			);			$url = '';			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			$data['limits'] = array();			$limits = array_unique(array($this->config->get('config_product_limit'), 25, 50, 75, 100));			sort($limits);			foreach($limits as $value) {				$data['limits'][] = array(					'text'  => $value,					'value' => $value,					'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value)				);			}			$url = '';			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$pagination = new Pagination();			$pagination->total = $product_total;			$pagination->page = $page;			$pagination->limit = $limit;			$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');			$data['pagination'] = $pagination->render();			 			if ($pagination->limit && ceil($pagination->total / $pagination->limit) > $pagination->page) {				$this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page=' . ($pagination->page + 1)), 'next');			}			if ($pagination->page > 1) {				$this->document->addLink($this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page=' . ($pagination->page - 1)), 'prev');			}			$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));			$data['sort'] = $sort;			$data['order'] = $order;			$data['limit'] = $limit;			$data['continue'] = $this->url->link('common/home');			$data['column_left'] = $this->load->controller('common/column_left');			$data['column_right'] = $this->load->controller('common/column_right');			$data['content_top'] = $this->load->controller('common/content_top');			$data['content_bottom'] = $this->load->controller('common/content_bottom');			$data['footer'] = $this->load->controller('common/footer');			$data['header'] = $this->load->controller('common/header');			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {				$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));			} else {				$this->response->setOutput($this->load->view('default/template/product/category.tpl', $data));			}		} else {			$url = '';			if (isset($this->request->get['path'])) {				$url .= '&path=' . $this->request->get['path'];			}			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['breadcrumbs'][] = array(				'text' => $this->language->get('text_error'),				'href' => $this->url->link('product/category', $url)			);			$this->document->setTitle($this->language->get('text_error'));			$data['heading_title'] = $this->language->get('text_error');			$data['text_error'] = $this->language->get('text_error');			$data['button_continue'] = $this->language->get('button_continue');			$data['continue'] = $this->url->link('common/home');			$this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');			$data['column_left'] = $this->load->controller('common/column_left');			$data['column_right'] = $this->load->controller('common/column_right');			$data['content_top'] = $this->load->controller('common/content_top');			$data['content_bottom'] = $this->load->controller('common/content_bottom');			$data['footer'] = $this->load->controller('common/footer');			$data['header'] = $this->load->controller('common/header');			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {				$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));			} else {				$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));			}		}	}}
				
			
  • catalog/controller/product/product.php
				
					load->language('product/product');		$data['breadcrumbs'] = array();		$data['breadcrumbs'][] = array(			'text' => $this->language->get('text_home'),			'href' => $this->url->link('common/home')		);					 		 		$this->load->model('catalog/category');		if (isset($this->request->get['path'])) {			$path = '';			$parts = explode('_', (string)$this->request->get['path']);			$category_id = (int)array_pop($parts);			foreach ($parts as $path_id) {				if (!$path) {					$path = $path_id;				} else {					$path .= '_' . $path_id;				}				$category_info = $this->model_catalog_category->getCategory($path_id);				if ($category_info) {					$data['breadcrumbs'][] = array(						'text' => $category_info['name'],						'href' => $this->url->link('product/category', 'path=' . $path)					);				}			}			// Set the last category breadcrumb			$category_info = $this->model_catalog_category->getCategory($category_id);			if ($category_info) {				$url = '';				if (isset($this->request->get['sort'])) {					$url .= '&sort=' . $this->request->get['sort'];				}				if (isset($this->request->get['order'])) {					$url .= '&order=' . $this->request->get['order'];				}				if (isset($this->request->get['page'])) {					$url .= '&page=' . $this->request->get['page'];				}				if (isset($this->request->get['limit'])) {					$url .= '&limit=' . $this->request->get['limit'];				}				$data['breadcrumbs'][] = array(					'text' => $category_info['name'],					'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url)				);			}		}		$this->load->model('catalog/manufacturer');		if (isset($this->request->get['manufacturer_id'])) {			$data['breadcrumbs'][] = array(				'text' => $this->language->get('text_brand'),				'href' => $this->url->link('product/manufacturer')			);			$url = '';			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']);			if ($manufacturer_info) {				$data['breadcrumbs'][] = array(					'text' => $manufacturer_info['name'],					'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url)				);			}		}		if (isset($this->request->get['search']) || isset($this->request->get['tag'])) {			$url = '';			if (isset($this->request->get['search'])) {				$url .= '&search=' . $this->request->get['search'];			}			if (isset($this->request->get['tag'])) {				$url .= '&tag=' . $this->request->get['tag'];			}			if (isset($this->request->get['description'])) {				$url .= '&description=' . $this->request->get['description'];			}			if (isset($this->request->get['category_id'])) {				$url .= '&category_id=' . $this->request->get['category_id'];			}			if (isset($this->request->get['sub_category'])) {				$url .= '&sub_category=' . $this->request->get['sub_category'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['breadcrumbs'][] = array(				'text' => $this->language->get('text_search'),				'href' => $this->url->link('product/search', $url)			);					}		if (isset($this->request->get['product_id'])) {			$product_id = (int)$this->request->get['product_id'];		} else {			$product_id = 0;		}		$this->load->model('catalog/product');		$product_info = $this->model_catalog_product->getProduct($product_id);		if ($product_info) {			$url = '';			if (isset($this->request->get['path'])) {				$url .= '&path=' . $this->request->get['path'];			}			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['manufacturer_id'])) {				$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];			}			if (isset($this->request->get['search'])) {				$url .= '&search=' . $this->request->get['search'];			}			if (isset($this->request->get['tag'])) {				$url .= '&tag=' . $this->request->get['tag'];			}			if (isset($this->request->get['description'])) {				$url .= '&description=' . $this->request->get['description'];			}			if (isset($this->request->get['category_id'])) {				$url .= '&category_id=' . $this->request->get['category_id'];			}			if (isset($this->request->get['sub_category'])) {				$url .= '&sub_category=' . $this->request->get['sub_category'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['breadcrumbs'][] = array(				'text' => $product_info['name'],				'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id'])			);			$this->document->setTitle($product_info['meta_title']);			$this->document->setDescription($product_info['meta_description']);			$this->document->setKeywords($product_info['meta_keyword']);	 			$this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js');			$this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css');			$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js');			$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');			$this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');			$data['heading_title'] = $product_info['name'];			$data['text_select'] = $this->language->get('text_select');			$data['text_manufacturer'] = $this->language->get('text_manufacturer');			$data['text_model'] = $this->language->get('text_model');			$data['text_reward'] = $this->language->get('text_reward');			$data['text_points'] = $this->language->get('text_points');			$data['text_stock'] = $this->language->get('text_stock');			$data['text_discount'] = $this->language->get('text_discount');			$data['text_tax'] = $this->language->get('text_tax');			$data['text_option'] = $this->language->get('text_option');			$data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']);			$data['text_write'] = $this->language->get('text_write');			$data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));			$data['text_note'] = $this->language->get('text_note');			$data['text_tags'] = $this->language->get('text_tags');			$data['text_related'] = $this->language->get('text_related');			$data['text_loading'] = $this->language->get('text_loading');			$data['entry_qty'] = $this->language->get('entry_qty');			$data['entry_name'] = $this->language->get('entry_name');			$data['entry_review'] = $this->language->get('entry_review');			$data['entry_rating'] = $this->language->get('entry_rating');			$data['entry_good'] = $this->language->get('entry_good');			$data['entry_bad'] = $this->language->get('entry_bad');			$data['entry_captcha'] = $this->language->get('entry_captcha');			$data['button_cart'] = $this->language->get('button_cart');			$data['button_wishlist'] = $this->language->get('button_wishlist');			$data['button_compare'] = $this->language->get('button_compare');			$data['button_upload'] = $this->language->get('button_upload');			$data['button_continue'] = $this->language->get('button_continue');			$this->load->model('catalog/review');			$data['tab_description'] = $this->language->get('tab_description');			$data['tab_attribute'] = $this->language->get('tab_attribute');			$data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']);			$data['product_id'] = (int)$this->request->get['product_id'];			$data['manufacturer'] = $product_info['manufacturer'];			$data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);			$data['model'] = $product_info['model'];			$data['upc'] = $product_info['upc'];			$data['reward'] = $product_info['reward'];			$data['points'] = $product_info['points'];			if ($product_info['quantity'] <= 0) {				$data['stock'] = $product_info['stock_status'];			} elseif ($this->config->get('config_stock_display')) {				$data['stock'] = $product_info['quantity'];			} else {				$data['stock'] = $this->language->get('text_instock');			}			$this->load->model('tool/image');			if ($product_info['image']) {				$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));			} else {				$data['popup'] = '';			}			if ($product_info['image']) {				$data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));			} else {				$data['thumb'] = '';			}			$data['images'] = array();			$results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);			foreach ($results as $result) {				$data['images'][] = array(					'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),					'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))				);			}			if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {				$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));			} else {				$data['price'] = false;			}			if ((float)$product_info['special']) {				$data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));			} else {				$data['special'] = false;			}			if ($this->config->get('config_tax')) {				$data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);			} else {				$data['tax'] = false;			}			$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);			$data['discounts'] = array();			foreach ($discounts as $discount) {				$data['discounts'][] = array(					'quantity' => $discount['quantity'],					'price'    => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))				);			}			$data['options'] = array();			foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {				$product_option_value_data = array();				foreach ($option['product_option_value'] as $option_value) {					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {						if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {							$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false));						} else {							$price = false;						}						$product_option_value_data[] = array(							'product_option_value_id' => $option_value['product_option_value_id'],							'option_value_id'         => $option_value['option_value_id'],							'name'                    => $option_value['name'],							'image'                   => $this->model_tool_image->resize($option_value['image'], 50, 50),							'price'                   => $price,							'price_prefix'            => $option_value['price_prefix']						);					}				}				$data['options'][] = array(					'product_option_id'    => $option['product_option_id'],					'product_option_value' => $product_option_value_data,					'option_id'            => $option['option_id'],					'name'                 => $option['name'],					'type'                 => $option['type'],					'value'                => $option['value'],					'required'             => $option['required']				);			}			if ($product_info['minimum']) {				$data['minimum'] = $product_info['minimum'];			} else {				$data['minimum'] = 1;			}			$data['review_status'] = $this->config->get('config_review_status');			if ($this->config->get('config_review_guest') || $this->customer->isLogged()) {				$data['review_guest'] = true;			} else {				$data['review_guest'] = false;			}			if ($this->customer->isLogged()) {				$data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName();			} else {				$data['customer_name'] = '';			}			$data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);			$data['rating'] = (int)$product_info['rating'];			$data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');			$data['upc'] = html_entity_decode($product_info['upc'], ENT_QUOTES, 'UTF-8');			$data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);			$data['products'] = array();			$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);			foreach ($results as $result) {				if ($result['image']) {					$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));					$image_big = $this->model_tool_image->resize($result['image'], round($this->config->get('config_image_product_width')*2), round($this->config->get('config_image_product_height')*2)); // this line popup				} else {					$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));					$image_big = $this->model_tool_image->resize('placeholder.png', round($this->config->get('config_image_product_width')*2), round($this->config->get('config_image_product_height')*2)); // this line popup				}				if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {					$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));				} else {					$price = false;				}				if ((float)$result['special']) {					$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));				} else {					$special = false;				}				if ($this->config->get('config_tax')) {					$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);				} else {					$tax = false;				}				if ($this->config->get('config_review_status')) {					$rating = (int)$result['rating'];				} else {					$rating = false;				}				$data['products'][] = array(					'product_id'  => $result['product_id'],					'thumb'       => $image,					'image_big'       => $image_big, // popup					'name'        => $result['name'],					'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',					'price'       => $price,					'special'     => $special,					'tax'         => $tax,					'rating'      => $rating,					'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'])				);			}			$data['tags'] = array();			if ($product_info['tag']) {				$tags = explode(',', $product_info['tag']);				foreach ($tags as $tag) {					$data['tags'][] = array(						'tag'  => trim($tag),						'href' => $this->url->link('product/search', 'tag=' . trim($tag))					);				}			}			$data['text_payment_recurring'] = $this->language->get('text_payment_recurring');			$data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']);			$this->model_catalog_product->updateViewed($this->request->get['product_id']);			$data['column_left'] = $this->load->controller('common/column_left');			$data['column_right'] = $this->load->controller('common/column_right');			$data['content_top'] = $this->load->controller('common/content_top');			$data['content_bottom'] = $this->load->controller('common/content_bottom');			$data['footer'] = $this->load->controller('common/footer');			$data['header'] = $this->load->controller('common/header');	             $data['cart'] = $this->load->controller('common/cart');					if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {				$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/product.tpl', $data));			} else {				$this->response->setOutput($this->load->view('default/template/product/product.tpl', $data));			}		} else {			$url = '';			if (isset($this->request->get['path'])) {				$url .= '&path=' . $this->request->get['path'];			}			if (isset($this->request->get['filter'])) {				$url .= '&filter=' . $this->request->get['filter'];			}			if (isset($this->request->get['manufacturer_id'])) {				$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];			}			if (isset($this->request->get['search'])) {				$url .= '&search=' . $this->request->get['search'];			}			if (isset($this->request->get['tag'])) {				$url .= '&tag=' . $this->request->get['tag'];			}			if (isset($this->request->get['description'])) {				$url .= '&description=' . $this->request->get['description'];			}			if (isset($this->request->get['category_id'])) {				$url .= '&category_id=' . $this->request->get['category_id'];			}			if (isset($this->request->get['sub_category'])) {				$url .= '&sub_category=' . $this->request->get['sub_category'];			}			if (isset($this->request->get['sort'])) {				$url .= '&sort=' . $this->request->get['sort'];			}			if (isset($this->request->get['order'])) {				$url .= '&order=' . $this->request->get['order'];			}			if (isset($this->request->get['page'])) {				$url .= '&page=' . $this->request->get['page'];			}			if (isset($this->request->get['limit'])) {				$url .= '&limit=' . $this->request->get['limit'];			}			$data['breadcrumbs'][] = array(				'text' => $this->language->get('text_error'),				'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id)			);			$this->document->setTitle($this->language->get('text_error'));			$data['heading_title'] = $this->language->get('text_error');			$data['text_error'] = $this->language->get('text_error');			$data['button_continue'] = $this->language->get('button_continue');			$data['continue'] = $this->url->link('common/home');			$this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');			$data['column_left'] = $this->load->controller('common/column_left');			$data['column_right'] = $this->load->controller('common/column_right');			$data['content_top'] = $this->load->controller('common/content_top');			$data['content_bottom'] = $this->load->controller('common/content_bottom');			$data['footer'] = $this->load->controller('common/footer');			$data['header'] = $this->load->controller('common/header');			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {				$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data));			} else {				$this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data));			}		}	}	public function review() {		$this->load->language('product/product');		$this->load->model('catalog/review');		$data['text_no_reviews'] = $this->language->get('text_no_reviews');		if (isset($this->request->get['page'])) {			$page = $this->request->get['page'];		} else {			$page = 1;		}		$data['reviews'] = array();		$review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']);		$results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5);		foreach ($results as $result) {			$data['reviews'][] = array(				'author'     => $result['author'],				'text'       => nl2br($result['text']),				'rating'     => (int)$result['rating'],				'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))			);		}		$pagination = new Pagination();		$pagination->total = $review_total;		$pagination->page = $page;		$pagination->limit = 5;		$pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');		$data['pagination'] = $pagination->render();		$data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5));		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) {			$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data));		} else {			$this->response->setOutput($this->load->view('default/template/product/review.tpl', $data));		}	}	public function getRecurringDescription() {		$this->language->load('product/product');		$this->load->model('catalog/product');		if (isset($this->request->post['product_id'])) {			$product_id = $this->request->post['product_id'];		} else {			$product_id = 0;		}		if (isset($this->request->post['recurring_id'])) {			$recurring_id = $this->request->post['recurring_id'];		} else {			$recurring_id = 0;		}		if (isset($this->request->post['quantity'])) {			$quantity = $this->request->post['quantity'];		} else {			$quantity = 1;		}		$product_info = $this->model_catalog_product->getProduct($product_id);		$recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);		$json = array();		if ($product_info && $recurring_info) {			if (!$json) {				$frequencies = array(					'day'        => $this->language->get('text_day'),					'week'       => $this->language->get('text_week'),					'semi_month' => $this->language->get('text_semi_month'),					'month'      => $this->language->get('text_month'),					'year'       => $this->language->get('text_year'),				);				if ($recurring_info['trial_status'] == 1) {					$price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));					$trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';				} else {					$trial_text = '';				}				$price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));				if ($recurring_info['duration']) {					$text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);				} else {					$text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);				}				$json['success'] = $text;			}		}		$this->response->addHeader('Content-Type: application/json');		$this->response->setOutput(json_encode($json));	}	public function write() {		$this->load->language('product/product');		$json = array();		if ($this->request->server['REQUEST_METHOD'] == 'POST') {			if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) {				$json['error'] = $this->language->get('error_name');			}			if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) {				$json['error'] = $this->language->get('error_text');			}			if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) {				$json['error'] = $this->language->get('error_rating');			}			if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) {				$json['error'] = $this->language->get('error_captcha');			}			unset($this->session->data['captcha']);			if (!isset($json['error'])) {				$this->load->model('catalog/review');				$this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post);				$json['success'] = $this->language->get('text_success');			}		}		$this->response->addHeader('Content-Type: application/json');		$this->response->setOutput(json_encode($json));	}}
				
			

4.  Добавим javascript скорее всего удобнее его поставить в header.tpl

				
					/* popup */$(".add2basket").click(function (){  var pic = $(this).attr("data-thumb"); // var title = $(this).attr("data-title");  $(".pic_basket").attr("src", pic);  $("#modal-content,#modal-background").addClass("active"); // alert(1);});$('#modal-background').on('click', function (e) {      $("#modal-content,#modal-background").removeClass("active");    });$('.cont').on('click', function (e) {      $("#modal-content,#modal-background").removeClass("active");      return false;    });/* end of popup */});
				
			

6. Последняя составляющая — это css, отвечающий за диалоговое окно

				
					/*  popup */#modal-background{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ccc;opacity:.70;-webkit-opacity:.7;-moz-opacity:.7;filter:alpha(opacity=70);z-index:1000;}#modal-content{font-family: Trebuchet MS !important;background-color:white;border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;position:absolute;top:50%;left:43%;width:640px;height:400px;margin-left:-200px;margin-top:-200px;display:none;padding:10px;position:fixed;text-align:center;z-index:1000;border: 3px solid #c;}#modal-content h3{font: Bold 19px Trebuchet MS;color: #e26a22;letter-spacing: 0.4px;}a.incart {padding: 3px 10px 3px 10px !important;background: #e36a23;color: #fff;font-size: 15px !important;font-family: Trebuchet MS !important;border-bottom: 0px !important;border: 0px !important;cursor: pointer;text-decoration: none;text-transform: none !important;}a.incart:hover {background: #d5d5d1; color: #515151;}a.cont {padding: 3px 10px 3px 10px !important;background: #e36a23;color: #fff;font-size: 15px !important;font-family: Trebuchet MS !important;border-bottom: 0px !important;border: 0px !important;cursor: pointer;text-decoration: none;text-transform: none !important;}a.cont:hover {background: #d5d5d1; color: #515151;}#modal-content img{height:275px;width:auto !important;}#modal-background.active, #modal-content.active{display:block;}/* end of popup  */
				
			

Если у Вас будут вопросы — пишите!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Moovix » Блог » OpenCart: всплывающее уведомление о добавлении товара в корзину

Есть вопрос? мы онлайн

Есть проект? Заполните бриф.

top