Jump to content
Sign in to follow this  
0808web

Не выводится товар в категории

Recommended Posts

Не выводится товар в категории выдает:

2014-07-20 12:58:14 - PHP Warning:  Invalid argument supplied for foreach() in /var/www/marinamarc2014/data/www/king-sites.ru/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 163
2014-07-20 12:58:15 - PHP Notice:  Undefined variable: filter_category_id in /var/www/marinamarc2014/data/www/king-sites.ru/catalog/view/theme/maximus/template/module/categoryse.tpl on line 11
 
Ребят пожалуйста помогите разобраться. Все вроде работает но товар не показывается. Перекрутил все что только мог, ничего в голову не лезет
 
categoryse.tpl
<div id="searc" class="searc" >
    <?php if ($filter_name) { ?>
    <input class="salas" type="text" name="filter_name" value="<?php echo $filter_name; ?>" />
    <?php } else { ?>
    <input class="salas"  type="text" name="filter_name" value="<?php if($filter_name){echo $filter_name;}else{echo 'Поиск по каталогу';} ?>" onFocus="if(this.value=='Поиск по каталогу'){this.value='';}" onBlur="if(this.value==''){this.value='Поиск по каталогу';}"  onkeydown="this.style.color = '000000'" style="color: #999;" />
    <?php } ?>
    <select class="styled"  name="filter_category_id">
        <option value="0"><?php echo $text_category; ?></option>
        <?php foreach ($categories as $category_1) { ?>

        <?php if ($category_1['category_id'] == $filter_category_id) { ?>
        <option value="<?php echo $category_1['category_id']; ?>" selected="selected"><?php echo $category_1['name']; ?></option>
        <?php } else { ?>
        <option value="<?php echo $category_1['category_id']; ?>"><?php echo $category_1['name']; ?></option>
        <?php } ?>

        <?php } ?>
    </select>

    <input type="button" value="<?php echo $button_search; ?>" id="button-search1" class="buttonse"  />
</div>

<script type="text/javascript">
        $('#searc input[name=\'filter_name\']').keydown(function(e) {
            if (e.keyCode == 13) {
                $('#button-search1').trigger('click');
            }
        });

        $('#button-search1').bind('click', function() {
            url = 'index.php?route=product/search_advanced';

            var filter_name = $('#searc input[name=\'filter_name\']').attr('value');

            if (filter_name) {
                url += '&filter_name=' + encodeURIComponent(filter_name);
            }

            var filter_category_id = $('#searc select[name=\'filter_category_id\']').attr('value');

            if (filter_category_id > 0) {
                url += '&filter_category_id=' + encodeURIComponent(filter_category_id);
            }

//            var filter_sub_category = $('#searc input[name=\'filter_sub_category\']:checked').attr('value');

//            if (filter_sub_category) {
                url += '&filter_sub_category=true';
//            }

            var filter_description = $('#searc input[name=\'filter_description\']:checked').attr('value');

            if (filter_description) {
                url += '&filter_description=true';
            }

            location = url;
        });

//--></script> 

vq2-catalog_controller_product_category

<?php

class ControllerProductCategory extends Controller {

	public function index() {
		$this->language->load('product/category');

		$this->load->model('catalog/category');

		$this->load->model('catalog/product');

		$this->load->model('tool/image');

		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_catalog_limit');
		}

		$this->data['breadcrumbs'] = array();

		$this->data['breadcrumbs'][] = array(
		    'text' => $this->language->get('text_home'),
		    'href' => $this->url->link('common/home'),
		    'separator' => false
		);

