ЭНЦИКЛОПЕДИЯ СОВРЕМЕННОГО САЙТОСТРОЕНИЯ

Инструкция Атрибуты вместо описаний на страницах

Тема в разделе "Версии 2.x", создана пользователем Алексей, 29 фев 2016.

  1. Алексей

    Алексей Гуру Команда форума Эксперт

    Сообщения:
    367
    Рейтинг:
    151
    Во многих случаях характеристики товара намного важнее его описания. Особенно, когда дело касается предварительного просмотра, когда пространство ограничено несколькими короткими строками.
    Все характеристики в Опенкарт прописываются в атрибутах. Так задумано. И эти же атрибуты используются для фильтрации товара. И их же можно использовать в качестве описаний товаров на страницах категорий или в результатах поиска.

    При прочих равных условиях. Товар с характеристиками, но без описания. Слева стандартный вид (результат поиска), справа то, к чему надо прийти (вид в категории):
    DenWP5.png DenWP4.png

    Делаем вывод атрибутов в результатах поиска. Порядок действий следующий:
    1) Находим на сервере файл catalog\controller\product\search.php

    Находим строку 251
    Код:
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
    и меняем её на
    Код:
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
    Сразу после неё вставляем новую строку
    Код:
    'attribute_groups'=> $this->model_catalog_product->getProductAttributes($result['product_id']),
    Сохраняем, выгружаем на сервер.

    2) Находим файл catalog\view\theme\НАЗВАНИЕ ВАШЕГО ШАБЛОНА\template\product\search.tpl

    Строка 116
    Код:
    <p><?php echo $product['description']; ?></p>
    ВМЕСТО неё вставляем
    Код:
    <div class="description">
    <?php if($product['attribute_groups']) { ?>
    <table>
    <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
    <tbody>
    <?php foreach($attribute_group['attribute'] as $attribute) { ?>
    <tr>
    <td><b><?php echo $attribute['name']; ?>:</b> &ensp; <?php echo $attribute['text']; ?></td>
    </tr>
    <?php } ?>
    </tbody>
    <?php } ?>
    </table>
    <?php } ?>
    </div>
    
    Сохраняем, отправляем, радуемся полученному результату и идём пить чай.

    Ах, да. Такой приём можно использовать на любых страницах где выводятся товары: категории, результаты поиска, блок рекомендуемых товаров... В общем, что угодно.
    Номера строк могут не совпадать, а потому ищите нужное место через CTRL+F.

    Классу description потом можно задать стили в CSS. Лично я запилил всё это дело в таблицу с одной колонкой, выделил жирным название характеристик и сделал отступ перед значением.

    Фломастеры на вкус разные, так что экспериментировать никто не запрещает. При желании можно вывести атрибуты только определённой группы, но это уже ковырять в сторону цикла. Если столкнусь с такой необходимостью, отпишусь сюда и покажу на примере что и как.
     
    #1
  2. Загрузка...