Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Что бы товар не отображался если он закончился


rock

Recommended Posts

Как сделать что бы товар не отображался в магазине, если он закончился?

Перерыл весь форум, но ответа не нашел для своей версии Opencart 1.5.1

Было бы вообще идеально если бы кнопка добавить в корзину, менялась бы на нет в наличии.

Буду очень благодарен за помощь!

Надіслати
Поділитися на інших сайтах


Не получается. Помогите кому не сложно.

Вот product.php

<?php  
class ControllerProductProduct extends Controller {
private $error = array(); 

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

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

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

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

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

		foreach (explode('_', $this->request->get['path']) 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')
				);
			}
		}
	}

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

	if (isset($this->request->get['manufacturer_id'])) {
		$this->data['breadcrumbs'][] = array( 
			'text'      => $this->language->get('text_brand'),
			'href'      => $this->url->link('product/manufacturer'),
			'separator' => $this->language->get('text_separator')
		);	

		$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']);

		if ($manufacturer_info) {	
			$this->data['breadcrumbs'][] = array(
				'text'	    => $manufacturer_info['name'],
				'href'	    => $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $this->request->get['manufacturer_id']),					
				'separator' => $this->language->get('text_separator')
			);
		}
	}

	if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_tag'])) {
		$url = '';

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

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

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

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

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

	if (isset($this->request->get['product_id'])) {
		$product_id = $this->request->get['product_id'];
	} else {
		$product_id = 0;
	}

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

	$product_info = $this->model_catalog_product->getProduct($product_id);

	$this->data['product_info'] = $product_info;

	if ($product_info) {
		$url = '';

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

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

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

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

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

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

		$this->data['breadcrumbs'][] = array(
			'text'      => $product_info['name'],
			'href'      => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']),
			'separator' => $this->language->get('text_separator')
		);			

		$this->document->setTitle($product_info['name']);
		$this->document->setDescription($product_info['meta_description']);
		$this->document->setKeywords($product_info['meta_keyword']);
		$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');

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

		$this->data['text_select'] = $this->language->get('text_select');
		$this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
		$this->data['text_model'] = $this->language->get('text_model');
		$this->data['text_reward'] = $this->language->get('text_reward');
		$this->data['text_points'] = $this->language->get('text_points');	
		$this->data['text_discount'] = $this->language->get('text_discount');
		$this->data['text_stock'] = $this->language->get('text_stock');
		$this->data['text_price'] = $this->language->get('text_price');
		$this->data['text_tax'] = $this->language->get('text_tax');
		$this->data['text_discount'] = $this->language->get('text_discount');
		$this->data['text_option'] = $this->language->get('text_option');
		$this->data['text_qty'] = $this->language->get('text_qty');
		$this->data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']);
		$this->data['text_or'] = $this->language->get('text_or');
		$this->data['text_write'] = $this->language->get('text_write');
		$this->data['text_note'] = $this->language->get('text_note');
		$this->data['text_share'] = $this->language->get('text_share');
		$this->data['text_wait'] = $this->language->get('text_wait');
		$this->data['text_tags'] = $this->language->get('text_tags');

		$this->data['entry_name'] = $this->language->get('entry_name');
		$this->data['entry_review'] = $this->language->get('entry_review');
		$this->data['entry_rating'] = $this->language->get('entry_rating');
		$this->data['entry_good'] = $this->language->get('entry_good');
		$this->data['entry_bad'] = $this->language->get('entry_bad');
		$this->data['entry_captcha'] = $this->language->get('entry_captcha');

		$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_upload'] = $this->language->get('button_upload');
		$this->data['button_continue'] = $this->language->get('button_continue');

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

		$this->data['tab_description'] = $this->language->get('tab_description');
		$this->data['tab_attribute'] = $this->language->get('tab_attribute');
		$this->data['tab_review'] = sprintf($this->language->get('tab_review'), $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']));
		$this->data['tab_related'] = $this->language->get('tab_related');

		$this->data['product_id'] = $this->request->get['product_id'];
		$this->data['manufacturer'] = $product_info['manufacturer'];
		$this->data['manufacturers'] = $this->url->link('product/manufacturer/product', 'manufacturer_id=' . $product_info['manufacturer_id']);
		$this->data['model'] = $product_info['model'];
		$this->data['reward'] = $product_info['reward'];
		$this->data['points'] = $product_info['points'];

		if ($product_info['quantity'] <= 0) {
			$this->data['stock'] = $product_info['stock_status'];
		} elseif ($this->config->get('config_stock_display')) {
			$this->data['stock'] = $product_info['quantity'];
		} else {
			$this->data['stock'] = $this->language->get('text_instock');
		}

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

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

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

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

		$results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

		foreach ($results as $result) {
			$this->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')) {
			$this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
		} else {
			$this->data['price'] = false;
		}

		if ((float)$product_info['special']) {
			$this->data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
		} else {
			$this->data['special'] = false;
		}

		if ($this->config->get('config_tax')) {
			$this->data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);
		} else {
			$this->data['tax'] = false;
		}

		$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

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

		foreach ($discounts as $discount) {
			$this->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')))
			);
		}

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

		foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { 
			if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox') { 
				$option_value_data = array();

				foreach ($option['option_value'] as $option_value) {
					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
						$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'],
							'price'                   => (float)$option_value['price'] ? $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) : false,
							'price_prefix'            => $option_value['price_prefix']
						);
					}
				}

				$this->data['options'][] = array(
					'product_option_id' => $option['product_option_id'],
					'option_id'         => $option['option_id'],
					'name'              => $option['name'],
					'type'              => $option['type'],
					'option_value'      => $option_value_data,
					'required'          => $option['required']
				);					
			} elseif ($option['type'] == 'text' || $option['type'] == 'textarea' || $option['type'] == 'file' || $option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {
				$this->data['options'][] = array(
					'product_option_id' => $option['product_option_id'],
					'option_id'         => $option['option_id'],
					'name'              => $option['name'],
					'type'              => $option['type'],
					'option_value'      => $option['option_value'],
					'required'          => $option['required']
				);						
			}
		}

		if ($product_info['minimum']) {
			$this->data['minimum'] = $product_info['minimum'];
		} else {
			$this->data['minimum'] = 1;
		}

		$this->data['review_status'] = $this->config->get('config_review_status');
		$this->data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);
		$this->data['rating'] = (int)$product_info['rating'];
		$this->data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
		$this->data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);

		$this->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'));
			} else {
				$image = false;
			}

			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_review_status')) {
				$rating = (int)$result['rating'];
			} else {
				$rating = false;
			}

			$this->data['products'][] = array(
				'product_id' => $result['product_id'],
				'thumb'   	 => $image,
				'name'    	 => $result['name'],
				'price'   	 => $price,
				'special' 	 => $special,
				'rating'     => $rating,
				'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
				'href'    	 => $this->url->link('product/product', 'product_id=' . $result['product_id']),
			);
		}	

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

		$results = $this->model_catalog_product->getProductTags($this->request->get['product_id']);

		foreach ($results as $result) {
			$this->data['tags'][] = array(
				'tag'  => $result['tag'],
				'href' => $this->url->link('product/search', 'filter_tag=' . $result['tag'])
			);
		}

		$this->model_catalog_product->updateViewed($this->request->get['product_id']);

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

		$this->children = array(
			'common/column_left',
			'common/column_right',
			'common/content_top',
			'common/content_bottom',
			'common/footer',
			'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['manufacturer_id'])) {
			$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];
		}			

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

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

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

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

     		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('text_error'),
			'href'      => $this->url->link('product/product', $url . '&product_id=' . $product_id),
       		'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',
			'common/header'
		);

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

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

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

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

	if (isset($this->request->get['page'])) {
		$page = $this->request->get['page'];
	} else {
		$page = 1;
	}  

	$this->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) {
       	$this->data['reviews'][] = array(
       		'author'     => $result['author'],
			'text'       => strip_tags($result['text']),
			'rating'     => (int)$result['rating'],
       		'reviews'    => sprintf($this->language->get('text_reviews'), (int)$review_total),
       		'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->text = $this->language->get('text_pagination');
	$pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');

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

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

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

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

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

	$json = array();

	if ((strlen(utf8_decode($this->request->post['name'])) < 3) || (strlen(utf8_decode($this->request->post['name'])) > 25)) {
		$json['error'] = $this->language->get('error_name');
	}

	if ((strlen(utf8_decode($this->request->post['text'])) < 25) || (strlen(utf8_decode($this->request->post['text'])) > 1000)) {
		$json['error'] = $this->language->get('error_text');
	}

	if (!$this->request->post['rating']) {
		$json['error'] = $this->language->get('error_rating');
	}

	if (!isset($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) {
		$json['error'] = $this->language->get('error_captcha');
	}

	if (($this->request->server['REQUEST_METHOD'] == 'POST') && !isset($json['error'])) {
		$this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post);

		$json['success'] = $this->language->get('text_success');
	}

	$this->load->library('json');

	$this->response->setOutput(Json::encode($json));
}

public function captcha() {
	$this->load->library('captcha');

	$captcha = new Captcha();

	$this->session->data['captcha'] = $captcha->getCode();

	$captcha->showImage();
}

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

	$json = array();

	if (isset($this->request->files['file']['name']) && $this->request->files['file']['name']) {
		if ((strlen(utf8_decode($this->request->files['file']['name'])) < 3) || (strlen(utf8_decode($this->request->files['file']['name'])) > 128)) {
       		$json['error'] = $this->language->get('error_filename');
  		}	  	

		$allowed = array();

		$filetypes = explode(',', $this->config->get('config_upload_allowed'));

		foreach ($filetypes as $filetype) {
			$allowed[] = trim($filetype);
		}

		if (!in_array(substr(strrchr($this->request->files['file']['name'], '.'), 1), $allowed)) {
			$json['error'] = $this->language->get('error_filetype');
      		}	

		if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
			$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
		}
	} else {
		$json['error'] = $this->language->get('error_upload');
	}

	if (($this->request->server['REQUEST_METHOD'] == 'POST') && !isset($json['error'])) {
		if (is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {
			$file = basename($this->request->files['file']['name']) . '.' . md5(rand());

			// Hide the uploaded file name sop people can not link to it directly.
			$this->load->library('encryption');

			$encryption = new Encryption($this->config->get('config_encryption'));

			$json['file'] = $encryption->encrypt($file);

			move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $file);
		}

		$json['success'] = $this->language->get('text_upload');
	}	

	$this->load->library('json');

	$this->response->setOutput(Json::encode($json));		
}
}
?>

