Вывод логотипов брендов на страницы категории версии 3

Тема в разделе "Модули и дополнения", создана пользователем Juzosif, 24 фев 2018.

  1. Juzosif

    Juzosif Активный пользователь

    Сообщения:
    263
    Симпатии:
    20
    Ув. коллеги где та в сети находил vqmod файл вывод брендов на страницы категории, перевел его на ocmod под версии 2,3.
    Код:
    <file path="catalog/model/catalog/manufacturer.php">
            <operation error="abort">
                <search><![CDATA[public function getManufacturers($data = array()) {]]></search>
                <add position="before"><![CDATA[
    public function getBrandsByCategoryId($category_id) {
        $query = $this->db->query("
            SELECT
                m.*
            FROM
                " . DB_PREFIX . "product p
            RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON
                p.product_id = p2c.product_id
            LEFT JOIN " . DB_PREFIX . "manufacturer m ON
                p.manufacturer_id = m.manufacturer_id
            WHERE
                p2c.category_id = " . (int)$category_id . " AND
                m.manufacturer_id IS NOT NULL
            GROUP BY m.manufacturer_id
        ");
        return $query->rows;
    }       
                ]]></add>
            </operation>
        </file>
        
        <file path="catalog/controller/product/category.php">
            <operation error="abort">
                <search><![CDATA[$category_info = $this->model_catalog_category->getCategory($category_id);]]></search>
                <add position="before"><![CDATA[
    $this->load->model('catalog/manufacturer');
    $brands = $this->model_catalog_manufacturer->getBrandsByCategoryId($category_id);
    $data['brands'] = array();
    foreach ($brands as $brand) {
        $image = $brand['image'];
        $data['brands'][] = array(
            'name'            => $brand['name'],
            'image'            => $this->model_tool_image->resize($brand['image'], 90, 60),
            'href_brand'    => $this->url->link('product/manufacturer/info',  'manufacturer_id=' . $brand['manufacturer_id'] . $url),
            'href_category'    => $this->url->link('product/category', '&path=' . $this->request->get['path'] . '&manufacturer_id=' . $brand['manufacturer_id'] . $url)
        );
    }
                ]]></add>
            </operation>
        </file>
    
        <file path="catalog/view/theme/*/template/product/category.twig">
            <operation error="abort">
                <search><![CDATA[<?php if ($products) { ?>]]></search>
                <add position="before"><![CDATA[
    <?php if ($brands) { ?>     
    <?php if ($categories) { ?>
    <hr style="margin: 0;">
    <?php } ?>
    <div class="row">
        <div style="padding-left: 15px;">
            <?php foreach ($brands as $brand) { ?>
            <div style="display: inline-block; width: 130px; padding: 5px; vertical-align: top; line-height: normal; text-align: center; word-wrap: break-word; overflow: hidden;">
                <a href="<?php echo $brand['href_brand']; ?>">
                    <div><img src="<?php echo $brand['image']; ?>" /></div>
                    <div style="font-size: smaller;"><?php echo $brand['name']; ?></div>
                </a>
            </div>
            <?php } ?>
        </div>
    </div>
    <hr>
    <?php } ?>
                ]]></add>
            </operation>
        </file>
    Теперь понадобилась под версии 3.
    Честно говоря не соображу.
    Если кому не сложно доведите его до ума под версии 3, буду благодарен.

    З.Ы код не мой и автор не известен!
     
  2. karpov

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

    Сообщения:
    1.534
    Симпатии:
    246
    2018-02-25_08-50-32.png
     

    Вложения:

    Juzosif нравится это.
  3. pascha

    pascha Новичок

    Сообщения:
    2
    Симпатии:
    7
    с этим все понятно и работоспособно на 100%
    вопрос как описание бренда вывести туда же?
    что делалось
    в тпл

    <?php echo $brand['description']; ?>

    в контроллере
    и так
    'description' => $brand['description'],
    и так

    $description = $brand['description'];

    ошибка на фронтеде
    Notice: Undefined index: description in catalog/view/theme/default/template/product/category.tpl

    предполагаю что не хватает чего то в catalog/model/catalog/manufacturer.php , подсобите пожалуйста, заранее благодарю

    Интересует решение для Опенкарт(OcStore) v.2.3
     
    Последнее редактирование: 16 дек 2018
  4. manwhocode

    manwhocode Новичок

    Сообщения:
    26
    Симпатии:
    0
  5. pascha

    pascha Новичок

    Сообщения:
    2
    Симпатии:
    7
    Неудачное ночное копирование, не более...
    Дело не в кавычках...

    решение найдено:
    в сatalog/model/catalog/manufacturer.php
    вместо вышеуказанного


    Код:
    public function getBrandsByCategoryId($category_id) {
        $query = $this->db->query("
            SELECT m.*, md.description AS description FROM " . DB_PREFIX . "product p  RIGHT JOIN " . DB_PREFIX . "product_to_category p2c ON  p.product_id = p2c.product_id
            LEFT JOIN " . DB_PREFIX . "manufacturer m ON  p.manufacturer_id = m.manufacturer_id LEFT JOIN " . DB_PREFIX . "manufacturer_description md ON (m.manufacturer_id = md.manufacturer_id)  WHERE   p2c.category_id = " . (int)$category_id . " AND m.manufacturer_id IS NOT NULL  GROUP BY m.manufacturer_id ");
        return $query->rows;
    }
    в контроллер catalog/controller/product/category.php в массив добавляем

    Код:
    'description'    => html_entity_decode($brand['description'], ENT_QUOTES, 'UTF-8'),
    на фронт catalog/view/theme/default/template/product/category.tpl
    Код:
    <?php if ($brands) { ?>
                <?php foreach ($brands as $brand) { ?>
                <div class="row">
                    <div class="col-sm-2">
                    <a href="<?php echo $brand['href_brand']; ?>"><img src="<?php echo $brand['image']; ?>" alt="<?php echo $brand['name']; ?>" title="<?php echo $brand['name']; ?>" class="img-responsive" /></a></div>
                            <div class="col-sm-10"><?php echo $brand['description']; ?></div>
                  </div>            
              <?php } ?>
              <?php } ?>
     
    Последнее редактирование: 17 дек 2018
    Ravilr нравится это.