		if (isset($this->request->get['path'])) {
			$path = '';

			$parts = explode('_', (string) $this->request->get['path']);

			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) {
					$this->data['breadcrumbs'][] = array(
					    'text' => $category_info['name'],
					    'href' => $this->url->link('product/category', 'path=' . $path),
					    'separator' => $this->language->get('text_separator')
					);
				}
			}

			$category_id = array_pop($parts);
		} else {
			$category_id = 0;
		}

		$category_info = $this->model_catalog_category->getCategory($category_id);

		if ($category_info) {
			if ($category_info['seo_title']) {
				$this->document->setTitle($category_info['seo_title']);
			} else {
				$this->document->setTitle($category_info['name']);
			}

			$this->document->setDescription($category_info['meta_description']);
			$this->document->setKeywords($category_info['meta_keyword']);

			$this->data['seo_h1'] = $category_info['seo_h1'];

			$this->data['heading_title'] = $category_info['name'];

			$this->data['text_refine'] = $this->language->get('text_refine');
			$this->data['text_empty'] = $this->language->get('text_empty');
			$this->data['text_quantity'] = $this->language->get('text_quantity');
			$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
			$this->data['text_model'] = $this->language->get('text_model');
			$this->data['text_price'] = $this->language->get('text_price');
			$this->data['text_tax'] = $this->language->get('text_tax');
			$this->data['text_points'] = $this->language->get('text_points');
			$this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
			$this->data['text_display'] = $this->language->get('text_display');
			$this->data['text_list'] = $this->language->get('text_list');
			$this->data['text_grid'] = $this->language->get('text_grid');
			$this->data['text_sort'] = $this->language->get('text_sort');
			$this->data['text_limit'] = $this->language->get('text_limit');

			$this->data['button_cart'] = $this->language->get('button_cart');
			$this->data['button_wishlist'] = $this->language->get('button_wishlist');
			$this->data['button_compare'] = $this->language->get('button_compare');
			$this->data['button_continue'] = $this->language->get('button_continue');

			if ($category_info['image']) {
				$this->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 {
				$this->data['thumb'] = '';
			}

			$this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
			$this->data['compare'] = $this->url->link('product/compare');

			$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'];
			}

			$this->data['categories'] = array();

			$results = $this->model_catalog_category->getCategories($category_id);

			foreach ($results as $result) {
				$data = array(
				    'filter_category_id' => $result['category_id'],
				    'filter_sub_category' => true
				);

				$this->data['categories'][] = array(
				    'name' => $result['name'],
				    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
				);
			}

			$this->data['products'] = array();

			$data = array(
			    'filter_category_id' => $category_id,
			    'sort' => $sort,
			    'order' => $order,
			    'start' => ($page - 1) * $limit,
			    'limit' => $limit
			);

			$product_total = $this->model_catalog_product->getTotalProducts($data);

			$results = $this->model_catalog_product->getProducts($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'));
				} else {
					
            $image = $this->model_tool_image->resize('no_image.jpg', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
            
				}

				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;
				}

				$this->data['products'][] = array(
				    'product_id' => $result['product_id'],
				    'thumb' => $image,
				    'name' => $result['name'],
				    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
				    'price' => $price,
				    'special' => $special,
				    'tax' => $tax,
				    'rating' => $result['rating'],
				    'reviews' => sprintf($this->language->get('text_reviews'), (int) $result['reviews']),
				    'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])
				);
			}

			$url = '';

			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
			}

			$this->data['sorts'] = array();

			$this->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)
			);

			$this->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)
			);

			$this->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)
			);

			$this->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)
			);

			$this->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')) {
				$this->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)
				);

				$this->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)
				);
			}

			$this->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)
			);

			$this->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['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			$this->data['limits'] = array();

			$this->data['limits'][] = array(
			    'text' => $this->config->get('config_catalog_limit'),
			    'value' => $this->config->get('config_catalog_limit'),
			    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $this->config->get('config_catalog_limit'))
			);

			$this->data['limits'][] = array(
			    'text' => 25,
			    'value' => 25,
			    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=25')
			);

			$this->data['limits'][] = array(
			    'text' => 50,
			    'value' => 50,
			    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=50')
			);

			$this->data['limits'][] = array(
			    'text' => 75,
			    'value' => 75,
			    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=75')
			);

			$this->data['limits'][] = array(
			    'text' => 100,
			    'value' => 100,
			    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=100')
			);

			$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'];
			}

			$pagination = new Pagination();
			$pagination->total = $product_total;
			$pagination->page = $page;
			$pagination->limit = $limit;
			$pagination->text = $this->language->get('text_pagination');
			$pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');

			$this->data['pagination'] = $pagination->render();

			$this->data['sort'] = $sort;
			$this->data['order'] = $order;
			$this->data['limit'] = $limit;

			$this->data['continue'] = $this->url->link('common/home');

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/product/category.tpl';
			} else {
				$this->template = 'default/template/product/category.tpl';
			}

			$this->children = array(
			    'common/column_left',
			    'common/column_right',
			    'common/content_top',
			    'common/content_bottom',
			    'common/footer',

'module/category_featured',
                        
			    'common/header'
			);

			$this->response->setOutput($this->render());
		} else {
			$url = '';

			if (isset($this->request->get['path'])) {
				$url .= '&path=' . $this->request->get['path'];
			}

			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'];
			}

			$this->data['breadcrumbs'][] = array(
			    'text' => $this->language->get('text_error'),
			    'href' => $this->url->link('product/category', $url),
			    'separator' => $this->language->get('text_separator')
			);

			$this->document->setTitle($this->language->get('text_error'));

			$this->data['heading_title'] = $this->language->get('text_error');

			$this->data['text_error'] = $this->language->get('text_error');

			$this->data['button_continue'] = $this->language->get('button_continue');

			$this->data['continue'] = $this->url->link('common/home');

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
			} else {
				$this->template = 'default/template/error/not_found.tpl';
			}

			$this->children = array(
			    'common/column_left',
			    'common/column_right',
			    'common/content_top',
			    'common/content_bottom',
			    'common/footer',

'module/category_featured',
                        
			    'common/header'
			);

			$this->response->setOutput($this->render());
		}
	}

}

?>

Share this post


Link to post
Share on other sites

0808web

 

Выложите первые 400 строк файла admin/model/catalog/product

Share this post


Link to post
Share on other sites


<?php

class ModelCatalogProduct extends Model {

public function addProduct($data) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW()");

$product_id = $this->db->getLastId();

if (isset($data['image'])) {

$this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");

}

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");

}

if (isset($data['product_store'])) {

foreach ($data['product_store'] as $store_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "'");

}

}

if (isset($data['product_attribute'])) {

foreach ($data['product_attribute'] as $product_attribute) {

if ($product_attribute['attribute_id']) {

$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");

foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_id . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute_description['text']) . "'");

}

}

}

}

if (isset($data['product_option'])) {

foreach ($data['product_option'] as $product_option) {

if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");

$product_option_id = $this->db->getLastId();

if (isset($product_option['product_option_value'])) {

foreach ($product_option['product_option_value'] as $product_option_value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");

}

}

} else {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");

}

}

}

if (isset($data['product_discount'])) {

foreach ($data['product_discount'] as $product_discount) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");

}

}

if (isset($data['product_special'])) {

foreach ($data['product_special'] as $product_special) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_special['customer_group_id'] . "', priority = '" . (int)$product_special['priority'] . "', price = '" . (float)$product_special['price'] . "', date_start = '" . $this->db->escape($product_special['date_start']) . "', date_end = '" . $this->db->escape($product_special['date_end']) . "'");

}

}

if (isset($data['product_image'])) {

foreach ($data['product_image'] as $product_image) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape(html_entity_decode($product_image['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$product_image['sort_order'] . "'");

}

}

if (isset($data['product_download'])) {

foreach ($data['product_download'] as $download_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_download SET product_id = '" . (int)$product_id . "', download_id = '" . (int)$download_id . "'");

}

}

if (isset($data['product_category'])) {

foreach ($data['product_category'] as $category_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$category_id . "'");

}

}

if (isset($data['product_related'])) {

foreach ($data['product_related'] as $related_id) {

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");

$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");

$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");

}

}

if (isset($data['product_reward'])) {

foreach ($data['product_reward'] as $customer_group_id => $product_reward) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_reward SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$customer_group_id . "', points = '" . (int)$product_reward['points'] . "'");

}

}

if (isset($data['product_layout'])) {

foreach ($data['product_layout'] as $store_id => $layout) {

if ($layout['layout_id']) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");

}

}

}

foreach ($data['product_tag'] as $language_id => $value) {

if ($value) {

$tags = explode(',', $value);

foreach ($tags as $tag) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_tag SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");

}

}

}

if ($data['keyword']) {

$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");

}

$this->cache->delete('product');

}