Вот tpl.

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
 <div class="breadcrumb">
   <?php foreach ($breadcrumbs as $breadcrumb) { ?>
   <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
   <?php } ?>
 </div>
 <h1><?php echo $heading_title; ?></h1>
 <div class="product-info">
   <?php if ($thumb || $images) { ?>
   <div class="left">
     <?php if ($thumb) { ?>
     <div class="image"><a href="<?php echo $popup; ?>" title="<?php echo $heading_title; ?>" class="fancybox" rel="fancybox"><img src="<?php echo $thumb; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" id="image" /></a></div>
     <?php } ?>
     <?php if ($images) { ?>
     <div class="image-additional">
       <?php foreach ($images as $image) { ?>
       <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="fancybox" rel="fancybox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>
       <?php } ?>
     </div>
     <?php } ?>
   </div>
   <?php } ?>
   <div class="right">
     <div class="description">
       <?php if ($manufacturer) { ?>
       <span><?php echo $text_manufacturer; ?></span> <a href="<?php echo $manufacturers; ?>"><?php echo $manufacturer; ?></a><br />
       <?php } ?>
       <span><?php echo $text_model; ?></span> <?php echo $model; ?><br />
       <span><?php echo $text_reward; ?></span> <?php echo $reward; ?><br />
       <span><?php echo $text_stock; ?></span> <?php echo $stock; ?></div>
     <?php if ($price) { ?>
     <div class="price"><?php echo $text_price; ?>
       <?php if (!$special) { ?>
       <?php echo $price; ?>
       <?php } else { ?>
       <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
       <?php } ?>
       <br />
       <?php if ($tax) { ?>
       <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
       <?php } ?>
       <?php if ($points) { ?>
       <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span> <br />
       <?php } ?>
       <?php if ($discounts) { ?>
       <br />
       <div class="discount">
         <?php foreach ($discounts as $discount) { ?>
         <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
         <?php } ?>
       </div>
       <?php } ?>
     </div>
     <?php } ?>
     <?php if ($options) { ?>
     <div class="options">
       <h2><?php echo $text_option; ?></h2>
       <br />
       <?php foreach ($options as $option) { ?>
       <?php if ($option['type'] == 'select') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <select name="option[<?php echo $option['product_option_id']; ?>]">
           <option value=""><?php echo $text_select; ?></option>
           <?php foreach ($option['option_value'] as $option_value) { ?>
           <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
           <?php if ($option_value['price']) { ?>
           (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
           <?php } ?>
           </option>
           <?php } ?>
         </select>
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'radio') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <?php foreach ($option['option_value'] as $option_value) { ?>
         <input type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" />
         <label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?>
           <?php if ($option_value['price']) { ?>
           (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
           <?php } ?>
         </label>
         <br />
         <?php } ?>
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'checkbox') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <?php foreach ($option['option_value'] as $option_value) { ?>
         <input type="checkbox" name="option[<?php echo $option['product_option_id']; ?>][]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" />
         <label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"> <?php echo $option_value['name']; ?>
           <?php if ($option_value['price']) { ?>
           (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)
           <?php } ?>
         </label>
         <br />
         <?php } ?>
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'text') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" />
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'textarea') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <textarea name="option[<?php echo $option['product_option_id']; ?>]" cols="40" rows="5"><?php echo $option['option_value']; ?></textarea>
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'file') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <a id="button-option-<?php echo $option['product_option_id']; ?>" class="button"><span><?php echo $button_upload; ?></span></a>
         <input type="hidden" name="option[<?php echo $option['product_option_id']; ?>]" value="" />
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'date') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="date" />
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'datetime') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="datetime" />
       </div>
       <br />
       <?php } ?>
       <?php if ($option['type'] == 'time') { ?>
       <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
         <?php if ($option['required']) { ?>
         <span class="required">*</span>
         <?php } ?>
         <b><?php echo $option['name']; ?>:</b><br />
         <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="time" />
       </div>
       <br />
       <?php } ?>
       <?php } ?>
     </div>
     <?php } ?>
     <div class="cart">
       <div><?php echo $text_qty; ?>
         <input type="text" name="quantity" size="2" value="<?php echo $minimum; ?>" />
         <input type="hidden" name="product_id" size="2" value="<?php echo $product_id; ?>" />
          <a id="button-cart" class="button"><span><?php echo $button_cart; ?></span></a></div>
       <div><span>   <?php echo $text_or; ?>   </span></div>
       <div><a onclick="addToWishList('<?php echo $product_id; ?>');"><?php echo $button_wishlist; ?></a><br />
         <a onclick="addToCompare('<?php echo $product_id; ?>');"><?php echo $button_compare; ?></a></div>
       <?php if ($minimum > 1) { ?>
       <div class="minimum"><?php echo $text_minimum; ?></div>
       <?php } ?>
     </div>
     <?php if ($review_status) { ?>
     <div class="review">
       <div><img src="catalog/view/theme/default/image/stars-<?php echo $rating; ?>.png" alt="<?php echo $reviews; ?>" />  <a onclick="$('a[href=\'#tab-review\']').trigger('click');"><?php echo $reviews; ?></a>  |  <a onclick="$('a[href=\'#tab-review\']').trigger('click');"><?php echo $text_write; ?></a></div>
       <div class="share"><!-- AddThis Button BEGIN -->
         <div class="addthis_default_style"><a class="addthis_button_compact"><?php echo $text_share; ?></a> <a class="addthis_button_email"></a><a class="addthis_button_print"></a> <a class="addthis_button_facebook"></a> <a class="addthis_button_twitter"></a></div>
         <script type="text/javascript" src="http-~~-//s7.addthis.com/js/250/addthis_widget.js"></script> 
         <!-- AddThis Button END --> 
       </div>
     </div>
     <?php } ?>
   </div>
 </div>
 <span class="tab-title"><?php echo $tab_description; ?></span>
 <div id="tab-description" class="tab-content"><?php echo $description; ?></div>
 <?php if ($attribute_groups) { ?>
 <span class="tab-title"><?php echo $tab_attribute; ?></span>
 <div id="tab-attribute" class="tab-content">
   <table class="attribute">
     <?php foreach ($attribute_groups as $attribute_group) { ?>
     <thead>
       <tr>
         <td colspan="2"><?php echo $attribute_group['name']; ?></td>
       </tr>
     </thead>
     <tbody>
       <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
       <tr>
         <td><?php echo $attribute['name']; ?></td>
         <td><?php echo $attribute['text']; ?></td>
       </tr>
       <?php } ?>
     </tbody>
     <?php } ?>
   </table>
 </div>
 <?php } ?>
 <?php if ($review_status) { ?>
 <span class="tab-title"><?php echo $tab_review; ?></span>
 <div id="tab-review" class="tab-content">
   <div id="review"></div>
   <h2 id="review-title"><?php echo $text_write; ?></h2>
   <b><?php echo $entry_name; ?></b><br />
   <input type="text" name="name" value="" />
   <br />
   <br />
   <b><?php echo $entry_review; ?></b>
   <textarea name="text" cols="40" rows="8" style="width: 98%;"></textarea>
   <span style="font-size: 11px;"><?php echo $text_note; ?></span><br />
   <br />
   <b><?php echo $entry_rating; ?></b> <span><?php echo $entry_bad; ?></span> 
   <input type="radio" name="rating" value="1" />
    
   <input type="radio" name="rating" value="2" />
    
   <input type="radio" name="rating" value="3" />
    
   <input type="radio" name="rating" value="4" />
    
   <input type="radio" name="rating" value="5" />
     <span><?php echo $entry_good; ?></span><br />
   <br />
   <b><?php echo $entry_captcha; ?></b><br />
   <input type="text" name="captcha" value="" />
   <br />
   <img src="index.php?route=product/product/captcha" alt="" id="captcha" /><br />
   <br />
   <div class="buttons">
     <div class="right"><a id="button-review" class="button"><span><?php echo $button_continue; ?></span></a></div>
   </div>
 </div>
 <?php } ?>
 <?php if ($products) { ?>
 <span class="tab-title"><?php echo $tab_related; ?> (<?php echo count($products); ?>)</span>
 <div id="tab-related" class="tab-content">
   <div class="box-product">
     <?php foreach ($products as $product) { ?>
     <div>
       <?php if ($product['thumb']) { ?>
       <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
       <?php } ?>
       <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
       <?php if ($product['price']) { ?>
       <div class="price">
         <?php if (!$product['special']) { ?>
         <?php echo $product['price']; ?>
         <?php } else { ?>
         <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
         <?php } ?>
       </div>
       <?php } ?>
       <?php if ($product['rating']) { ?>
       <div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div>
       <?php } ?>
       <a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button"><span><?php echo $button_cart; ?></span></a></div>
     <?php } ?>
   </div>
 </div>
 <?php } ?>
 <?php if ($tags) { ?>
 <div class="tags"><b><?php echo $text_tags; ?></b>
   <?php foreach ($tags as $tag) { ?>
   <a href="<?php echo $tag['href']; ?>"><?php echo $tag['tag']; ?></a>,
   <?php } ?>
 </div>
 <?php } ?>
 <?php echo $content_bottom; ?></div>
