[Решено] Изображение производителя

Тема в разделе "OpenCart", создана пользователем Vintage, 16 ноя 2015.

Статус темы:
Закрыта.
  1. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Как вывести изображение производителя в категориях на товаре?
    [​IMG]
     
    Последнее редактирование: 16 ноя 2015
  2. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Нашел вот этот способ 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'?>">
     
  3. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Выложите ваш /catalog/view/theme/lexus_market/template/product/category.tpl
     
  4. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    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 == ) { ?>
              <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 == || $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?>
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Вам нужно этот файл редактировать: /template/common/product.tpl

    А из шаблона категории уберите то, что добавили.
     
  6. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Зайдите на сайт ride.com.ua В категориях стало нормально отображаться, а на главной в поиске с ошибками
     
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    А это уже издержки того, что в шаблоне используется общий файл для всех выводов товара.

    Сделайте копию /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 удалите то, что добавили.
     
  8. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Сделал всё, файл product_in_category.tpl поместил в /template/common/ , ошибка ушла, но ничего не отображается на главной, в категориях отображается
     
  9. ioh2007

    ioh2007

    Регистрация:
    7 окт 2013
    Сообщения:
    57
    Симпатии:
    3
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Ну, так всё правильно. У вас какая задача в первом посте? Вывести лого на товарах в категории.
    Если вы хотите вывести его вообще везде на товарах, тогда вам нужно отредактировать все контроллеры. Для главной это контроллеры модулей акций и новинок. Если вы отердактируете все контроллеры, тогда можно убрать отдельный шаблон, который вы сделали для категории и везде использовать один /template/common/product.tpl с правками.
     
  11. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Вообщем везде /сайт/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:
    <?php
    class 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;
        }
    }
       
    ?>
     
  12. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.053
    Симпатии:
    779
    Здесь каждый товар достаётся по отдельности в функции getItemDeal:
    PHP:
    $deal $this->model_pavdeals_product->getDeal($product);
    Соответственно, вместо $result будет $deal. Но не факт, что там достаётся то, что вам нужно.
     
    Vintage нравится это.
  13. Vintage

    Vintage

    Регистрация:
    31 мар 2013
    Сообщения:
    237
    Симпатии:
    39
    Всё, наконец-то, огромное Вам спасибо! Тему можно закрывать.
     
Статус темы:
Закрыта.