Нашел вот этот способ http://halfhope.ru/2014/10/14/opencart-логотип-производителя-в-категории/ Но в 3 пункте вот этого кода у меня нет: PHP: <?php if ($product['thumb']) { ?><div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div><?php } ?> Есть похожий только такой: PHP: <!-- <?php if ($thumb || $description) { ?> <div class="category-info clearfix"> <?php if ($thumb) { ?> <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div> <?php } ?> <?php if ($description) { ?> <div class="description"><?php echo $description; ?></div> <?php } ?> </div> <?php } ?>--> Когда вставляю то в логах пишет ошибки: PHP Notice: Undefined variable: product in /home/a4moto00/ride.com.ua/www/catalog/view/theme/lexus_market/template/product/category.tpl on line 61 PHP Notice: Undefined variable: product in /home/a4moto00/ride.com.ua/www/catalog/view/theme/lexus_market/template/product/category.tpl on line 62 Эти ошибки строки относятся к этой части кода, я так понимаю неправильные переменные или как... PHP: <a href="<?php echo $product['manufacturer_link'] ?>"> <img src="<?php echo $product['mimage'] ?>" alt="<?php echo $product['manufacturer'] ?>">
PHP: <?php require( DIR_TEMPLATE.$this->config->get('config_template')."/template/common/config.tpl" ); $themeConfig = (array)$this->config->get('themecontrol'); $this->language->load('module/themecontrol'); $default = array( 'listing_products_columns' => 0, 'listing_products_columns_small' => 2, 'listing_products_columns_minismall' => 1, 'cateogry_display_mode' => 'grid', 'category_pzoom' => 1, 'show_swap_image' => 0, 'quickview' => 0 ); $categoryConfig = array_merge($default, $themeConfig ); $DISPLAY_MODE = $categoryConfig['cateogry_display_mode']; $MAX_ITEM_ROW = $themeConfig['listing_products_columns']?$themeConfig['listing_products_columns']:3; $MAX_ITEM_ROW_SMALL = ($categoryConfig['listing_products_columns_small'] !=0)?$categoryConfig['listing_products_columns_small']:1; $MAX_ITEM_ROW_MINI = $categoryConfig['listing_products_columns_minismall']; $categoryPzoom = $categoryConfig['category_pzoom']; $quickview=$themeConfig['quickview']; $categories_images = $this->model_catalog_category->getCategories($this->request->get['path']);?><?php echo $header; ?><?php require( DIR_TEMPLATE.$this->config->get('config_template')."/template/common/breadcrumb.tpl" ); ?> <section id="sys-notification"> <div class="container"> <?php if (isset($error)) { ?> <div class="warning"><?php echo $error ?><img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div> <?php } ?> <div id="notification"></div> </div></section><?php if( $SPAN[0] ): ?> <aside class="col-lg-<?php echo $SPAN[0];?> col-md-<?php echo $SPAN[0];?> col-sm-12 col-xs-12"> <?php echo $column_left; ?> </aside> <?php endif; ?><section class="col-lg-<?php echo $SPAN[1];?> col-md-<?php echo $SPAN[1];?> col-sm-12 col-xs-12"><div id="content"><?php echo $content_top; ?><h1 class="heading_title"><span><?php echo $heading_title;?> </span></h1><!-- <?php if ($thumb || $description) { ?> <div class="category-info clearfix"> <?php if ($thumb) { ?> <div class="image"><img src="<?php echo $thumb; ?>" alt="<?php echo $heading_title; ?>" /></div> <?php } ?> <?php if ($description) { ?> <div class="description"><?php echo $description; ?></div> <?php if($config_category_show_manufacturer_image): ?><div class="manufacturer"> <a href="<?php echo $product['manufacturer_link'] ?>"> <img src="<?php echo $product['mimage'] ?>" alt="<?php echo $product['manufacturer'] ?>"> </a></div><?php endif ?> <?php } ?> </div> <?php } ?>--> <?php if ($categories) { ?> <div class="category-list clearfix"> <h2 class="heading_title"><span><?php echo $text_refine; ?></span></h2> <div class="row"> <?php foreach ($categories as $key=>$category) { $name = str_replace("(", '<span class="">(', $category['name'] ); $category['name'] = str_replace(")", ')</span>', $name); ?> <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12"> <div class="sub-item"> <a href="<?php echo $category['href']; ?>" class="subcategory-title"><?php echo $category['name']; ?></a> <?php if($categories_images[$key]['image']) {?> <img src="<?php echo $this->model_tool_image->resize($categories_images[$key]['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')); ?>" /> <?php } ?> </div> </div> <?php } ?> </div> </div> <?php } ?> <?php if ($products) { ?> <div class="product-filter clearfix"> <div class="display"> <span><?php echo $text_display; ?></span> <span><?php echo $text_list; ?></span> <a onclick="display('grid');"><?php echo $text_grid; ?></a> </div> <div class="product-compare"><a href="<?php echo $compare; ?>" id="compare-total" class="button"><span><?php echo $text_compare; ?></span></a></div> <div class="limit"><span><?php echo $text_limit; ?></span> <select class="form-control" onchange="location = this.value;"> <?php foreach ($limits as $limits) { ?> <?php if ($limits['value'] == $limit) { ?> <option value="<?php echo $limits['href']; ?>" selected="selected"><?php echo $limits['text']; ?></option> <?php } else { ?> <option value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option> <?php } ?> <?php } ?> </select> </div> <div class="sort"><span><?php echo $text_sort; ?></span> <select class="form-control" onchange="location = this.value;"> <?php foreach ($sorts as $sorts) { ?> <?php if ($sorts['value'] == $sort . '-' . $order) { ?> <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option> <?php } else { ?> <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option> <?php } ?> <?php } ?> </select> </div> </div><div class="product-list"> <div class="products-block"> <?php $cols = $MAX_ITEM_ROW ; $span = floor(12/$cols); $small = floor(12/$MAX_ITEM_ROW_SMALL); $mini = floor(12/$MAX_ITEM_ROW_MINI); foreach ($products as $i => $product) { ?> <?php if( $i++%$cols == 0 ) { ?> <div class="row"> <?php } ?> <div class="col-lg-<?php echo $span;?> col-md-<?php echo $span;?> col-sm-4 col-xs-12"> <?php require( DIR_TEMPLATE.$this->config->get('config_template')."/template/common/product.tpl" ); ?> </div> <?php if( $i%$cols == 0 || $i==count($products) ) { ?> </div> <?php } ?> <?php } ?> </div> </div> <div class="pagination"><?php echo $pagination; ?></div> <?php } ?> <?php if (!$categories && !$products) { ?> <div class="content"><?php echo $text_empty; ?></div> <div class="buttons"> <div class="right"><a href="<?php echo $continue; ?>" class="button"><?php echo $button_continue; ?></a></div> </div> <?php } ?> <?php echo $content_bottom; ?></div><script type="text/javascript">function display(view) { if (view == 'list') { $('.product-grid').attr('class', 'product-list'); var category_sort_order = ['image', 'name', 'thumb_more_info', 'product-meta']; $('.products-block .product-block').each(function(index, element) { $(element).parent().addClass("col-fullwidth"); }); $('.display').html('<span style="float: left;"><?php echo $text_display; ?></span><a class="list active"><em><?php echo $text_list; ?></em></a><a class="grid" onclick="display(\'grid\');"><em><?php echo $text_grid; ?></em></a>'); $.totalStorage('display', 'list'); } else { $(".product-meta-list").attr('class','product-meta'); $('.product-list .image').attr('class','image'); $('.product-list').attr('class', 'product-grid'); $('.products-block .product-block').each(function(index, element) { $(element).parent().removeClass("col-fullwidth"); }); $('.display').html('<span style="float: left;"><?php echo $text_display; ?></span><a class="list" onclick="display(\'list\');"></span><em><?php echo $text_list; ?></em></a><a class="grid active"><em><?php echo $text_grid; ?></em></a>'); $.totalStorage('display', 'grid'); }}view = $.totalStorage('display');if (view) { display(view);} else { display('<?php echo $DISPLAY_MODE;?>');}</script></section><?php if( $SPAN[2] ): ?> <aside class="col-lg-<?php echo $SPAN[2];?> col-md-<?php echo $SPAN[2];?> col-sm-12 col-xs-12"> <?php echo $column_right; ?> </aside><?php endif; ?><?php echo $footer; ?>
Вам нужно этот файл редактировать: /template/common/product.tpl А из шаблона категории уберите то, что добавили.
Зайдите на сайт ride.com.ua В категориях стало нормально отображаться, а на главной в поиске с ошибками
А это уже издержки того, что в шаблоне используется общий файл для всех выводов товара. Сделайте копию /template/common/product.tpl с названием, например, product_in_category.tpl и пропишите его в файле /template/product/category.tpl в строке, где это: PHP: <?php require( DIR_TEMPLATE.$this->config->get('config_template')."/template/common/product.tpl" ); ?> Соответственно, вместо product.tpl. А из /template/common/product.tpl удалите то, что добавили.
Сделал всё, файл product_in_category.tpl поместил в /template/common/ , ошибка ушла, но ничего не отображается на главной, в категориях отображается
Ну, так всё правильно. У вас какая задача в первом посте? Вывести лого на товарах в категории. Если вы хотите вывести его вообще везде на товарах, тогда вам нужно отредактировать все контроллеры. Для главной это контроллеры модулей акций и новинок. Если вы отердактируете все контроллеры, тогда можно убрать отдельный шаблон, который вы сделали для категории и везде использовать один /template/common/product.tpl с правками.
Вообщем везде /сайт/www/catalog/controller/product/* для стандартных добавил это, заработало в поисковике, производителях и тд. $results = $this->model_catalog_product->getProducts($data); и это 'mimage'=> $this->model_tool_image->resize($result['mimage'], $this->config->get('config_category_manufacturer_image_width'), $this->config->get('config_category_manufacturer_image_height')), 'manufacturer'=> $result['manufacturer'], 'manufacturer_link' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id']), Но вот в самих модулях не получается /сайт/www/catalog/controller/module например файл pavdeals.php куда здесь вставлять код и может его надо изменить, потому что вроде как похожи части кода после чего надо добавлять, но ничего не происходит PHP: <?phpclass ControllerModulePavdeals extends Controller { protected function index($setting) { static $module = 0; $this->language->load('module/pavdeals'); $this->load->model('tool/image'); $this->load->model( 'pavdeals/product' ); $this->load->model( 'catalog/product' ); $default = $this->model_pavdeals_product->getDefaultSetting(); $general_setting = $this->config->get("pavdeals_config"); if(isset($general_setting)){ $setting = array_merge($general_setting, $setting); } if(!empty($setting)){ $setting = array_merge($default, $setting); }else{ $setting = $default; } $theme = isset($setting['theme'])?$setting['theme']:"default"; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/pavdeals.css')) { $this->document->addStyle('catalog/view/theme/'.$this->config->get('config_template').'/stylesheet/pavdeals.css'); } else { $this->document->addStyle('catalog/view/theme/default/stylesheet/pavdeals.css'); } $this->document->addScript('catalog/view/javascript/pavdeals/countdown.js'); /*Removed when install on pavotheme $this->document->addStyle('catalog/view/theme/default/stylesheet/bootstrap.css'); $this->document->addScript('catalog/view/javascript/jquery/bootstrap/bootstrap.min.js'); /*End*/ if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $this->data['base'] = $this->config->get('config_ssl'); } else { $this->data['base'] = $this->config->get('config_url'); } if( isset($setting['description'][$this->config->get('config_language_id')]) ) { $this->data['message'] = html_entity_decode($setting['description'][$this->config->get('config_language_id')], ENT_QUOTES, 'UTF-8'); }else { $this->data['message'] = ''; } $deal_type = isset($setting['deal_type'])?$setting['deal_type']:'latest';//latest | today deals | category $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['limit'] = isset($setting['limit'])?(int)$setting['limit']:10; $this->data['prefix'] = isset($setting['prefix'])?$setting['prefix']:''; $this->data['width'] = $setting['width']; $this->data['height'] = $setting['height']; $this->data['auto_play'] = $setting['auto_play']?"true":"false"; $this->data['auto_play_mode'] = $setting['auto_play_mode']; $this->data['interval'] = (int)$setting['interval']; $this->data['cols'] = (int)$setting['cols']; $this->data['itemsperpage'] = (int)$setting['itemsperpage']; $sorting = isset($setting['sort_deals'])?$setting['sort_deals']:'p.date_added__desc'; $tmp = explode("__",$sorting); $categories = isset($setting['category_ids'])?$setting['category_ids']:'0'; $start_date = isset($setting['date_start'])?$setting['date_start']:''; $to_date = isset($setting['date_to'])?$setting['date_to']:''; if(empty($start_date)){ $start_date = "0000-00-00"; } if(empty($to_date)){ $to_date = date("Y-m-d"); } $data = array( 'start_date' => $start_date, 'to_date' => $to_date, 'filter_categories' => $categories, 'sort'=> $tmp[0], 'order'=> $tmp[1], 'start' => 0, 'limit'=>$this->data['limit']); $results = $this->model_pavdeals_product->getProductSpecials($data); $products = array(); foreach ($results as $result) { $products[] = $this->getItemDeal($result, $setting); } if (empty($products)) { return; } $this->data['products'] = $products; $this->data['heading_title'] = $this->language->get($deal_type."_deals_title"); $this->data['module'] = $module++; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/pavdeals/carousel_deals.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/pavdeals/carousel_deals.tpl'; } else { $this->template = 'default/template/module/pavdeals/carousel_deals.tpl'; } $this->render(); } public function getItemDeal($product = null, $setting = array()){ if(is_numeric($product)){ $product = $this->model_catalog_product->getProduct((int)$product); } $deal = $this->model_pavdeals_product->getDeal($product); if(!$deal) return false; $order_status_id = isset($setting['order_status_id'])?(int)$setting['order_status_id']:5; $bought = $this->model_pavdeals_product->getTotalBought($deal['product_id'], $order_status_id ); $bought = empty($bought)?0:$bought; $save_price = (float)$deal['price'] - (float)$deal['special']; $discount = round(($save_price/$deal['price'])*100); $save_price = $this->currency->format($this->tax->calculate($save_price, $deal['tax_class_id'], $this->config->get('config_tax'))); if ($deal['image'] && isset($setting['width']) && $setting['height']) { $image = $this->model_tool_image->resize($deal['image'], $setting['width'], $setting['height']); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($deal['price'], $deal['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$deal['special']) { $special = $this->currency->format($this->tax->calculate($deal['special'], $deal['tax_class_id'], $this->config->get('config_tax'))); $saleoff = floor((($deal['price']-$deal['special'])/$deal['price'])*100); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = $deal['rating']; } else { $rating = false; } $date_end_string = isset($deal['date_end'])?$deal['date_end']:""; $product = array( 'product_id' => $deal['product_id'], 'deal_discount' => $discount, 'bought' => $bought, 'thumb' => $image, 'name' => $deal['name'], 'quantity' => $deal['quantity'], 'price' => $price, 'special' => $special, 'saleoff' => isset($saleoff)?$saleoff.'%':0, 'rating' => $rating, 'save_price' => $save_price, 'date_end_string' => $date_end_string, 'date_end' => explode("-", $date_end_string), 'description'=> (html_entity_decode($deal['description'], ENT_QUOTES, 'UTF-8')), 'reviews' => sprintf($this->language->get('text_reviews'), (int)$deal['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $deal['product_id']), ); return $product; } public function pavdeal($product = null){ static $module = 0; /*If current page is product detail, show deal item*/ $route = isset($this->request->get['route'])?$this->request->get['route']:""; $is_product_detail = false; if($route == "product/product"){ if(empty($product)) $product = isset($this->request->get['product_id'])?$this->request->get['product_id']:"0"; $is_product_detail = true; } /*End if*/ if(empty($product)) return; $this->language->load('module/pavdeals'); $this->load->model('tool/image'); $this->load->model( 'pavdeals/product' ); $this->load->model( 'catalog/product' ); $default = $this->model_pavdeals_product->getDefaultSetting(); $setting = $this->config->get("pavdeals_config"); if(is_numeric($product)){ $product = $this->model_catalog_product->getProduct((int)$product); } if(!empty($setting)){ $setting = array_merge($default, $setting); }else{ $setting = $default; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $this->data['base'] = $this->config->get('config_ssl'); } else { $this->data['base'] = $this->config->get('config_url'); } $theme = isset($setting['theme'])?$setting['theme']:"default"; if(!defined("PAVDEALS_LOADED_ASSETS")){ if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/pavdeals.css')) { $this->data['style'] = 'catalog/view/theme/'.$this->config->get('config_template').'/stylesheet/pavdeals.css'; } else { $this->data['style'] = 'catalog/view/theme/default/stylesheet/pavdeals.css'; } $this->data['script'] = 'catalog/view/javascript/pavdeals/countdown.js'; define("PAVDEALS_LOADED_ASSETS", 1); } if($is_product_detail){ $this->data['saleoff_icon'] = $this->model_tool_image->resize( $setting['saleoff_icon'], $setting['icon_width'], $setting['icon_height']); } $this->data['module'] = "deal".$module++; $this->data['product'] = $this->getItemDeal($product, $setting); if($is_product_detail){ if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/pavdeals/product_deal_detail.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/pavdeals/product_deal_detail.tpl'; } else { $this->template = 'default/template/module/pavdeals/product_deal_detail.tpl'; } $output = $this->render(); }else{ if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/pavdeals/item_deal.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/pavdeals/item_deal.tpl'; } else { $this->template = 'default/template/module/pavdeals/item_deal.tpl'; } $output = $this->render(); } return $output; }} ?>
Здесь каждый товар достаётся по отдельности в функции getItemDeal: PHP: $deal = $this->model_pavdeals_product->getDeal($product); Соответственно, вместо $result будет $deal. Но не факт, что там достаётся то, что вам нужно.