pr1h0d Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Привествую камрады! Возникла проблема, при создании нового макета для страницы товаров. Имеем opencart 2.0.1 Что делаю:создал файл landing.php в /catalog/controler/productскопировал в него код c /catalog/controler/product/product.php меняю название класса ControllerProductProduct на ControllerProductLandingменяю путь к шаблону if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/product.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/product.tpl', $data)); } на if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/landing.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/landing.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/landing.tpl', $data)); } создаю файл landing.tpl в /catalog/view/theme/default/template/productскопировал в него код с /catalog/view/theme/default/template/product/product.tplДобавляю в админке новый макет Название Landing путь product/landingОпределенному товару указываю созданный макет "Landing"Меняю что-либо в landing.tpl но изменений на странице нет. Добавление любого модуля к данному макету работает (выводит в нужной позиции). Делал по аналогии с манами к версии 1.5.x записал все действия видяшка Плюс в репу всем, кто даст дельный ответ. Спасибо Что делаю не так? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 товар это URL route=product/product. ваш route=product/landing (с шаблоном landing.tpl) никак не используется движком (@виртуальный@ макет "product/landing" остается виртуальным - только для привязки модулей). Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 не совсем ясно, как тогда сделать разные представления страниц для определенных товаров? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 в контроллере товара проверяйте layout и по нему подставляйте нужный .tpl Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 колдовать нужно с этими строками? if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/landing.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/landing.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/landing.tpl', $data)); } } else { $url = ''; в контроллере товара проверяйте layout и по нему подставляйте нужный .tpl Если не геморно и делов на 2 строки кода, прошу помочь. В противном случае готов за пару денег купить услугу, ибо с пыхом я не особо дружу. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? я так понимаю, что id route будет один - product/product, а layout-ов много разных upd нашел такой материал тыц Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 (изменено) $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } Изменено 25 декабря 2014 пользователем afwollis $product_info['product_id'] > $this->request->get['product_id'] Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Благодарен! но увы в логах 2014-12-25 15:38:35 - PHP Notice: Error: Could not load template /home/***/www/catalog/view/theme/default/template/product/landing17.tpl! in /home/***/www/system/modification/system/engine/loader.php on line 45и пустая страница при обновлении. переименовав файл landing.tpl на landing17.tpl результата не дало. привожу полный код controler/product.php <?php class ControllerProductProduct extends Controller { private $error = array(); public function index() { $this->load->language('product/product'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } $this->load->model('catalog/manufacturer'); if (isset($this->request->get['manufacturer_id'])) { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_brand'), 'href' => $this->url->link('product/manufacturer') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']); if ($manufacturer_info) { $data['breadcrumbs'][] = array( 'text' => $manufacturer_info['name'], 'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url) ); } } if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_search'), 'href' => $this->url->link('product/search', $url) ); } if (isset($this->request->get['product_id'])) { $product_id = (int)$this->request->get['product_id']; } else { $product_id = 0; } $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']) ); $this->document->setTitle($product_info['meta_title']); $this->document->setDescription($product_info['meta_description']); $this->document->setKeywords($product_info['meta_keyword']); $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); $data['heading_title'] = $product_info['name']; $data['text_select'] = $this->language->get('text_select'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_sku'] = $this->language->get('text_sku'); $data['text_reward'] = $this->language->get('text_reward'); $data['text_points'] = $this->language->get('text_points'); $data['text_stock'] = $this->language->get('text_stock'); $data['text_discount'] = $this->language->get('text_discount'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_option'] = $this->language->get('text_option'); $data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); $data['text_write'] = $this->language->get('text_write'); $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL')); $data['text_note'] = $this->language->get('text_note'); $data['text_tags'] = $this->language->get('text_tags'); $data['text_related'] = $this->language->get('text_related'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_qty'] = $this->language->get('entry_qty'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_review'] = $this->language->get('entry_review'); $data['entry_rating'] = $this->language->get('entry_rating'); $data['entry_good'] = $this->language->get('entry_good'); $data['entry_bad'] = $this->language->get('entry_bad'); $data['entry_captcha'] = $this->language->get('entry_captcha'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_upload'] = $this->language->get('button_upload'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']); $data['product_id'] = (int)$this->request->get['product_id']; $data['manufacturer'] = $product_info['manufacturer']; $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']); $data['model'] = $product_info['model']; $data['sku'] = $product_info['sku']; $data['reward'] = $product_info['reward']; $data['points'] = $product_info['points']; $data['points'] = $product_info['points']; if ($product_info['quantity'] <= 0) { $data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $data['stock'] = $product_info['quantity']; } else { $data['stock'] = $this->language->get('text_instock'); } $this->load->model('tool/image'); if ($product_info['image']) { $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')); } else { $data['popup'] = ''; } if ($product_info['image']) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $data['thumb'] = ''; } $data['images'] = array(); $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['special'] = false; } if ($this->config->get('config_tax')) { $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']); } else { $data['tax'] = false; } $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } if ($product_info['minimum']) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } $data['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); $data['rating'] = (int)$product_info['rating']; $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); $data['products'] = array(); $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'price' => $price, 'sku' => $sku, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } $data['tags'] = array(); if ($product_info['tag']) { $tags = explode(',', $product_info['tag']); foreach ($tags as $tag) { $data['tags'][] = array( 'tag' => trim($tag), 'href' => $this->url->link('product/search', 'tag=' . trim($tag)) ); } } $data['text_payment_recurring'] = $this->language->get('text_payment_recurring'); $data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']); $this->model_catalog_product->updateViewed($this->request->get['product_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } public function review() { $this->load->language('product/product'); $this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $data['reviews'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data)); } } public function getRecurringDescription() { $this->language->load('product/product'); $this->load->model('catalog/product'); if (isset($this->request->post['product_id'])) { $product_id = $this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['recurring_id'])) { $recurring_id = $this->request->post['recurring_id']; } else { $recurring_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = $this->request->post['quantity']; } else { $quantity = 1; } $product_info = $this->model_catalog_product->getProduct($product_id); $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id); $json = array(); if ($product_info && $recurring_info) { if (!$json) { $frequencies = array( 'day' => $this->language->get('text_day'), 'week' => $this->language->get('text_week'), 'semi_month' => $this->language->get('text_semi_month'), 'month' => $this->language->get('text_month'), 'year' => $this->language->get('text_year'), ); if ($recurring_info['trial_status'] == 1) { $price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' '; } else { $trial_text = ''; } $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); if ($recurring_info['duration']) { $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } else { $text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } $json['success'] = $text; } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function write() { $this->load->language('product/product'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) { $json['error'] = $this->language->get('error_name'); } if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) { $json['error'] = $this->language->get('error_text'); } if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { $json['error'] = $this->language->get('error_rating'); } if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) { $json['error'] = $this->language->get('error_captcha'); } unset($this->session->data['captcha']); if (!isset($json['error'])) { $this->load->model('catalog/review'); $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post); $json['success'] = $this->language->get('text_success'); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 >> в логах файл landing17.tpl не создали >> переименовав файл landing.tpl на landing17.tpl результата не дало. как определяли? я даже скачал и поставил opencart_2010 - всё ок. после создания нового layout (в чистой установке получился id=14) и указания его товару Sony VAIO товар выводится с шаблоном "product_layout14.tpl". замена в шаблоне <ul class="thumbnails">на <?php echo 'zhopa'; ?> <ul class="thumbnails">исправно выводит zhopy Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 не совсем ясно, как тогда сделать разные представления страниц для определенных товаров? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 в контроллере товара проверяйте layout и по нему подставляйте нужный .tpl Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 колдовать нужно с этими строками? if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/landing.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/landing.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/landing.tpl', $data)); } } else { $url = ''; в контроллере товара проверяйте layout и по нему подставляйте нужный .tpl Если не геморно и делов на 2 строки кода, прошу помочь. В противном случае готов за пару денег купить услугу, ибо с пыхом я не особо дружу. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? я так понимаю, что id route будет один - product/product, а layout-ов много разных upd нашел такой материал тыц Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 (изменено) $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } Изменено 25 декабря 2014 пользователем afwollis $product_info['product_id'] > $this->request->get['product_id'] Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Благодарен! но увы в логах 2014-12-25 15:38:35 - PHP Notice: Error: Could not load template /home/***/www/catalog/view/theme/default/template/product/landing17.tpl! in /home/***/www/system/modification/system/engine/loader.php on line 45и пустая страница при обновлении. переименовав файл landing.tpl на landing17.tpl результата не дало. привожу полный код controler/product.php <?php class ControllerProductProduct extends Controller { private $error = array(); public function index() { $this->load->language('product/product'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } $this->load->model('catalog/manufacturer'); if (isset($this->request->get['manufacturer_id'])) { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_brand'), 'href' => $this->url->link('product/manufacturer') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']); if ($manufacturer_info) { $data['breadcrumbs'][] = array( 'text' => $manufacturer_info['name'], 'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url) ); } } if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_search'), 'href' => $this->url->link('product/search', $url) ); } if (isset($this->request->get['product_id'])) { $product_id = (int)$this->request->get['product_id']; } else { $product_id = 0; } $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']) ); $this->document->setTitle($product_info['meta_title']); $this->document->setDescription($product_info['meta_description']); $this->document->setKeywords($product_info['meta_keyword']); $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); $data['heading_title'] = $product_info['name']; $data['text_select'] = $this->language->get('text_select'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_sku'] = $this->language->get('text_sku'); $data['text_reward'] = $this->language->get('text_reward'); $data['text_points'] = $this->language->get('text_points'); $data['text_stock'] = $this->language->get('text_stock'); $data['text_discount'] = $this->language->get('text_discount'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_option'] = $this->language->get('text_option'); $data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); $data['text_write'] = $this->language->get('text_write'); $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL')); $data['text_note'] = $this->language->get('text_note'); $data['text_tags'] = $this->language->get('text_tags'); $data['text_related'] = $this->language->get('text_related'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_qty'] = $this->language->get('entry_qty'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_review'] = $this->language->get('entry_review'); $data['entry_rating'] = $this->language->get('entry_rating'); $data['entry_good'] = $this->language->get('entry_good'); $data['entry_bad'] = $this->language->get('entry_bad'); $data['entry_captcha'] = $this->language->get('entry_captcha'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_upload'] = $this->language->get('button_upload'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']); $data['product_id'] = (int)$this->request->get['product_id']; $data['manufacturer'] = $product_info['manufacturer']; $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']); $data['model'] = $product_info['model']; $data['sku'] = $product_info['sku']; $data['reward'] = $product_info['reward']; $data['points'] = $product_info['points']; $data['points'] = $product_info['points']; if ($product_info['quantity'] <= 0) { $data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $data['stock'] = $product_info['quantity']; } else { $data['stock'] = $this->language->get('text_instock'); } $this->load->model('tool/image'); if ($product_info['image']) { $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')); } else { $data['popup'] = ''; } if ($product_info['image']) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $data['thumb'] = ''; } $data['images'] = array(); $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['special'] = false; } if ($this->config->get('config_tax')) { $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']); } else { $data['tax'] = false; } $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } if ($product_info['minimum']) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } $data['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); $data['rating'] = (int)$product_info['rating']; $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); $data['products'] = array(); $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'price' => $price, 'sku' => $sku, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } $data['tags'] = array(); if ($product_info['tag']) { $tags = explode(',', $product_info['tag']); foreach ($tags as $tag) { $data['tags'][] = array( 'tag' => trim($tag), 'href' => $this->url->link('product/search', 'tag=' . trim($tag)) ); } } $data['text_payment_recurring'] = $this->language->get('text_payment_recurring'); $data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']); $this->model_catalog_product->updateViewed($this->request->get['product_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } public function review() { $this->load->language('product/product'); $this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $data['reviews'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data)); } } public function getRecurringDescription() { $this->language->load('product/product'); $this->load->model('catalog/product'); if (isset($this->request->post['product_id'])) { $product_id = $this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['recurring_id'])) { $recurring_id = $this->request->post['recurring_id']; } else { $recurring_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = $this->request->post['quantity']; } else { $quantity = 1; } $product_info = $this->model_catalog_product->getProduct($product_id); $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id); $json = array(); if ($product_info && $recurring_info) { if (!$json) { $frequencies = array( 'day' => $this->language->get('text_day'), 'week' => $this->language->get('text_week'), 'semi_month' => $this->language->get('text_semi_month'), 'month' => $this->language->get('text_month'), 'year' => $this->language->get('text_year'), ); if ($recurring_info['trial_status'] == 1) { $price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' '; } else { $trial_text = ''; } $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); if ($recurring_info['duration']) { $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } else { $text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } $json['success'] = $text; } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function write() { $this->load->language('product/product'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) { $json['error'] = $this->language->get('error_name'); } if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) { $json['error'] = $this->language->get('error_text'); } if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { $json['error'] = $this->language->get('error_rating'); } if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) { $json['error'] = $this->language->get('error_captcha'); } unset($this->session->data['captcha']); if (!isset($json['error'])) { $this->load->model('catalog/review'); $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post); $json['success'] = $this->language->get('text_success'); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 >> в логах файл landing17.tpl не создали >> переименовав файл landing.tpl на landing17.tpl результата не дало. как определяли? я даже скачал и поставил opencart_2010 - всё ок. после создания нового layout (в чистой установке получился id=14) и указания его товару Sony VAIO товар выводится с шаблоном "product_layout14.tpl". замена в шаблоне <ul class="thumbnails">на <?php echo 'zhopa'; ?> <ul class="thumbnails">исправно выводит zhopy Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 колдовать нужно с этими строками? if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/landing.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/landing.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/landing.tpl', $data)); } } else { $url = ''; в контроллере товара проверяйте layout и по нему подставляйте нужный .tpl Если не геморно и делов на 2 строки кода, прошу помочь. В противном случае готов за пару денег купить услугу, ибо с пыхом я не особо дружу. Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? я так понимаю, что id route будет один - product/product, а layout-ов много разных upd нашел такой материал тыц Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 (изменено) $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } Изменено 25 декабря 2014 пользователем afwollis $product_info['product_id'] > $this->request->get['product_id'] Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Благодарен! но увы в логах 2014-12-25 15:38:35 - PHP Notice: Error: Could not load template /home/***/www/catalog/view/theme/default/template/product/landing17.tpl! in /home/***/www/system/modification/system/engine/loader.php on line 45и пустая страница при обновлении. переименовав файл landing.tpl на landing17.tpl результата не дало. привожу полный код controler/product.php <?php class ControllerProductProduct extends Controller { private $error = array(); public function index() { $this->load->language('product/product'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } $this->load->model('catalog/manufacturer'); if (isset($this->request->get['manufacturer_id'])) { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_brand'), 'href' => $this->url->link('product/manufacturer') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']); if ($manufacturer_info) { $data['breadcrumbs'][] = array( 'text' => $manufacturer_info['name'], 'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url) ); } } if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_search'), 'href' => $this->url->link('product/search', $url) ); } if (isset($this->request->get['product_id'])) { $product_id = (int)$this->request->get['product_id']; } else { $product_id = 0; } $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']) ); $this->document->setTitle($product_info['meta_title']); $this->document->setDescription($product_info['meta_description']); $this->document->setKeywords($product_info['meta_keyword']); $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); $data['heading_title'] = $product_info['name']; $data['text_select'] = $this->language->get('text_select'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_sku'] = $this->language->get('text_sku'); $data['text_reward'] = $this->language->get('text_reward'); $data['text_points'] = $this->language->get('text_points'); $data['text_stock'] = $this->language->get('text_stock'); $data['text_discount'] = $this->language->get('text_discount'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_option'] = $this->language->get('text_option'); $data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); $data['text_write'] = $this->language->get('text_write'); $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL')); $data['text_note'] = $this->language->get('text_note'); $data['text_tags'] = $this->language->get('text_tags'); $data['text_related'] = $this->language->get('text_related'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_qty'] = $this->language->get('entry_qty'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_review'] = $this->language->get('entry_review'); $data['entry_rating'] = $this->language->get('entry_rating'); $data['entry_good'] = $this->language->get('entry_good'); $data['entry_bad'] = $this->language->get('entry_bad'); $data['entry_captcha'] = $this->language->get('entry_captcha'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_upload'] = $this->language->get('button_upload'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']); $data['product_id'] = (int)$this->request->get['product_id']; $data['manufacturer'] = $product_info['manufacturer']; $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']); $data['model'] = $product_info['model']; $data['sku'] = $product_info['sku']; $data['reward'] = $product_info['reward']; $data['points'] = $product_info['points']; $data['points'] = $product_info['points']; if ($product_info['quantity'] <= 0) { $data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $data['stock'] = $product_info['quantity']; } else { $data['stock'] = $this->language->get('text_instock'); } $this->load->model('tool/image'); if ($product_info['image']) { $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')); } else { $data['popup'] = ''; } if ($product_info['image']) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $data['thumb'] = ''; } $data['images'] = array(); $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['special'] = false; } if ($this->config->get('config_tax')) { $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']); } else { $data['tax'] = false; } $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } if ($product_info['minimum']) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } $data['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); $data['rating'] = (int)$product_info['rating']; $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); $data['products'] = array(); $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'price' => $price, 'sku' => $sku, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } $data['tags'] = array(); if ($product_info['tag']) { $tags = explode(',', $product_info['tag']); foreach ($tags as $tag) { $data['tags'][] = array( 'tag' => trim($tag), 'href' => $this->url->link('product/search', 'tag=' . trim($tag)) ); } } $data['text_payment_recurring'] = $this->language->get('text_payment_recurring'); $data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']); $this->model_catalog_product->updateViewed($this->request->get['product_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } public function review() { $this->load->language('product/product'); $this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $data['reviews'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data)); } } public function getRecurringDescription() { $this->language->load('product/product'); $this->load->model('catalog/product'); if (isset($this->request->post['product_id'])) { $product_id = $this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['recurring_id'])) { $recurring_id = $this->request->post['recurring_id']; } else { $recurring_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = $this->request->post['quantity']; } else { $quantity = 1; } $product_info = $this->model_catalog_product->getProduct($product_id); $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id); $json = array(); if ($product_info && $recurring_info) { if (!$json) { $frequencies = array( 'day' => $this->language->get('text_day'), 'week' => $this->language->get('text_week'), 'semi_month' => $this->language->get('text_semi_month'), 'month' => $this->language->get('text_month'), 'year' => $this->language->get('text_year'), ); if ($recurring_info['trial_status'] == 1) { $price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' '; } else { $trial_text = ''; } $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); if ($recurring_info['duration']) { $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } else { $text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } $json['success'] = $text; } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function write() { $this->load->language('product/product'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) { $json['error'] = $this->language->get('error_name'); } if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) { $json['error'] = $this->language->get('error_text'); } if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { $json['error'] = $this->language->get('error_rating'); } if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) { $json['error'] = $this->language->get('error_captcha'); } unset($this->session->data['captcha']); if (!isset($json['error'])) { $this->load->model('catalog/review'); $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post); $json['success'] = $this->language->get('text_success'); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 >> в логах файл landing17.tpl не создали >> переименовав файл landing.tpl на landing17.tpl результата не дало. как определяли? я даже скачал и поставил opencart_2010 - всё ок. после создания нового layout (в чистой установке получился id=14) и указания его товару Sony VAIO товар выводится с шаблоном "product_layout14.tpl". замена в шаблоне <ul class="thumbnails">на <?php echo 'zhopa'; ?> <ul class="thumbnails">исправно выводит zhopy Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 что у layout`a проверять будете - id или route? я так понимаю, что id route будет один - product/product, а layout-ов много разных upd нашел такой материал тыц Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 (изменено) $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } Изменено 25 декабря 2014 пользователем afwollis $product_info['product_id'] > $this->request->get['product_id'] Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Благодарен! но увы в логах 2014-12-25 15:38:35 - PHP Notice: Error: Could not load template /home/***/www/catalog/view/theme/default/template/product/landing17.tpl! in /home/***/www/system/modification/system/engine/loader.php on line 45и пустая страница при обновлении. переименовав файл landing.tpl на landing17.tpl результата не дало. привожу полный код controler/product.php <?php class ControllerProductProduct extends Controller { private $error = array(); public function index() { $this->load->language('product/product'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } $this->load->model('catalog/manufacturer'); if (isset($this->request->get['manufacturer_id'])) { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_brand'), 'href' => $this->url->link('product/manufacturer') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']); if ($manufacturer_info) { $data['breadcrumbs'][] = array( 'text' => $manufacturer_info['name'], 'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url) ); } } if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_search'), 'href' => $this->url->link('product/search', $url) ); } if (isset($this->request->get['product_id'])) { $product_id = (int)$this->request->get['product_id']; } else { $product_id = 0; } $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']) ); $this->document->setTitle($product_info['meta_title']); $this->document->setDescription($product_info['meta_description']); $this->document->setKeywords($product_info['meta_keyword']); $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); $data['heading_title'] = $product_info['name']; $data['text_select'] = $this->language->get('text_select'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_sku'] = $this->language->get('text_sku'); $data['text_reward'] = $this->language->get('text_reward'); $data['text_points'] = $this->language->get('text_points'); $data['text_stock'] = $this->language->get('text_stock'); $data['text_discount'] = $this->language->get('text_discount'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_option'] = $this->language->get('text_option'); $data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); $data['text_write'] = $this->language->get('text_write'); $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL')); $data['text_note'] = $this->language->get('text_note'); $data['text_tags'] = $this->language->get('text_tags'); $data['text_related'] = $this->language->get('text_related'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_qty'] = $this->language->get('entry_qty'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_review'] = $this->language->get('entry_review'); $data['entry_rating'] = $this->language->get('entry_rating'); $data['entry_good'] = $this->language->get('entry_good'); $data['entry_bad'] = $this->language->get('entry_bad'); $data['entry_captcha'] = $this->language->get('entry_captcha'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_upload'] = $this->language->get('button_upload'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']); $data['product_id'] = (int)$this->request->get['product_id']; $data['manufacturer'] = $product_info['manufacturer']; $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']); $data['model'] = $product_info['model']; $data['sku'] = $product_info['sku']; $data['reward'] = $product_info['reward']; $data['points'] = $product_info['points']; $data['points'] = $product_info['points']; if ($product_info['quantity'] <= 0) { $data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $data['stock'] = $product_info['quantity']; } else { $data['stock'] = $this->language->get('text_instock'); } $this->load->model('tool/image'); if ($product_info['image']) { $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')); } else { $data['popup'] = ''; } if ($product_info['image']) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $data['thumb'] = ''; } $data['images'] = array(); $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['special'] = false; } if ($this->config->get('config_tax')) { $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']); } else { $data['tax'] = false; } $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } if ($product_info['minimum']) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } $data['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); $data['rating'] = (int)$product_info['rating']; $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); $data['products'] = array(); $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'price' => $price, 'sku' => $sku, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } $data['tags'] = array(); if ($product_info['tag']) { $tags = explode(',', $product_info['tag']); foreach ($tags as $tag) { $data['tags'][] = array( 'tag' => trim($tag), 'href' => $this->url->link('product/search', 'tag=' . trim($tag)) ); } } $data['text_payment_recurring'] = $this->language->get('text_payment_recurring'); $data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']); $this->model_catalog_product->updateViewed($this->request->get['product_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } public function review() { $this->load->language('product/product'); $this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $data['reviews'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data)); } } public function getRecurringDescription() { $this->language->load('product/product'); $this->load->model('catalog/product'); if (isset($this->request->post['product_id'])) { $product_id = $this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['recurring_id'])) { $recurring_id = $this->request->post['recurring_id']; } else { $recurring_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = $this->request->post['quantity']; } else { $quantity = 1; } $product_info = $this->model_catalog_product->getProduct($product_id); $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id); $json = array(); if ($product_info && $recurring_info) { if (!$json) { $frequencies = array( 'day' => $this->language->get('text_day'), 'week' => $this->language->get('text_week'), 'semi_month' => $this->language->get('text_semi_month'), 'month' => $this->language->get('text_month'), 'year' => $this->language->get('text_year'), ); if ($recurring_info['trial_status'] == 1) { $price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' '; } else { $trial_text = ''; } $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); if ($recurring_info['duration']) { $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } else { $text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } $json['success'] = $text; } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function write() { $this->load->language('product/product'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) { $json['error'] = $this->language->get('error_name'); } if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) { $json['error'] = $this->language->get('error_text'); } if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { $json['error'] = $this->language->get('error_rating'); } if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) { $json['error'] = $this->language->get('error_captcha'); } unset($this->session->data['captcha']); if (!isset($json['error'])) { $this->load->model('catalog/review'); $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post); $json['success'] = $this->language->get('text_success'); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 >> в логах файл landing17.tpl не создали >> переименовав файл landing.tpl на landing17.tpl результата не дало. как определяли? я даже скачал и поставил opencart_2010 - всё ок. после создания нового layout (в чистой установке получился id=14) и указания его товару Sony VAIO товар выводится с шаблоном "product_layout14.tpl". замена в шаблоне <ul class="thumbnails">на <?php echo 'zhopa'; ?> <ul class="thumbnails">исправно выводит zhopy Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Благодарен! но увы в логах 2014-12-25 15:38:35 - PHP Notice: Error: Could not load template /home/***/www/catalog/view/theme/default/template/product/landing17.tpl! in /home/***/www/system/modification/system/engine/loader.php on line 45и пустая страница при обновлении. переименовав файл landing.tpl на landing17.tpl результата не дало. привожу полный код controler/product.php <?php class ControllerProductProduct extends Controller { private $error = array(); public function index() { $this->load->language('product/product'); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } $this->load->model('catalog/manufacturer'); if (isset($this->request->get['manufacturer_id'])) { $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_brand'), 'href' => $this->url->link('product/manufacturer') ); $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']); if ($manufacturer_info) { $data['breadcrumbs'][] = array( 'text' => $manufacturer_info['name'], 'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url) ); } } if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_search'), 'href' => $this->url->link('product/search', $url) ); } if (isset($this->request->get['product_id'])) { $product_id = (int)$this->request->get['product_id']; } else { $product_id = 0; } $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $product_info['name'], 'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id']) ); $this->document->setTitle($product_info['meta_title']); $this->document->setDescription($product_info['meta_description']); $this->document->setKeywords($product_info['meta_keyword']); $this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical'); $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.min.js'); $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); $data['heading_title'] = $product_info['name']; $data['text_select'] = $this->language->get('text_select'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_sku'] = $this->language->get('text_sku'); $data['text_reward'] = $this->language->get('text_reward'); $data['text_points'] = $this->language->get('text_points'); $data['text_stock'] = $this->language->get('text_stock'); $data['text_discount'] = $this->language->get('text_discount'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_option'] = $this->language->get('text_option'); $data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']); $data['text_write'] = $this->language->get('text_write'); $data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL')); $data['text_note'] = $this->language->get('text_note'); $data['text_tags'] = $this->language->get('text_tags'); $data['text_related'] = $this->language->get('text_related'); $data['text_loading'] = $this->language->get('text_loading'); $data['entry_qty'] = $this->language->get('entry_qty'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_review'] = $this->language->get('entry_review'); $data['entry_rating'] = $this->language->get('entry_rating'); $data['entry_good'] = $this->language->get('entry_good'); $data['entry_bad'] = $this->language->get('entry_bad'); $data['entry_captcha'] = $this->language->get('entry_captcha'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_upload'] = $this->language->get('button_upload'); $data['button_continue'] = $this->language->get('button_continue'); $this->load->model('catalog/review'); $data['tab_description'] = $this->language->get('tab_description'); $data['tab_attribute'] = $this->language->get('tab_attribute'); $data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']); $data['product_id'] = (int)$this->request->get['product_id']; $data['manufacturer'] = $product_info['manufacturer']; $data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']); $data['model'] = $product_info['model']; $data['sku'] = $product_info['sku']; $data['reward'] = $product_info['reward']; $data['points'] = $product_info['points']; $data['points'] = $product_info['points']; if ($product_info['quantity'] <= 0) { $data['stock'] = $product_info['stock_status']; } elseif ($this->config->get('config_stock_display')) { $data['stock'] = $product_info['quantity']; } else { $data['stock'] = $this->language->get('text_instock'); } $this->load->model('tool/image'); if ($product_info['image']) { $data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')); } else { $data['popup'] = ''; } if ($product_info['image']) { $data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height')); } else { $data['thumb'] = ''; } $data['images'] = array(); $results = $this->model_catalog_product->getProductImages($this->request->get['product_id']); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height')) ); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['price'] = false; } if ((float)$product_info['special']) { $data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax'))); } else { $data['special'] = false; } if ($this->config->get('config_tax')) { $data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']); } else { $data['tax'] = false; } $discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']); $data['discounts'] = array(); foreach ($discounts as $discount) { $data['discounts'][] = array( 'quantity' => $discount['quantity'], 'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))) ); } $data['options'] = array(); foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) { $product_option_value_data = array(); foreach ($option['product_option_value'] as $option_value) { if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) { if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) { $price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false)); } else { $price = false; } $product_option_value_data[] = array( 'product_option_value_id' => $option_value['product_option_value_id'], 'option_value_id' => $option_value['option_value_id'], 'name' => $option_value['name'], 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), 'price' => $price, 'price_prefix' => $option_value['price_prefix'] ); } } $data['options'][] = array( 'product_option_id' => $option['product_option_id'], 'product_option_value' => $product_option_value_data, 'option_id' => $option['option_id'], 'name' => $option['name'], 'type' => $option['type'], 'value' => $option['value'], 'required' => $option['required'] ); } if ($product_info['minimum']) { $data['minimum'] = $product_info['minimum']; } else { $data['minimum'] = 1; } $data['review_status'] = $this->config->get('config_review_status'); if ($this->config->get('config_review_guest') || $this->customer->isLogged()) { $data['review_guest'] = true; } else { $data['review_guest'] = false; } if ($this->customer->isLogged()) { $data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName(); } else { $data['customer_name'] = ''; } $data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']); $data['rating'] = (int)$product_info['rating']; $data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8'); $data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']); $data['products'] = array(); $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..', 'price' => $price, 'sku' => $sku, 'special' => $special, 'tax' => $tax, 'rating' => $rating, 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']) ); } $data['tags'] = array(); if ($product_info['tag']) { $tags = explode(',', $product_info['tag']); foreach ($tags as $tag) { $data['tags'][] = array( 'tag' => trim($tag), 'href' => $this->url->link('product/search', 'tag=' . trim($tag)) ); } } $data['text_payment_recurring'] = $this->language->get('text_payment_recurring'); $data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']); $this->model_catalog_product->updateViewed($this->request->get['product_id']); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['manufacturer_id'])) { $url .= '&manufacturer_id=' . $this->request->get['manufacturer_id']; } if (isset($this->request->get['search'])) { $url .= '&search=' . $this->request->get['search']; } if (isset($this->request->get['tag'])) { $url .= '&tag=' . $this->request->get['tag']; } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/product', $url . '&product_id=' . $product_id) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/error/not_found.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/error/not_found.tpl', $data)); } } } public function review() { $this->load->language('product/product'); $this->load->model('catalog/review'); $data['text_no_reviews'] = $this->language->get('text_no_reviews'); if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } $data['reviews'] = array(); $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']); $results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5); foreach ($results as $result) { $data['reviews'][] = array( 'author' => $result['author'], 'text' => nl2br($result['text']), 'rating' => (int)$result['rating'], 'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])) ); } $pagination = new Pagination(); $pagination->total = $review_total; $pagination->page = $page; $pagination->limit = 5; $pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 5) + 1 : 0, ((($page - 1) * 5) > ($review_total - 5)) ? $review_total : ((($page - 1) * 5) + 5), $review_total, ceil($review_total / 5)); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/review.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/review.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/review.tpl', $data)); } } public function getRecurringDescription() { $this->language->load('product/product'); $this->load->model('catalog/product'); if (isset($this->request->post['product_id'])) { $product_id = $this->request->post['product_id']; } else { $product_id = 0; } if (isset($this->request->post['recurring_id'])) { $recurring_id = $this->request->post['recurring_id']; } else { $recurring_id = 0; } if (isset($this->request->post['quantity'])) { $quantity = $this->request->post['quantity']; } else { $quantity = 1; } $product_info = $this->model_catalog_product->getProduct($product_id); $recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id); $json = array(); if ($product_info && $recurring_info) { if (!$json) { $frequencies = array( 'day' => $this->language->get('text_day'), 'week' => $this->language->get('text_week'), 'semi_month' => $this->language->get('text_semi_month'), 'month' => $this->language->get('text_month'), 'year' => $this->language->get('text_year'), ); if ($recurring_info['trial_status'] == 1) { $price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); $trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' '; } else { $trial_text = ''; } $price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax'))); if ($recurring_info['duration']) { $text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } else { $text = $trial_text . sprintf($this->language->get('text_payment_until_canceled_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']); } $json['success'] = $text; } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } public function write() { $this->load->language('product/product'); $json = array(); if ($this->request->server['REQUEST_METHOD'] == 'POST') { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 25)) { $json['error'] = $this->language->get('error_name'); } if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) { $json['error'] = $this->language->get('error_text'); } if (empty($this->request->post['rating']) || $this->request->post['rating'] < 0 || $this->request->post['rating'] > 5) { $json['error'] = $this->language->get('error_rating'); } if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) { $json['error'] = $this->language->get('error_captcha'); } unset($this->session->data['captcha']); if (!isset($json['error'])) { $this->load->model('catalog/review'); $this->model_catalog_review->addReview($this->request->get['product_id'], $this->request->post); $json['success'] = $this->language->get('text_success'); } } $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 >> в логах файл landing17.tpl не создали >> переименовав файл landing.tpl на landing17.tpl результата не дало. как определяли? я даже скачал и поставил opencart_2010 - всё ок. после создания нового layout (в чистой установке получился id=14) и указания его товару Sony VAIO товар выводится с шаблоном "product_layout14.tpl". замена в шаблоне <ul class="thumbnails">на <?php echo 'zhopa'; ?> <ul class="thumbnails">исправно выводит zhopy Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha × Уже зарегистрированы? Войти Регистрация Раздел покупок Назад Приобретенные дополнения Ваши счета Список желаний Альтернативные контакты Форум Новости ocStore Назад Официальный сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Скачать ocStore Документация История версий ocStore Блоги Модули Шаблоны Назад Бесплатные шаблоны Платные шаблоны Где покупать модули? Услуги FAQ OpenCart.Pro Назад Демо Купить Сравнение × Создать... Важная информация На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности. Я принимаю
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 (изменено) 17 айди нового макета, определил с БД. что-то явно делаю не то.. щас снова попробую сначала Изменено 25 декабря 2014 пользователем afwollis overquote deleted Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Deals – адаптивный универсальный шаблон Автор: octemplates Динамичесткая инфострока в шапке + позиция в макете для opencart\ocstore 2x, 3x Автор: Lito911 Единицы Измерения Товара Автор: RoS Opencart Product Search by Image Автор: slavoglo Простой массовый редактор цен. Fast Price Edit Автор: Sha
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 берите id из ссылки на редактирование layout в админке тот-же 17 итак. создано новый макет Landing путь product/landing указал этот макет товару № в controller/product/product и на всякий случай в controller/product/landing заменил код с шаблоном на $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'landing'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } скопировал код файла catalog/view/theme/default/template/product/product в catalog/view/theme/default/template/product/landing17.tpl + добавив зловещую zhopy :-) в резальтате получаю Товар не найден! и чистые логи...цуко Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 1 год спустя... zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу. Последние темы Последние дополнения Последние новости Вся активность Главная Поддержка и ответы на вопросы Помощь программистам и разработчикам [Решено] Создание нового макета
rb2 Опубликовано: 25 декабря 2014 Поделиться Опубликовано: 25 декабря 2014 https://opencartforum.com/topic/12326-spetcialnyi-shablon-dlia-odnoi-kategorii-tfpic-opencart/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
pr1h0d Опубликовано: 25 декабря 2014 Автор Поделиться Опубликовано: 25 декабря 2014 Переделал все с ноля. Все воркает как надо. Спасибо всем! Плюсанул бы, да видимо карма не позволяет Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
zeyser Опубликовано: 4 января 2016 Поделиться Опубликовано: 4 января 2016 $tmpl = 'product'; $layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']); $config_layout_product = $this->config->get('config_layout_product'); if ($layout_id>0 && $layout_id != $config_layout_product) { $tmpl = 'product_layout'.$layout_id; // ваш tpl } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/'.$tmpl.'.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/product/'.$tmpl.'.tpl', $data)); } От куда берется $this->config->get('config_layout_product'); ? Это же в oc_setting должно быть, задаваться из настроек? Но у меня такого нет... А var_dump($config_layout_product) возвращает null Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
afwollis Опубликовано: 5 января 2016 Поделиться Опубликовано: 5 января 2016 да. давно хрустальный шар носил в сервис? Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 6 месяцев спустя... baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0 Перейти к списку тем Похожие публикации [Поддержка] HYPER Positions +70 позиций модулей| Opencart 2.3.x | 1 2 3 4 11 Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 252 ответа 37 263 просмотра crd 27 сентября 2021 HYPER Positions +70 позиций модулей| Opencart 2.3.x | Автор: crd, 25 января 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 51 947 просмотров HyperLabTeam 7 июня 2017 HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 0 комментариев 11 507 просмотров crd 11 апреля 2017 [Поддержка] HYPER Positions +70 позиций модулей | Opencart 2.0 - 2.1 - 2.2x | v. 1 2 3 Автор: crd, 11 апреля 2017 позиции дизайн (и ещё 5) Теги: позиции дизайн лендинг вывод модулей блоки макет посадочные страницы 54 ответа 8 053 просмотра BenderRodriges 21 ноября 2020 mobile speed Модуль Мобильная версия OpenCart, ускорение магазина [Поддержка] 1 2 3 4 10 Автор: Sha, 12 марта 2018 pagespeed без гмо (и ещё 17) Теги: pagespeed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 ответов 35 928 просмотров Sha 31 октября 2021 Сейчас на странице 0 пользователей Нет пользователей, просматривающих эту страницу.
baxabit Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 (изменено) Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. Изменено 22 июля 2016 пользователем baxabit Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
halfhope Опубликовано: 22 июля 2016 Поделиться Опубликовано: 22 июля 2016 Уф.. Модуль так никто и не догадался выпустить, кроме варианта для1.5.* ? :oops: Беря во внимания одно из решений использования ячейки "mpn", может кто-нибудь накатать модуль? ))) Мне кажется, самое удачно решение: имеем нужное количество версий карточки товара, скажем, минимальных две - стандартную product.tpl и переименнованную product-XXX.tpl В нужных товарах добавляем ХХХ в графу "mpn" и получаем вывод нестандартного файла tpl. Только вот не получается добить до финала в 5 утра :))) Или из-за шаблона пролетаю.. У меня в портфолио есть бесплатный модуль для этих целей: https://opencartforum.com/files/file/1986-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B/ Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... 8 месяцев спустя... dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться... Создайте аккаунт или войдите в него для комментирования Вы должны быть пользователем, чтобы оставить комментарий Создать аккаунт Зарегистрируйтесь для получения аккаунта. Это просто! Зарегистрировать аккаунт Войти Уже зарегистрированы? Войдите здесь. Войти сейчас Поделиться Больше способов поделиться... Подписчики 0
dess Опубликовано: 29 марта 2017 Поделиться Опубликовано: 29 марта 2017 Всем привет! Я новичок в Опенкарде - но если надо отдельный макет для определенного товара то в админке можно настроить. 1 - Создайте новый макет в Система\Дизайн\Макет - выставите уникальный путь - к примеру "id=60" для товара и подключайте что надо на нее... 2 - На странице товара во вкладке Дизайн (у меня последний таб) - выбрать тот макет который создали в пункте 1 Если не в тему не ругайтесь =) Ссылка на комментарий Поделиться на других сайтах Больше способов поделиться...
Рекомендованные сообщения