<script type="text/javascript"><!--
$('.fancybox').fancybox({cyclic: true});
//--></script>
<script type="text/javascript"><!--
$('#button-cart').bind('click', function() {
$.ajax({
	url: 'index.php?route=checkout/cart/update',
	type: 'post',
	data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
	dataType: 'json',
	success: function(json) {
		$('.success, .warning, .attention, information, .error').remove();

		if (json['error']) {
			if (json['error']['warning']) {
				$('#notification').html('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

				$('.warning').fadeIn('slow');
			}

			for (i in json['error']) {
				$('#option-' + i).after('<span class="error">' + json['error'][i] + '</span>');
			}
		}	 

		if (json['success']) {
			$('#notification').html('<div class="attention" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');

			$('.attention').fadeIn('slow');

			$('#cart_total').html(json['total']);

			var image = $('#image').offset();
			var cart  = $('#cart').offset();

			$('#image').before('<img src="' + $('#image').attr('src') + '" id="temp" style="position: absolute; top: ' + image.top + 'px; left: ' + image.left + 'px;" />');

			params = {
				top : cart.top + 'px',
				left : cart.left + 'px',
				opacity : 0.0,
				width : $('#cart').width(),  
				height : $('#cart').height()
			};		

			$('#temp').animate(params, 'slow', false, function () {
				$('#temp').remove();
			});		
		}	
	}
});
});
//--></script>
<?php if ($options) { ?>
<script type="text/javascript" src="catalog/view/javascript/jquery/ajaxupload.js"></script>
<?php foreach ($options as $option) { ?>
<?php if ($option['type'] == 'file') { ?>
<script type="text/javascript"><!--
new AjaxUpload('#button-option-<?php echo $option['product_option_id']; ?>', {
action: 'index.php?route=product/product/upload',
name: 'file',
autoSubmit: true,
responseType: 'json',
onSubmit: function(file, extension) {
	$('#button-option-<?php echo $option['product_option_id']; ?>').after('<img src="catalog/view/theme/default/image/loading.gif" id="loading" style="padding-left: 5px;" />');
},
onComplete: function(file, json) {
	$('.error').remove();

	if (json.success) {
		alert(json.success);

		$('input[name=\'option[<?php echo $option['product_option_id']; ?>]\']').attr('value', json.file);
	}

	if (json.error) {
		$('#option-<?php echo $option['product_option_id']; ?>').after('<span class="error">' + json.error + '</span>');
	}

	$('#loading').remove();	
}
});
//--></script>
<?php } ?>
<?php } ?>
<?php } ?>
<script type="text/javascript"><!--
$('#review .pagination a').live('click', function() {
$('#review').slideUp('slow');

$('#review').load(this.href);

$('#review').slideDown('slow');

return false;
});			

$('#review').load('index.php?route=product/product/review&product_id=<?php echo $product_id; ?>');

$('#button-review').bind('click', function() {
$.ajax({
	type: 'POST',
	url: 'index.php?route=product/product/write&product_id=<?php echo $product_id; ?>',
	dataType: 'json',
	data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),
	beforeSend: function() {
		$('.success, .warning').remove();
		$('#button-review').attr('disabled', true);
		$('#review-title').after('<div class="attention"><img src="catalog/view/theme/default/image/loading.gif" alt="" /> <?php echo $text_wait; ?></div>');
	},
	complete: function() {
		$('#button-review').attr('disabled', false);
		$('.attention').remove();
	},
	success: function(data) {
		if (data.error) {
			$('#review-title').after('<div class="warning">' + data.error + '</div>');
		}

		if (data.success) {
			$('#review-title').after('<div class="success">' + data.success + '</div>');

			$('input[name=\'name\']').val('');
			$('textarea[name=\'text\']').val('');
			$('input[name=\'rating\']:checked').attr('checked', '');
			$('input[name=\'captcha\']').val('');
		}
	}
});
});
//--></script> 
<script type="text/javascript"><!--
$('#tabs a').tabs();
//--></script> 
<script type="text/javascript" src="catalog/view/javascript/jquery/ui/jquery-ui-timepicker-addon.js"></script> 
<script type="text/javascript"><!--
if ($.browser.msie && $.browser.version == 6) {
$('.date, .datetime, .time').bgIframe();
}
$('.date').datepicker({dateFormat: 'yy-mm-dd'});
$('.datetime').datetimepicker({
dateFormat: 'yy-mm-dd',
timeFormat: 'h:m'
});
$('.time').timepicker({timeFormat: 'h:m'});
//--></script> 
<?php echo $footer; ?>

