rock Опубліковано: 7 грудня 2011 Share Опубліковано: 7 грудня 2011 Как сделать что бы товар не отображался в магазине, если он закончился? Перерыл весь форум, но ответа не нашел для своей версии Opencart 1.5.1 Было бы вообще идеально если бы кнопка добавить в корзину, менялась бы на нет в наличии. Буду очень благодарен за помощь! Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 7 грудня 2011 Share Опубліковано: 7 грудня 2011 . in_stock.zip 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 freelancer, спасибо огромное, вечером буду пробовать. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 Не получается. Помогите кому не сложно. Вот 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; ?> Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 Или подскажите что в этих файлах поменять. Только поподробней плиз. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 грудня 2011 Share Опубліковано: 9 грудня 2011 это для каталога. для продукта посмотрите как я сделал и сделайте по аналогии. 1 Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 9 грудня 2011 Share Опубліковано: 9 грудня 2011 .Подскажите,куда нужно скопировать Ваш файлик. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 10 грудня 2011 Автор Share Опубліковано: 10 грудня 2011 это для каталога. для продукта посмотрите как я сделал и сделайте по аналогии. freelancer Спасибо, все получилось. Я так понял что это изменение меняет только значок в каталоге на нет в наличии? Просто когда переходиш на страницу товара, его можно добавить в корзину. Можно-ли зделать что-бы товар нельзя было дабавлять в корзину? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 хороший вопрос. как известно, многие магазины не удаляют товары, даже которых нет на складе (может, их подвезут позже, а может и нет). это крайне полезно для индексации роботами. человек перешел, конкретный товар не нашел , но может ознакомится с аналогом и сделать заказ тем не менее. присоединяюсь к вопросу, в идеале, как только заканчивается товар, то происходят след.действия: 1. рядом с товаром пишется "нет на складе" 2. кнопка "в корзину" становится неактивна или хотя бы 2ой пункт, первую фразу можно и руками прописывать, не смертельно. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 1й пункт уже реализован движком in_stock2.zip 1 Надіслати Поділитися на інших сайтах More sharing options... pavlov1979 Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 1й пункт уже реализован движком Подскажите,куда что нужно залить,желательно по пунктам Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 у меня в профиле краткая инструкция по применению патчей 1 Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 скачал сам патч, потом программу Tortoise SVN. она только из контекстного меню вызывается. и плюс, я не понимаю, как пропатчить файлы на удаленном сервере. жаль что нельзя просто скопировать , как обычные модули. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 почему ж нельзя? можно по ssh. или качайте на свой компутер, патчите и выкладывайте на сервер 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Что бы товар не отображался если он закончился Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 freelancer, спасибо огромное, вечером буду пробовать. Надіслати Поділитися на інших сайтах More sharing options...
rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 Не получается. Помогите кому не сложно. Вот 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; ?> Надіслати Поділитися на інших сайтах More sharing options...
rock Опубліковано: 8 грудня 2011 Автор Share Опубліковано: 8 грудня 2011 Или подскажите что в этих файлах поменять. Только поподробней плиз. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 грудня 2011 Share Опубліковано: 9 грудня 2011 это для каталога. для продукта посмотрите как я сделал и сделайте по аналогии. 1 Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 9 грудня 2011 Share Опубліковано: 9 грудня 2011 .Подскажите,куда нужно скопировать Ваш файлик. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 10 грудня 2011 Автор Share Опубліковано: 10 грудня 2011 это для каталога. для продукта посмотрите как я сделал и сделайте по аналогии. freelancer Спасибо, все получилось. Я так понял что это изменение меняет только значок в каталоге на нет в наличии? Просто когда переходиш на страницу товара, его можно добавить в корзину. Можно-ли зделать что-бы товар нельзя было дабавлять в корзину? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 хороший вопрос. как известно, многие магазины не удаляют товары, даже которых нет на складе (может, их подвезут позже, а может и нет). это крайне полезно для индексации роботами. человек перешел, конкретный товар не нашел , но может ознакомится с аналогом и сделать заказ тем не менее. присоединяюсь к вопросу, в идеале, как только заканчивается товар, то происходят след.действия: 1. рядом с товаром пишется "нет на складе" 2. кнопка "в корзину" становится неактивна или хотя бы 2ой пункт, первую фразу можно и руками прописывать, не смертельно. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 1й пункт уже реализован движком in_stock2.zip 1 Надіслати Поділитися на інших сайтах More sharing options... pavlov1979 Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 1й пункт уже реализован движком Подскажите,куда что нужно залить,желательно по пунктам Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 у меня в профиле краткая инструкция по применению патчей 1 Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 скачал сам патч, потом программу Tortoise SVN. она только из контекстного меню вызывается. и плюс, я не понимаю, как пропатчить файлы на удаленном сервере. жаль что нельзя просто скопировать , как обычные модули. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 почему ж нельзя? можно по ssh. или качайте на свой компутер, патчите и выкладывайте на сервер 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Что бы товар не отображался если он закончился Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Evgeny Опубліковано: 9 грудня 2011 Share Опубліковано: 9 грудня 2011 .Подскажите,куда нужно скопировать Ваш файлик. Надіслати Поділитися на інших сайтах More sharing options...
rock Опубліковано: 10 грудня 2011 Автор Share Опубліковано: 10 грудня 2011 это для каталога. для продукта посмотрите как я сделал и сделайте по аналогии. freelancer Спасибо, все получилось. Я так понял что это изменение меняет только значок в каталоге на нет в наличии? Просто когда переходиш на страницу товара, его можно добавить в корзину. Можно-ли зделать что-бы товар нельзя было дабавлять в корзину? Надіслати Поділитися на інших сайтах More sharing options...
xsobakax Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 хороший вопрос. как известно, многие магазины не удаляют товары, даже которых нет на складе (может, их подвезут позже, а может и нет). это крайне полезно для индексации роботами. человек перешел, конкретный товар не нашел , но может ознакомится с аналогом и сделать заказ тем не менее. присоединяюсь к вопросу, в идеале, как только заканчивается товар, то происходят след.действия: 1. рядом с товаром пишется "нет на складе" 2. кнопка "в корзину" становится неактивна или хотя бы 2ой пункт, первую фразу можно и руками прописывать, не смертельно. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 10 грудня 2011 Share Опубліковано: 10 грудня 2011 1й пункт уже реализован движком in_stock2.zip 1 Надіслати Поділитися на інших сайтах More sharing options... pavlov1979 Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 1й пункт уже реализован движком Подскажите,куда что нужно залить,желательно по пунктам Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 у меня в профиле краткая инструкция по применению патчей 1 Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 скачал сам патч, потом программу Tortoise SVN. она только из контекстного меню вызывается. и плюс, я не понимаю, как пропатчить файлы на удаленном сервере. жаль что нельзя просто скопировать , как обычные модули. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 почему ж нельзя? можно по ssh. или качайте на свой компутер, патчите и выкладывайте на сервер 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Что бы товар не отображался если он закончился Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
pavlov1979 Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 1й пункт уже реализован движком Подскажите,куда что нужно залить,желательно по пунктам Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 11 грудня 2011 Share Опубліковано: 11 грудня 2011 у меня в профиле краткая инструкция по применению патчей 1 Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 скачал сам патч, потом программу Tortoise SVN. она только из контекстного меню вызывается. и плюс, я не понимаю, как пропатчить файлы на удаленном сервере. жаль что нельзя просто скопировать , как обычные модули. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 почему ж нельзя? можно по ssh. или качайте на свой компутер, патчите и выкладывайте на сервер 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Что бы товар не отображался если он закончился
xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 скачал сам патч, потом программу Tortoise SVN. она только из контекстного меню вызывается. и плюс, я не понимаю, как пропатчить файлы на удаленном сервере. жаль что нельзя просто скопировать , как обычные модули. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 почему ж нельзя? можно по ssh. или качайте на свой компутер, патчите и выкладывайте на сервер 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. xsobakax, там все можно руками поменять, делов на 5 минут. freelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий? Надіслати Поділитися на інших сайтах More sharing options...
xsobakax Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 12 грудня 2011 Share Опубліковано: 12 грудня 2011 freelancer, ОГРОМНОЕ Вам спасибо!!! :rolleyes: Все работает, все как я и хотел. спасибоfreelancer, а у вас нет случаем патча, что-бы товар который закончился отображался в самом конце списка категорий?скрипт написать не сложно, времени нет 1 Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options... rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options... xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options... monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options... Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options... chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 спасибо скрипт написать не сложно, времени нет Ну и так все отлично. Главное, что есть такие люди как Вы, которые не пройдут мимо, а помогут таким как я (я в этом деле новичок). Ещё раз спасибо. Надіслати Поділитися на інших сайтах More sharing options...
rock Опубліковано: 12 грудня 2011 Автор Share Опубліковано: 12 грудня 2011 попробовал руками - как обычно не получилось. у меня что-то вообще с этим тяжело. меняю куски нужные, все делаю вроде правильно - сайт "висит". где что не так - ума не приложу. А шаблон у вас какой стоит?Просто в патчах у freelancer, прописан путь catalog/view/theme/default/template/product/product.tpl, тоесть шаблон default. Может у вас стоит шаблон не default, а какойто другой? Если другой то путь будет catalog/view/theme/ваш шаблон/template/product/product.tpl Надіслати Поділитися на інших сайтах More sharing options...
xsobakax Опубліковано: 15 грудня 2011 Share Опубліковано: 15 грудня 2011 все верно, шаблон у меня не default. но я менял этот путь, соответственно. и все равно ) Надіслати Поділитися на інших сайтах More sharing options...
Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Доброго времени суток!Могли бы Вы подсказать,как сделать,что бы если товар продан,то он не отображается в списке товаров и клиент его не может увидеть. Т.е. выключить товар когда покупают последний. Т.к. товар штучный и второго такого не будет. Шаблон default. Opencart 1.5.1.3 Заранее спасибо! Надіслати Поділитися на інших сайтах More sharing options...
monax Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Т.е. выключить товар когда покупают последний.Такие манипуляции негативно повлияют на индексацию сайта. Надіслати Поділитися на інших сайтах More sharing options...
Evgeny Опубліковано: 16 грудня 2011 Share Опубліковано: 16 грудня 2011 Такие манипуляции негативно повлияют на индексацию сайта.Ну и ладно :) Для меня важнее - минимум лишней информации на сайте и отсутствие сомнения у клиента в выборе товара,в связи с показом кончившегося(и более ни когда не появившегося) товара. Надіслати Поділитися на інших сайтах More sharing options...
chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 у меня почему-то не патчится. tortoise пишет, что не находит этих файлов и имена файлов подсвечиваются красным... Надіслати Поділитися на інших сайтах More sharing options...
chump Опубліковано: 17 грудня 2011 Share Опубліковано: 17 грудня 2011 попробовал руками - тоже не получается, просто белая страница открывается... Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts