Как вывести список производителей в меню. Ответ

Тема в разделе "Общие вопросы", создана пользователем Vlad, 8 дек 2015.

  1. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Придумал экспресс вариант.. Как просто добавить список всех производителей в меню.

    в файле \catalog\controller\common\header.php

    перед
    PHP:
            $data['language'] = $this->load->controller('common/language');
    вставить
    PHP:
            $this->load->model('catalog/manufacturer');       
           
            
    $data['manuf'] = array();

            
    $results $this->model_catalog_manufacturer->getManufacturers();
           
            foreach (
    $results as $result) {
                
    $data['manuf'][] = array(
                    
    'name' => $result['name'],
                    
    'href' => $this->url->link('product/manufacturer/info''manufacturer_id=' $result['manufacturer_id'])
                );
            }
           
           
            
    $data['categories'][] = array(
                
    'name'     => 'Производители',
                
    'children' => $data['manuf'],
                
    'column'   => 1,
                
    'href'     => $this->url->link('product/manufacturer')
            );
     
    Div2303, 0Cult, kukumberg и 2 другим нравится это.
  2. glossyweb

    glossyweb Новичок

    Сообщения:
    19
    Симпатии:
    2
    как такой же список вывести с картинками, но в категории, и тянуть производителей которые присуцтвують в тей же категории.
     
  3. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    делать делать и еще раз делать. Ждем, может кто сделает.
     
  4. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Подскажите, выдаёт ошибку
    Notice: Undefined index: subchildren in \catalog\view\theme\default\template\common\header.tplon line 128
    В чём может быть проблема?
     
  5. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Добрый день.
    Подскажите под 2ой опенкарт такое можно сделать? Данный пример не срабатывает, точнее срабатывает но с ошибкой:
    Notice: Undefined index: subchildren in \catalog\view\theme\default\template\common\header.tplon line 128
     
  6. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Если нужны производители без разделения на категории.
    Вставляем в контроллер в пределах функции index()...
    PHP:
    //Manufacturers
    $this->load->model('catalog/manufacturer');
    $this->load->model('tool/image');

    $this->load->language('product/manufacturer');

    $data['manufacturers'] = array();

    $manufacturers $this->model_catalog_manufacturer->getManufacturers();

    foreach (
    $manufacturers as $manufacturer) {
      if (
    $manufacturer['meta_h1']) {
        
    $name $manufacturer['meta_h1'];
      } else {
        
    $name $manufacturer['name'];
      }

      if (
    $manufacturer['image']) {
        
    $image $this->model_tool_image->resize($manufacturer['image'], 270170 );
      } else {
        
    $image '';
      }

      
    $data['manufacturers'][] = array(
        
    'name'  => $name,
        
    'image' => $image,
        
    'href'  => $this->url->link('product/manufacturer/info''manufacturer_id=' $manufacturer['manufacturer_id'])
      );
    }
    Вывод в шаблон....
    HTML:
    <?php if ($manufacturers) { ?>
      <div class="row">   
        <?php foreach ($manufacturers as $manufacturer) { ?>
          <div class="col-sm-3 col-xs-12">
            <div class="col-manufacturer boxshadow">
              <a href="<?php echo $manufacturer['href']; ?>">
                <?php if ($manufacturer['image']) { ?>
                  <img src="<?php echo $manufacturer['image']; ?>" alt="<?php echo $manufacturer['name']; ?>" title="<?php echo $manufacturer['name']; ?>" class="img-thumbnail" />
                <?php } ?>
                <span><?php echo $manufacturer['name']; ?></span>
              </a>
            </div>
          </div>
        <?php } ?>               
      </div>
    <?php } ?>
    
    P.S. Лично я вывел на главную страницу вместо карусели, ибо не вижу смысла добавлять производителей в модуль карусель. Двойная работа! Пусть производитель сам выводится после добавления.

    А уж организовать карусель плёвое дело......
    Код:
    <?php if ($manufacturers) { ?>
      <div class="col-xs-12">
        <div id="carousel-manufacturers">     
          <?php foreach ($manufacturers as $manufacturer) { ?>
            <div class="col-xs-12">
              <a href="<?php echo $manufacturer['href']; ?>">
                <?php if ($manufacturer['image']) { ?>
                  <img src="<?php echo $manufacturer['image']; ?>" alt="<?php echo $manufacturer['name']; ?>" title="<?php echo $manufacturer['name']; ?>" class="img-thumbnail" />
                <?php } ?>
                <span><?php echo $manufacturer['name']; ?></span>
              </a>
            </div>       
          <?php } ?>                 
        </div>
      </div>
    <?php } ?>
    
    PHP:
    <script type="text/javascript">
    $(
    '#carousel-manufacturers').owlCarousel({
      
    items8,
      
    itemsCustom false,
      
    itemsDesktop : [11996],
      
    itemsDesktopSmall : [9795],
      
    itemsTablet : [7685],
      
    itemsTabletSmall false,
      
    itemsMobile : [4792],
      
    singleItem false,
      
    itemsScaleUp false,
      
    autoPlay3000,
      
    stopOnHovertrue,
      
    navigationfalse,
      
    navigationText: ['<i class="fa fa-chevron-left fa-5x"></i>''<i class="fa fa-chevron-right fa-5x"></i>'],
      
    paginationfalse
    });
    </
    script>
     
    Последнее редактирование: 25 мар 2016
  7. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Спасибо за ответ.
    Может вы знаете как сделать вывод выпадающим списком в меню страница производителей (не всех а только нужных id)
    Так что бы при наведении на меню выпадал список
    Производитель 1 Производитель 2 Производитель 3
    Производитель 4 Производитель 5 Производитель 6
    ......................
    Все производители
     
  8. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    ну или хотя бы как вывести без логотипов просто названия брендов выпадающим списком?
     
  9. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Выпадающий список тут - http://mybootstrap.ru/javascripts/#dropdowns
    Осилите?
    Если не надо выводить логотипы, то просто удалите их из кода вывода в шаблон.
     
  10. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    добавить в массив $data['manufacturers'][] = array() новый элемент 'id' => $manufacturer['manufacturer_id'] и в шаблоне в цикле фильтровать по нужным вам id -
    PHP:
    if ($manufacturer['id']) == || if ($manufacturer['id']) == 2...........) {
    }
     
  11. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Попробую) Спасибо.
    Скажите а в этом коде:
    Код:
    $this->load->model('catalog/manufacturer');       
           
            $data['manuf'] = array();
    
            $results = $this->model_catalog_manufacturer->getManufacturers();
           
            foreach ($results as $result) {
                $data['manuf'][] = array(
                    'name' => $result['name'],
                    'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
                );
            }
           
           
            $data['categories'][] = array(
                'name'     => 'Производители',
                'children' => $data['manuf'],
                'column'   => 1,
                'href'     => $this->url->link('product/manufacturer')
            );
    что можно подправить что бы ошибка не вылазила? как вывести просто все производители списком?
    Спасибо.
     
  12. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    А какая ошибка вылазит?
     
  13. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Notice: Undefined index: subchildren in \catalog\view\theme\default\template\common\header.tplon line 128
     
  14. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    и что там в этой строчке? судя по ошибке не может быть определена переменная subchildren. Откуда она у вас там! Не могу её найти в коде по которому вы пытаетесь вывести производителей.
     
  15. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    в шаблоне в этой строке у меня <?php if($child['subchildren']) { ?>
    Вывод подкатегорий в меню.
     
  16. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    А при чём здесь меню!? Что то я запутался!
     
  17. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Тоже не знаю(
    Делаю так в файле \catalog\controller\common\header.php
    перед
    Код:
     $data['language'] = $this->load->controller('common/language');
    Вставляю
    Код:
    $this->load->model('catalog/manufacturer');       
           
            $data['manuf'] = array();
    
            $results = $this->model_catalog_manufacturer->getManufacturers();
           
            foreach ($results as $result) {
                $data['manuf'][] = array(
                    'name' => $result['name'],
                    'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
                );
            }
           
           
            $data['categories'][] = array(
                'name'     => 'Производители',
                'children' => $data['manuf'],
                'column'   => 1,
                'href'     => $this->url->link('product/manufacturer')
            );
    И вот как выводится [​IMG]
     
  18. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Я кстати немножко туплю))). Не сразу заметил что это способ вывода именно в меню. Попробовал - у меня всё работает!
    А попробуйте в массиве
    PHP:
    $data['categories'][] = array(
      
    'name'     => 'Производители',
      
    'children' => $data['manuf'],
      
    'column'   => 1,
      
    'href'     => $this->url->link('product/manufacturer')
    );
    PHP:
    'children' => $data['manuf'],
    заменить на
    PHP:
    'subchildren' => $data['manuf'],
     
  19. Джо

    Джо Новичок

    Сообщения:
    24
    Симпатии:
    0
    Пробовал уже, тогда ошибку выдаёт:

    • Notice: Undefined index: children in \catalog\view\theme\default\template\common\header.tplon line 119

    • А в этой строке <?php if ($category['children']) { ?>

    • Сам не могу что-то понять(
     
  20. DiMoss

    DiMoss Продвинутый пользователь

    Сообщения:
    862
    Симпатии:
    236
    Шаблон НЕ дефолтный?