public function editProduct($product_id, $data) {

$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['image'])) {

$this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");

foreach ($data['product_description'] as $language_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "'");

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_store'])) {

foreach ($data['product_store'] as $store_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_store SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");

if (!empty($data['product_attribute'])) {

foreach ($data['product_attribute'] as $product_attribute) {

if ($product_attribute['attribute_id']) {

$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");

foreach ($product_attribute['product_attribute_description'] as $language_id => $product_attribute_description) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_attribute SET product_id = '" . (int)$product_id . "', attribute_id = '" . (int)$product_attribute['attribute_id'] . "', language_id = '" . (int)$language_id . "', text = '" . $this->db->escape($product_attribute_description['text']) . "'");

}

}

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_option'])) {

foreach ($data['product_option'] as $product_option) {

if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_option_id = '" . (int)$product_option['product_option_id'] . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', required = '" . (int)$product_option['required'] . "'");

$product_option_id = $this->db->getLastId();

if (isset($product_option['product_option_value'])) {

foreach ($product_option['product_option_value'] as $product_option_value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");

}

}

} else {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_option_id = '" . (int)$product_option['product_option_id'] . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");

}

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_discount'])) {

foreach ($data['product_discount'] as $product_discount) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_discount SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_discount['customer_group_id'] . "', quantity = '" . (int)$product_discount['quantity'] . "', priority = '" . (int)$product_discount['priority'] . "', price = '" . (float)$product_discount['price'] . "', date_start = '" . $this->db->escape($product_discount['date_start']) . "', date_end = '" . $this->db->escape($product_discount['date_end']) . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_special'])) {

foreach ($data['product_special'] as $product_special) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_special SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$product_special['customer_group_id'] . "', priority = '" . (int)$product_special['priority'] . "', price = '" . (float)$product_special['price'] . "', date_start = '" . $this->db->escape($product_special['date_start']) . "', date_end = '" . $this->db->escape($product_special['date_end']) . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_image'])) {

foreach ($data['product_image'] as $product_image) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape(html_entity_decode($product_image['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$product_image['sort_order'] . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_download'])) {

foreach ($data['product_download'] as $download_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_download SET product_id = '" . (int)$product_id . "', download_id = '" . (int)$download_id . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_category'])) {

foreach ($data['product_category'] as $category_id) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$category_id . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");

if (isset($data['product_related'])) {

foreach ($data['product_related'] as $related_id) {

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "' AND related_id = '" . (int)$related_id . "'");

$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'");

$this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_reward'])) {

foreach ($data['product_reward'] as $customer_group_id => $value) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_reward SET product_id = '" . (int)$product_id . "', customer_group_id = '" . (int)$customer_group_id . "', points = '" . (int)$value['points'] . "'");

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");

if (isset($data['product_layout'])) {

foreach ($data['product_layout'] as $store_id => $layout) {

if ($layout['layout_id']) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_layout SET product_id = '" . (int)$product_id . "', store_id = '" . (int)$store_id . "', layout_id = '" . (int)$layout['layout_id'] . "'");

}

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "product_tag WHERE product_id = '" . (int)$product_id. "'");

foreach ($data['product_tag'] as $language_id => $value) {

if ($value) {

$tags = explode(',', $value);

foreach ($tags as $tag) {

$this->db->query("INSERT INTO " . DB_PREFIX . "product_tag SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', tag = '" . $this->db->escape(trim($tag)) . "'");

}

}

}

$this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'");

if ($data['keyword']) {

$this->db->query("INSERT INTO " . DB_PREFIX . "url_alias SET query = 'product_id=" . (int)$product_id . "', keyword = '" . $this->db->escape($data['keyword']) . "'");

}

$this->cache->delete('product');

}

public function copyProduct($product_id) {

$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");

if ($query->num_rows) {

$data = array();

$data = $query->row;

$data['keyword'] = '';

$data['status'] = '0';

$data = array_merge($data, array('product_attribute' => $this->getProductAttributes($product_id)));

$data = array_merge($data, array('product_description' => $this->getProductDescriptions($product_id)));

$data = array_merge($data, array('product_discount' => $this->getProductDiscounts($product_id)));

$data = array_merge($data, array('product_image' => $this->getProductImages($product_id)));

$data = array_merge($data, array('product_option' => $this->getProductOptions($product_id)));

$data = array_merge($data, array('product_related' => $this->getProductRelated($product_id)));

$data = array_merge($data, array('product_reward' => $this->getProductRewards($product_id)));

$data = array_merge($data, array('product_special' => $this->getProductSpecials($product_id)));

$data = array_merge($data, array('product_tag' => $this->getProductTags($product_id)));

$data = array_merge($data, array('product_category' => $this->getProductCategories($product_id)));

$data = array_merge($data, array('product_download' => $this->getProductDownloads($product_id)));

$data = array_merge($data, array('product_layout' => $this->getProductLayouts($product_id)));

$data = array_merge($data, array('product_store' => $this->getProductStores($product_id)));

$this->addProduct($data);

}

}

public function deleteProduct($product_id) {

$this->db->query("DELETE FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_option_value WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE related_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_tag WHERE product_id='" . (int)$product_id. "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "review WHERE product_id = '" . (int)$product_id . "'");

$this->db->query("DELETE FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id. "'");

$this->cache->delete('product');

}

public function getProduct($product_id) {

$query = $this->db->query("SELECT DISTINCT *, (SELECT keyword FROM " . DB_PREFIX . "url_alias WHERE query = 'product_id=" . (int)$product_id . "') AS keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "'");

return $query->row;

}

public function getProducts($data = array()) {

if ($data) {

$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";

// renamed filter_category_id to filter_category

if (!empty($data['filter_category'])) {

$sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";

}

$sql .= " WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "'";

if (!empty($data['filter_name'])) {

$sql .= " AND LCASE(pd.name) LIKE '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "%'";

}

if (!empty($data['filter_model'])) {

$sql .= " AND LCASE(p.model) LIKE '" . $this->db->escape(utf8_strtolower($data['filter_model'])) . "%'";

}

if (!empty($data['filter_price'])) {

$sql .= " AND p.price LIKE '" . $this->db->escape($data['filter_price']) . "%'";

}

if (isset($data['filter_quantity']) && !is_null($data['filter_quantity'])) {

$sql .= " AND p.quantity = '" . $this->db->escape($data['filter_quantity']) . "'";

}

if (isset($data['filter_status']) && !is_null($data['filter_status'])) {

$sql .= " AND p.status = '" . (int)$data['filter_status'] . "'";

}

// renamed filter_category_id to filter_category

if (!empty($data['filter_category'])) {

if (!empty($data['filter_sub_category'])) {

$implode_data = array();

$implode_data[] = "category_id = '" . (int)$data['filter_category'] . "'";

$this->load->model('catalog/category');

$categories = $this->model_catalog_category->getCategories($data['filter_category']);

foreach ($categories as $category) {

$implode_data[] = "p2c.category_id = '" . (int)$category['category_id'] . "'";

}

$sql .= " AND (" . implode(' OR ', $implode_data) . ")";

} else {

$sql .= " AND p2c.category_id = '" . (int)$data['filter_category'] . "'";

}

}

$sql .= " GROUP BY p.product_id";

$sort_data = array(

'pd.name',

'p.model',

'p.price',

// add

'p2c.category_id',

// end

'p.quantity',

'p.status',

'p.sort_order'

);

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {

$sql .= " ORDER BY " . $data['sort'];

} else {

$sql .= " ORDER BY pd.name";

}

if (isset($data['order']) && ($data['order'] == 'DESC')) {

$sql .= " DESC";

} else {

$sql .= " ASC";

}

if (isset($data['start']) || isset($data['limit'])) {

if ($data['start'] < 0) {

$data['start'] = 0;

}

if ($data['limit'] < 1) {

$data['limit'] = 20;

}

$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];

}

$query = $this->db->query($sql);

return $query->rows;

} else {

$product_data = $this->cache->get('product.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'));

if (!$product_data) {

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY pd.name ASC");

$product_data = $query->rows;

$this->cache->set('product.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'), $product_data);

}

return $product_data;

}

}

public function getProductsByCategoryId($category_id) {

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p2c.category_id = '" . (int)$category_id . "' ORDER BY pd.name ASC");

return $query->rows;

}

public function getProductDescriptions($product_id) {

$product_description_data = array();

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE product_id = '" . (int)$product_id . "'");

foreach ($query->rows as $result) {

$product_description_data[$result['language_id']] = array(

'name' => $result['name'],

'description' => $result['description'],

'meta_keyword' => $result['meta_keyword'],

'meta_description' => $result['meta_description']

);

}

return $product_description_data;

}

public function getProductAttributes($product_id) {

$product_attribute_data = array();

$product_attribute_query = $this->db->query("SELECT pa.attribute_id, ad.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY pa.attribute_id");

foreach ($product_attribute_query->rows as $product_attribute) {

$product_attribute_description_data = array();

$product_attribute_description_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$product_id . "' AND attribute_id = '" . (int)$product_attribute['attribute_id'] . "'");

foreach ($product_attribute_description_query->rows as $product_attribute_description) {

$product_attribute_description_data[$product_attribute_description['language_id']] = array('text' => $product_attribute_description['text']);

}

$product_attribute_data[] = array(

'attribute_id' => $product_attribute['attribute_id'],

'name' => $product_attribute['name'],

'product_attribute_description' => $product_attribute_description_data

);

}

return $product_attribute_data;

}

public function getProductOptions($product_id) {

$product_option_data = array();

$product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order");

foreach ($product_option_query->rows as $product_option) {

if ($product_option['type'] == 'select' || $product_option['type'] == 'radio' || $product_option['type'] == 'checkbox' || $product_option['type'] == 'image') {

$product_option_value_data = array();

$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

foreach ($product_option_value_query->rows as $product_option_value) {

$product_option_value_data[] = array(

'product_option_value_id' => $product_option_value['product_option_value_id'],

'option_value_id' => $product_option_value['option_value_id'],

'name' => $product_option_value['name'],

'image' => $product_option_value['image'],

'quantity' => $product_option_value['quantity'],

'subtract' => $product_option_value['subtract'],

'price' => $product_option_value['price'],

'price_prefix' => $product_option_value['price_prefix'],

'points' => $product_option_value['points'],

'points_prefix' => $product_option_value['points_prefix'],

'weight' => $product_option_value['weight'],

'weight_prefix' => $product_option_value['weight_prefix']

);

}

$product_option_data[] = array(

'product_option_id' => $product_option['product_option_id'],

'option_id' => $product_option['option_id'],

'name' => $product_option['name'],

'type' => $product_option['type'],

'product_option_value' => $product_option_value_data,

'required' => $product_option['required']

);

} else {

$product_option_data[] = array(

'product_option_id' => $product_option['product_option_id'],

'option_id' => $product_option['option_id'],

'name' => $product_option['name'],

'type' => $product_option['type'],

'option_value' => $product_option['option_value'],

'required' => $product_option['required']

);

}

}

return $product_option_data;

}

public function getProductImages($product_id) {

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");

return $query->rows;

}

public function getProductDiscounts($product_id) {

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_discount WHERE product_id = '" . (int)$product_id . "' ORDER BY quantity, priority, price");

return $query->rows;

}

public function getProductSpecials($product_id) {

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' ORDER BY priority, price");

return $query->rows;

}

public function getProductRewards($product_id) {

$product_reward_data = array();

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_reward WHERE product_id = '" . (int)$product_id . "'");

foreach ($query->rows as $result) {

$product_reward_data[$result['customer_group_id']] = array('points' => $result['points']);

}

return $product_reward_data;

}

public function getProductDownloads($product_id) {

$product_download_data = array();

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_download WHERE product_id = '" . (int)$product_id . "'");

foreach ($query->rows as $result) {

$product_download_data[] = $result['download_id'];

}

return $product_download_data;

}

public function getProductStores($product_id) {

$product_store_data = array();

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_store WHERE product_id = '" . (int)$product_id . "'");

foreach ($query->rows as $result) {

$product_store_data[] = $result['store_id'];

}

return $product_store_data;

}

public function getProductLayouts($product_id) {

$product_layout_data = array();

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_layout WHERE product_id = '" . (int)$product_id . "'");

foreach ($query->rows as $result) {

$product_layout_data[$result['store_id']] = $result['layout_id'];

}

return $product_layout_data;

}

Share this post


Link to post
Share on other sites

Спасибо.

Скажите, а у вас в магазине, вообще, товары и категории показываются ?

Номер магазина установлен 0 (основной магазин) ?

Share this post


Link to post
Share on other sites

Спасибо.

Скажите, а у вас в магазине, вообще, товары и категории показываются ?

Номер магазина установлен 0 (основной магазин) ?

http://king-sites.ru/

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

Share this post


Link to post
Share on other sites

Толку от этих файлов никакого, фильтр то цепляется через vqmod!

 

И какой фильтр?

 

Что и где меняли?

 

А так информации - ноль!

Share this post


Link to post
Share on other sites

Толку от этих файлов никакого, фильтр то цепляется через vqmod!

 

И какой фильтр?

 

Что и где меняли?

 

А так информации - ноль!

filterpro

Share this post


Link to post
Share on other sites

filterpro

Ну так обратитесь к freelancer -у , он всегда помогает!

К тому же это его модуль, ни кто не знает лучше работу модуля, чем его разработчик.

Мы можем гадать еще уйму времени, а для него это может быть 5 минутной работой, с проблемой, которой он сталкивался много раз.

Share this post


Link to post
Share on other sites

Ну так обратитесь к freelancer -у , он всегда помогает!

К тому же это его модуль, ни кто не знает лучше работу модуля, чем его разработчик.

Мы можем гадать еще уйму времени, а для него это может быть 5 минутной работой, с проблемой, которой он сталкивался много раз.

врятли тут проблема в модуле так как ошибки то вот куда кидают

 

var/www/marinamarc2014/data/www/king-sites.ru/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 163
2014-07-20 12:58:15 - PHP Notice:  Undefined variable: filter_category_id in /var/www/marinamarc2014/data/www/king-sites.ru/catalog/view/theme/maximus/template/module/categoryse.tpl on line 11

Share this post


Link to post
Share on other sites

 

врятли тут проблема в модуле так как ошибки то вот куда кидают

 

var/www/marinamarc2014/data/www/king-sites.ru/vqmod/vqcache/vq2-catalog_controller_product_category.php on line 163
2014-07-20 12:58:15 - PHP Notice:  Undefined variable: filter_category_id in /var/www/marinamarc2014/data/www/king-sites.ru/catalog/view/theme/maximus/template/module/categoryse.tpl on line 11

 

Ну, а это чей notice?!

filter_category_id

module/categoryse.tpl

 

Никто и не говорит что проблема в модуле, может это проблема в настройках и т.п., но то что это касается модуля - факт

 

Так что обращайтесь к freelancer - у, быстрее и дешевле будет

Edited by markimax

Share this post


Link to post
Share on other sites

Ну, а это чей notice?!

filter_category_id

module/categoryse.tpl

 

Никто и не говорит что проблема в модуле, может это проблема в настройках и т.п., но то что это касается модуля - факт

 

Так что обращайтесь к freelancer - у, быстрее и дешевле будет

я пробовала отключать все модули но безуспешно ток же не выводится товар

Share this post


Link to post
Share on other sites

я пробовала отключать все модули но безуспешно ток же не выводится товар

Поставьте оригинальный файл контроллера category.php и шаблона к нему, и отключите всё что связано с модулями в vqmod.

Share this post


Link to post
Share on other sites

1. портянки кода прячьте под спойлер

2. тех поддержка оказывается только легальным покупателям

Share this post


Link to post
Share on other sites

1. портянки кода прячьте под спойлер

2. тех поддержка оказывается только легальным покупателям

здравствуйте я покупал ваш модуль мне просто дали тут бан моя почта dsking@mail.ru, а так давно не заходила

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By HasikBoy
      500.00 руб · Срок продления: 500.00 руб за день
      Скачать/Купить дополнение


      Парсинг, наполнение, обновление, автоматизация для вашего интернет магазина
       
      Ориентировочная стоимость парсинга (пишите в ЛС оговорим детали по Вашему ТЗ)
      ВНИМАНИЕ!!! Стоимость указана ориентировочная, в большинстве случаев она меняется как в меньшую, так и в большую сторону, в зависимости от технического задания!
      ТИП КРАТКАЯ ИНФОРМАЦИЯ ЦЕНА ОТ В РУБ. Простой парсинг Блог, новостной сайт, и др. 1500 Обычный парсинг Простые интернет-магазины 3000 Парсинг средней сложности Интернет-магазины с товарами в которых присутствуют опции и характеристики 4000 Сложная задача по парсингу Сайты с блокировкой от парсинга 5500 Сложная задача по парсингу с доп параметрами Блокировка, Хар в разные столбы, Выборка параметров из текста и так далее 6500 Очень сложный  Сайты на скрипте, инд. Заказ 8000  
       
      Предоставляю услуги по автоматизации наполнения ресурсов,
      определенным контентом, а так же его обработка или генерация.
       
      Решение различных проблем
      РОБОТИЗАЦИЯ
      Мониторинг конкурентов Парсинг различных сайтов (интернет-магазинов, социальных сетей, площадок объявлений) с выводом данных в таблицу Excel (формата XLS* или CSV), а также скачивание файлов Парсинг во всевозможные CMS При парсинге товаров интернет-магазина Сбор требуемой информации для SEO-специалистов Загрузка HTML-таблиц в необходимом формате Выполнение операций с файлами на диске Вычисление математических и логических конструкций как во время парсинга, так и после Определение позиции сайта в выдаче Google по ключевым запросам       Средняя цена услуги той что мне приходилось уже исполнять.
       
      ТИП   ЦЕНА ОТ В РУБ. АВТОНАПОЛНЕНИЕ САЙТА   14000 АВТОГЕНЕРАЦИЯ КОНТЕНТА   500 АВТОГЕНЕРАЦИЯ КОММЕНТАРИЕВ   500 ОБНОВЛЕНИЕ АССОРТИМЕНТА   1000 ОБНОВЛЕНИЕ ЦЕН   1000 ОБРАБОТКА ПРЕЙСКУРАНТОВ   1500 ОБРАБОТКА ПОЧТОВЫХ ЗАЯВОК   3000 ОБРАБОТКА ЗАЯВОК В СОЦ. СЕТЯХ   2500 МОНИТОРИНГ САЙТОВ ПОСТАВЩИКОВ   1000 МОНИТОРИНГ ЦЕН КОНКУРЕНТОВ   2700 УВЕДОМЛ. НА ПОЧТУ/ПО СМС/В СОЦ. СЕТИ   2000 ФИЛЬТРАЦИЯ ИНФ. ПО РАЗЛ. ПАРАМЕТРАМ   3000 ПАРСИНГ ПРОФИЛЕЙ В СОЦ. СЕТЯХ   2500 РЕГИСТРАЦИЯ ПРОФИЛЕЙ В СОЦ. СЕТЯХ   2500 ПЕРЕНОС СОДЕРЖ. С ОДНОГО САЙТА НА ДР.   2500 ПУБЛИКАЦИЯ/УДАЛЕНИЕ МАТЕРИАЛОВ   1500 ИЗВЛ. ИНФ. С САЙТА-ДОНОРА   500  
         
      Портфолио  МОИ РАБОТЫ  
      ЧПУ для CMS OcStore
      СКРИПТ ПАРСИНГА JSON В БД VIRTUEMART
       
      ПАРСИНГ ЗАПАСНЫЕ ЧАСТИ НА МИНИТРАКТОР И МОТОБЛОК
      CMS OcStore
      НАПОЛНЕНИЕ ИНТЕРНЕТ МАГАЗИНА OCSTORE ТОВАРАМИ КОНКУРЕНТА
      Наполнение OcStore
      ПАРСИНГ КАТАЛОГА ТУРФИРМ
       
      ПАРСИНГ ТОВАРОВ С САЙТА КОМПАНИИ КОНКУРЕНТА С ПЕРЕНОСОМ КАТАЛОГА, ВКЛЮЧАЯ ИЕРАРХИЮ, НА НАШ САЙТ
      Наполнение 1C-Bitrix
      ПАРСИНГ САЙТОВ В ТАБЛИЦУ ЭКСЕЛЬ С ДАННЫМИ ТУРФИРМ Г. МОСКВА
       
      ПРИЛОЖЕНИЕ ФОТО КАТАЛИЗАТОР ДЛЯ WINDOWS 10
       

        КОРРЕКТНАЯ НАСТРОЙКА БАЗОВЫХ РЕДИРЕКТОВ ПО ПЕРЕХОДУ НА HTTPS
       
      СБОР ДАННЫХ О РЕСТОРАНАХ В НИДЕРЛАНДАХ
       
      СПАРСИТЬ CАМОГОННЫЕ АППАРАТЫ И НАПОЛНИТЬ ИМИ САЙТ НА OPENCART
      Наполнение сайта добрыня
      CПАРСИТЬ ВСЕ ТОВАРЫ С САЙТА ZAMKI-MIRA НА САЙТ 1C-BITRIX
       

        ПАРСИНГ ТОВАРОВ МАГАЗИНА URL(СКРЫТО) С ГЕНЕРАЦИЕЙ УНИКАЛЬНОГО ОПИСАНИЯ И ПОИСКОМ КАРТИНОК
       

        КАЧЕСТВЕННЫЙ ПАРСИНГ БАЗЫ РЕЗЮМЕ И ВАКАНСИЙ SPB.HH.RU
       

        АВТОМАТИЧЕСКОЕ ФОРМИРОВАНИЕ БАЗЫ ДАННЫХ В ТАБЛИЦЕ EXEL НА ОСНОВАНИИ ОБРАБОТКИ ИНТЕРНЕТ-РЕСУРСОВ
       

        ИЗМЕНЕНИЯ XLS И ЕГО ИМПОРТ В ИНТЕРНЕТ-МАГАЗИН НА БАЗЕ CMS OPENCART
       

        ПАРСИНГ ТОВАРОВ С Я.МАРКЕТА
       

        ПАРСИНГ ФОТО ИЗ АЛЬБОМОВ ГРУППЫ FACEBOOK
       

        АВТОНАПОЛНЕНИЕ «АГЕНТСТВО НЕДВИЖИМОСТИ.» 1C-BITRIX
      ИЗМЕНЕНИЯ XLS И ЕГО ИМПОРТ В ИНТЕРНЕТ-МАГАЗИН НА БАЗЕ CMS OPENCART
        Добавил HasikBoy Добавлено 16.03.2018 Категория Услуги  
    • By Serg9988
      600.00 руб
      Скачать/Купить дополнение


      Уведомление о наличии PRO Opencart2
      Уведомление о наличии товара PRO
      Зачем нужен модуль?
      Данны модуль позволяет увеличить количество продаж, за счет уведомления клиента о том, что интересующий его товар появился в продаже.    Соответственно вы не теряете потенциального клиента на товар которого в определенный момент не было в наличии.
       
      Модуль позволяет отслеживать желания ваших покупателей и заказывать у поставщика именно те товары, которых нет в наличии у вас на складе, но  которыми интересуются ваши покупатели.  
      Модуль собираем эмейлы потенциальных покупателей которые можно использовать в последующих разсылках акций и распродаж.  
       
      Краткое описание:
      Модуль позволяет покупателю заказать уведомление о поступлении товара в магазин.
      Модуль заменяет кнопку "Купить" на кнопку "Уведомить", если товара нет на складе или выбранной покупателем опции у товара нет в наличии.
      Работает по:
      количеству товара на складе по количеству опций на товаре по статусу товара  

      Возможности:
       
       История запросов уведомлений от пользователей в панели администратора   Возможность ручного отключения уведомлений   Обработка всего уведомления одним нажатием   Автоматическая отправка уведомлений о поступлении товара (CRON)    Уведомляет покупателя после изменения количества товара в ручную Работает по количеству опций на товаров (необязательно включается в настройке модуля) добавлена возможность покупателю указать желаемое количество товара при котором его уведомлять о поступлении при вводе желаемого количества товара для покупки, модуль на лету проверяет достаточно ли товара на складе  История заявок в личном кабинете покупателя  Пользователь может видеть историю своих уведомлений   Добавление любых произвольных полей в окно заказа уведомления (телефон, адрес, и тд)  Конструктор писем с возможностью подстановки данных оставленных покупателем  (в том числе доп. поля) Уведомление о новых заявках в административном меню  Сортировка и фильтрация списка заявок по цене, модеи, названию, артикулу, количеству товара Управление цветом кнопок модуля с админки  
       
       

       
       
       
       
      К модулю идет инструкция где подробно описано как установить и настроить модуль. 
      Адаптация, правки вида модуля и другие работы на не стандартном шаблоне делаются за отдельную плату.
       
      Модуль работает на шаблонах:
        Moneymaker2
       Journal
       Unishop
       
      Модуль совместим с модулями:
      uni_tabs
      owlcarousel
       
      ознакомится с документацией - ДОКУМЕНТАЦИЯ
       
      Системные/технические требования:
      Протестировано на следующих версиях : 
      ocstore 2.0*,2.1*,2.2*.2.3*, 3.0* opencart 2.0*,2.1*,2.2*.2.3*, 3.0*  
      Модуль не тестировался и его работа не гарантируется на всякого рода зборках ocstore или opencart от студий или отдельных разработчиков. Работа гарантируется только на чистых официальных сборках!
       
      Для работы модуля требуется:
      PHP Version: 5.6.x или выше
       
       
      Возможности:
       
       

       
       
      В планах реализовать:
      возможность создания собственных полей на форму с возможностью использовать их в письмах - Реализовано с версии 9.6 отправка уведомлений по смс построение отчетов по заявкам и выгрузка их в Exsel  
       
      Дизайн модуля адаптивен и корректно работает на мобильных устройствах:
       

       
      Установка:
       Скачайте архив с нужной версией модуля. Модуль с версии 9.5 работает только на opencart 2.3 и выше и OCStore 2.3 и выше.  Зайдите в административную панель сайта в раздел "Дополнения/Установка дополнений" и установите модуль  Зайдите в раздел "Дополнения/Менеджер дополнений" и обновите кеш  Зайдите в раздел "Дополнения/Дополнения/Модули" Установите модуль "SM Уведомить о наличии PRO"  Зайдите в редактирование модуля (введите ключ активации или сделайте запрос на получение ключа ) активируйте модуль переведя опцию "Статус" в позицию "Включен.              Сохраните настройки  Подключите модуль на страницы Главная, категории, товары и тд. (Раздел Дизайн/Схемы)  
      Состав модуля:
      полная инструкция с описанием работы и установки модуля; файлы модуля; файл для тестирования настроек сервера;  
      ДЕМО 
      Страница товара с опциями (кнопка купить будет подменена только если выбрать опцию количество которой <=0)
      login/pass - demo/demo
       
      Полное описание:
       
      Все работы по стилизации модуля под ваш шаблон (цвет кнопки, форма размер и тд.) проводяться исключительно на платной основе.
       
      Что нового:
       
      Обновление:
       
      Условия использования:
      Лицензия на модуль выдается на следующих условиях:
      1 лицензия = 1 покупка = 1 доменное имя.
      То есть - один раз купив, вы получаете ключ для работы модуля только на одном доменном имени, одном магазине!
       
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
       
      Для получения лицензионного ключа напишите мне в личном сообщении от имени того, на кого покупался модуль:
      Название модуля Доменное имя вашего магазина Доменное имя тестовой площадки (если таковая имеется) Ваш адрес электронной почты, куда выслать ключ  
      Дополнительные лицензии вы можете получить купив модуль на сайте http://myopencart.club/
      На 4-ю и более покупку действует скидка. Чтобы получить скидку пишите в личку или на почту.
      Вопросы, пожелания можно писать в форум или на почту support@myopencart.club
       
      Добавил Serg9988 Добавлено 30.03.2016 Категория Письма, почта, рассылки, sms Системные требования Сайт разработчика http://myopencart.club Старая цена Метод активации По запросу в ЛС
      По запросу на почту
      По емейлу Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет  
    • By Serg9988
      Уведомление о наличии товара PRO
      Зачем нужен модуль?
      Данны модуль позволяет увеличить количество продаж, за счет уведомления клиента о том, что интересующий его товар появился в продаже.    Соответственно вы не теряете потенциального клиента на товар которого в определенный момент не было в наличии.
       
      Модуль позволяет отслеживать желания ваших покупателей и заказывать у поставщика именно те товары, которых нет в наличии у вас на складе, но  которыми интересуются ваши покупатели.  
      Модуль собираем эмейлы потенциальных покупателей которые можно использовать в последующих разсылках акций и распродаж.  
       
      Краткое описание:
      Модуль позволяет покупателю заказать уведомление о поступлении товара в магазин.
      Модуль заменяет кнопку "Купить" на кнопку "Уведомить", если товара нет на складе или выбранной покупателем опции у товара нет в наличии.
      Работает по:
      количеству товара на складе по количеству опций на товаре по статусу товара  

      Возможности:
       
       История запросов уведомлений от пользователей в панели администратора   Возможность ручного отключения уведомлений   Обработка всего уведомления одним нажатием   Автоматическая отправка уведомлений о поступлении товара (CRON)    Уведомляет покупателя после изменения количества товара в ручную Работает по количеству опций на товаров (необязательно включается в настройке модуля) добавлена возможность покупателю указать желаемое количество товара при котором его уведомлять о поступлении при вводе желаемого количества товара для покупки, модуль на лету проверяет достаточно ли товара на складе  История заявок в личном кабинете покупателя  Пользователь может видеть историю своих уведомлений   Добавление любых произвольных полей в окно заказа уведомления (телефон, адрес, и тд)  Конструктор писем с возможностью подстановки данных оставленных покупателем  (в том числе доп. поля) Уведомление о новых заявках в административном меню  Сортировка и фильтрация списка заявок по цене, модеи, названию, артикулу, количеству товара Управление цветом кнопок модуля с админки  
       
       

       
       
       
       
      К модулю идет инструкция где подробно описано как установить и настроить модуль. 
      Адаптация, правки вида модуля и другие работы на не стандартном шаблоне делаются за отдельную плату.
       
      Модуль работает на шаблонах:
        Moneymaker2
       Journal
       Unishop
       
      Модуль совместим с модулями:
      uni_tabs
      owlcarousel
       
      ознакомится с документацией - ДОКУМЕНТАЦИЯ
       
      Системные/технические требования:
      Протестировано на следующих версиях : 
      ocstore 2.0*,2.1*,2.2*.2.3*, 3.0* opencart 2.0*,2.1*,2.2*.2.3*, 3.0*  
      Модуль не тестировался и его работа не гарантируется на всякого рода зборках ocstore или opencart от студий или отдельных разработчиков. Работа гарантируется только на чистых официальных сборках!
       
      Для работы модуля требуется:
      PHP Version: 5.6.x или выше
       
       
      Возможности:
       
       

       
       
      В планах реализовать:
      возможность создания собственных полей на форму с возможностью использовать их в письмах - Реализовано с версии 9.6 отправка уведомлений по смс построение отчетов по заявкам и выгрузка их в Exsel  
       
      Дизайн модуля адаптивен и корректно работает на мобильных устройствах:
       

       
      Установка:
       Скачайте архив с нужной версией модуля. Модуль с версии 9.5 работает только на opencart 2.3 и выше и OCStore 2.3 и выше.  Зайдите в административную панель сайта в раздел "Дополнения/Установка дополнений" и установите модуль  Зайдите в раздел "Дополнения/Менеджер дополнений" и обновите кеш  Зайдите в раздел "Дополнения/Дополнения/Модули" Установите модуль "SM Уведомить о наличии PRO"  Зайдите в редактирование модуля (введите ключ активации или сделайте запрос на получение ключа ) активируйте модуль переведя опцию "Статус" в позицию "Включен.              Сохраните настройки  Подключите модуль на страницы Главная, категории, товары и тд. (Раздел Дизайн/Схемы)  
      Состав модуля:
      полная инструкция с описанием работы и установки модуля; файлы модуля; файл для тестирования настроек сервера;  
      ДЕМО 
      Страница товара с опциями (кнопка купить будет подменена только если выбрать опцию количество которой <=0)
      login/pass - demo/demo
       
      Полное описание:
       
      Все работы по стилизации модуля под ваш шаблон (цвет кнопки, форма размер и тд.) проводяться исключительно на платной основе.
       
      Что нового:
       
      Обновление:
       
      Условия использования:
      Лицензия на модуль выдается на следующих условиях:
      1 лицензия = 1 покупка = 1 доменное имя.
      То есть - один раз купив, вы получаете ключ для работы модуля только на одном доменном имени, одном магазине!
       
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
       
      Для получения лицензионного ключа напишите мне в личном сообщении от имени того, на кого покупался модуль:
      Название модуля Доменное имя вашего магазина Доменное имя тестовой площадки (если таковая имеется) Ваш адрес электронной почты, куда выслать ключ  
      Дополнительные лицензии вы можете получить купив модуль на сайте http://myopencart.club/
      На 4-ю и более покупку действует скидка. Чтобы получить скидку пишите в личку или на почту.
      Вопросы, пожелания можно писать в форум или на почту support@myopencart.club
       
    • By jastinus382
      Сайт: https://3dpens.com.ua/
      Версия: ocStore 2.3
       
      Дело было так:
      Перенес сайт: все файлы, всю БД
      2 файла config.php переписал под аккаунт хостинга на который перенес.
      Настроил все модули: прописал ключи для модулей и сделал настройку.
      Обновил модификаторы, Очистил весь кеш: Изображения, система, логи, файлы,
      На главной не существующий товар, в разделе "ТОВАРЫ СО СКИДКОЙ".
       
      Проверил файлы они идентичны с сайта переноса.
      Проверил бд до переноса и после переноса отличий НОЛЬ
       
      Шерстил гугл, результатов НОЛЬ, решений НОЛЬ.
      Вопрос: кто сталкивался с данным багом
       
      Скриншот прилагаю
       

    • By Leingard
      399.00 руб
      Скачать/Купить дополнение


      ColorAsProduct - цвета товара как отдельные товары
      Модуль предназначением для тех, кому требуется оформить другие цвета товара - как отдельные товары. У каждого цвета товара своя страничка, что позволяет задавать различное описание для Ваших товаров с цветами и красиво вывести ссылки на другие цвета, в самой карточке товара.
       
      Летняя распродажа со скидкой -20%
       
      DEMO: OC 3: http://oc30.gameshara.ru/index.php?route=product/product&amp;product_id=53 (Первый вид отображения)
      DEMO: OC 2.3: http://gameshara.ru/module/index.php?route=product/product&product_id=43 (Первый вид отображения)
      DEMO: OC 2.1: http://gameshara.ru/ocstore21/index.php?route=product/product&product_id=42 (Четвертый вид отображения)
      Админ часть: Admin (Логин и пароль: demo)
       
      Изменения в версии 1.5 (26.03.2019)
      Теперь цвет товара и цветовые связи отображаются в продукте в отдельной вкладке "Цвет товара" Добавлены alt и title с названием товара для изображений товаров Теперь если выбран вариант "Изображение + название", но у товара нет главного изображения - отображается заглушка Если активен вариант отображения "Цвет + название", но у товара не заполнен HTML-цвет - выводится маленькая миниатюра Если товара нет на складе, он отображается прозрачным Исправлено отображение акционной цены, если акция закончилась Увеличение скорости работы за счет оптимизации запросов  
      Изменения в версии 1.4.1 (26.02.2019)
      Добавлена поддержка версии OpenCart 3 Исправлено отображение товаров при выводе "только цвет". Обновлены минимизированные стили CSS Добавлена универсальная адаптация под любую тему (автоматическая) В версии для OpenCart 3 временно нет возможности вывести цвета в категорию  
      Изменения в версии 1.4 (10.09.2018)
      Теперь цены отображаются правильно, если на связанный товар установлена скидка Цена товара теперь рассчитывается с налогом, если он установлен Появилась возможность задания размера миниатюр в px, если выбран способ отображения "Миниатюра + название" В связанных товарах все цвета теперь отображаются в одинаковом порядке Убрана ссылка цвета на сам активный товар, если мы находимся в нем Убран slick-carousel Добавлена возможность активации минимизированных стилей Добавлена адаптивная версия модуля Исправлена совместимость с некоторыми шаблонами и модулями Исправлена ошибка которая появлялась если удалить название цвета Добавлена более подробная инструкция к модулю  
      Изменения в версии 1.3
      Возможность указать селектор для отображения модуля в любом месте шаблона (в схему по прежнему нужно добавлять) Новые отображения цветов в карточке товара Возможность отображать цвета товара в категории в списке товаров с переходов в товары (пример) Возможность отключить стандартные стили и подключить минималистичные (пример) Возможность включить или выключить slick-carousel Минималистичные стили заменили полное отключение стилей  
      Изменения в версии 1.2
      Добавлено 3 вида внешнего вида отображения модуля Добавлена возможность вместо изображения товара указать его цвет в формате html (#000000) Добавлена возможность убирать / отображать название цвета Добавлена цена под названием товара с другим цветом Добавлена возможность отображать / скрывать цену под названием товара с другим цветом Добавлена возможность убирать стандартные стили оформления. Теперь при установке связки цветов, данные автоматически прописываются в обоих товарах Обновлённый CSS-код, позволяет Вам оформить модуль по Вашим желаниям, даже с минимальными знаниями CSS Добавлена поддержка версии ocStore 2.1  
      Изменения в версии 1.1
      Добавлен интерфейс модуля Добавлена возможность использовать схемы для расположения в товаре Добавлены файлы локализации Добавлены стили оформления Добавлена карусель цветов slick-carousel Добавлен удобный AJAX выпадающий список для выбора цвета товара  
      Инструкция в архиве.
       
      Дополнительно:
      Для версии OpenCart 3.0 временно недоступно обновление 1.5. Актуальная версия: 1.4. Извините за неудобства.
       
      Лицензия:
      Модуль продается с лицензией на сайт. Одна покупка = Один домен Покупая копию модуля вы получаете право на использование. Распространения модуль платно или бесплатно нарушает лицензию и грозит обнулением покупки, а так же уголовной ответственность предусмотренной статей 146 УК РФ (Нарушение авторских и смежных прав)  Автор оставляет за собой право изменят условия предоставления лицензии, изменения цены и стоков продления лицензии. Все доработки, переработки и изменения функционала не входят в стоимость модуля и оплачиваются отдельно по письменной договоренности с автором.  
      Тип распространения:
      Как есть Добавил Leingard Добавлено 03.12.2017 Категория Серии, Комплекты Системные требования PHP 5.6+ Сайт разработчика Старая цена 500 Метод активации По запросу в ЛС
      По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.1
      2.0 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Да  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.