Надіслати
Поділитися на інших сайтах


это для каталога.

для продукта посмотрите как я сделал и сделайте по аналогии.

freelancer

Спасибо, все получилось.

Я так понял что это изменение меняет только значок в каталоге на нет в наличии?

Просто когда переходиш на страницу товара, его можно добавить в корзину.

Можно-ли зделать что-бы товар нельзя было дабавлять в корзину?

Надіслати
Поділитися на інших сайтах


хороший вопрос.

как известно, многие магазины не удаляют товары, даже которых нет на складе (может, их подвезут позже, а может и нет).

это крайне полезно для индексации роботами.

человек перешел, конкретный товар не нашел , но может ознакомится с аналогом и сделать заказ тем не менее.

присоединяюсь к вопросу, в идеале, как только заканчивается товар, то происходят след.действия:

1. рядом с товаром пишется "нет на складе"

2. кнопка "в корзину" становится неактивна

или хотя бы 2ой пункт, первую фразу можно и руками прописывать, не смертельно.

Надіслати
Поділитися на інших сайтах


скачал сам патч, потом программу Tortoise SVN.

она только из контекстного меню вызывается.

и плюс, я не понимаю, как пропатчить файлы на удаленном сервере.

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

Надіслати
Поділитися на інших сайтах


freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes:

Все работает, все как я и хотел.

xsobakax, там все можно руками поменять, делов на 5 минут.

freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?

Надіслати
Поділитися на інших сайтах


попробовал руками - как обычно не получилось.

у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу.

Надіслати
Поділитися на інших сайтах


freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes:

Все работает, все как я и хотел.

спасибо

freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?

скрипт написать не сложно, времени нет
  • +1 1
Надіслати
Поділитися на інших сайтах

спасибо

скрипт написать не сложно, времени нет

Ну и так все отлично.

Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок).

Ещё раз спасибо.

Надіслати
Поділитися на інших сайтах


попробовал руками - как обычно не получилось.

у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу.

А шаблон у вас какой стоит?

Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default.

Может у вас стоит шаблон не default, а какойто другой?

Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl

Надіслати
Поділитися на інших сайтах


Доброго времени суток!

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

Т.е. выключить товар когда покупают последний.

Т.к. товар штучный и второго такого не будет.

Шаблон default.

Opencart 1.5.1.3

Заранее спасибо!

Надіслати
Поділитися на інших сайтах


Такие манипуляции негативно повлияют на индексацию сайта.

Ну и ладно :)

Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.