[Помогите] Вывод краткого описания товара вместо основного в категории

Тема в разделе "OpenCart", создана пользователем termotorg.shop, 14 янв 2014.

  1. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    Доброго дня!
    В категории товаров вывод описания товара дублирует сокращенно основное и заканчивается троеточием. Необходимо сделать дополнительное окно в редакторе товара для написания краткого описания которое бы выводилось в категории при просмотре общего ассортимента (как здесь). Но в решении для версии 1.4.9, а нужно для 1.5.4.1. Подскажите пожалуйста, думаю что это будет полезно и остальным.
     
  2. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    На первый взгляд там все почти актуально, кроме запроса к бд и в модели админки и вызова в темплейте клиентской части, в подобных случаях всегда помогает смотреть в качестве примера имеющийся код и дописывать нужное. Например для вызова в модели вместо предложенных изменений надо будет в двух местах после
    Код:
    seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'
    добавить
    Код:
    , mini_description = '" . $this->db->escape($value['mini_description']) . "'
    и после 'seo_h1' => $result['seo_h1'], добавить 'mini_description' => $result['mini_description'].
    вызывать. В контроллере категории (каталог/контроллер/продукт) после $this->data['seo_h1'] = $category_info['seo_h1'];, добавить соответсвенно $this->data['mini_description'] = $category_info['mini_description']; и в макете вызывать <?php echo $product['mini_description']; ?>.
    а еще есть модуль
     
    Последнее редактирование: 15 янв 2014
    termotorg.shop нравится это.
  3. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    За модуль спасибо, не знал о таком
    Но Short description не выводится в категории, только в карточке товара. Может можно как то это исправить?
     
  4. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    Судя по содержанию vqmod выводиться в категорию должно.
    Код:
    <file name="catalog/controller/product/category.php">
            <operation>
                <search position="after" offset="3" ><![CDATA[$this->data['products'][] = array(]]></search>
                <add><![CDATA['short_description' => html_entity_decode(!empty($result['short_description']) ? $result['short_description'] : '', ENT_QUOTES, 'UTF-8'),]]></add>
            </operation>   
        </file>
       
        <file name="catalog/view/theme/*/template/product/category.tpl">
            <operation>
                <search position="replace" ><![CDATA[<div class="description"><?php echo $product['description']; ?></div>]]></search>
                <add><![CDATA[<div class="description"><?php echo (empty($product['short_description'])) ? $product['description'] : $product['short_description']; ?></div>]]></add>
            </operation>   
        </file>
    А проверить работоспособность этого фрагмента кода надо. Особенно в части касающейся темплейта, или попробовать сделать изменение вручную. шаблон стандартный? сейчас есть обрезанный вариант стандартного описания? если есть, то конечно надо править. Как проверить позиции понятно?
     
    termotorg.shop нравится это.
  5. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    Шаблон не стандартный, но лежит в дефолтной папке. Обрезанный вариант создавал.
    [​IMG]
    В категории нет, в карточке есть.
    В файле catalog/view/theme/default/template/product/category.tpl
    строк <div class="description"><?php echo $product['description']; ?></div> и <div class="description"><?php echo (empty($product['short_description'])) ? $product['description'] : $product['short_description']; ?></div>
    нет!
     
    Последнее редактирование: 15 янв 2014
  6. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    в карточке товара понятно что описание есть, соответственно и вызов его, а если краткого описания нет в категории, то перво-наперво надо придумать как его выводить, вызывается оно упрощенно <?php echo $product['description']; ?> при наличии нужных изменений в контроллере. Как бы тут задача сводится именно к тому чтобы визуально вписать его в шаблон категории - вызвать его не проблема.
     
    termotorg.shop нравится это.
  7. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    Я так понимаю что стиль можно потом будет отредактировать в CSS, визуально устраивает и нынешний вариант, только количество символов можно увеличить до 200 - 250 знаков и не ставить троеточие. Под словом визуально Вы это имели ввиду?
     
  8. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    так значит описание все же есть, темплейт категории в студию. естественно обрезки и троеточий не будет.
     
    termotorg.shop нравится это.
  9. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    Вот файл catalog/view/theme/default/template/product/category.tpl.
     
    Последнее редактирование: 15 янв 2014
  10. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    <!-- Filter start -->
    <div class="description">
    <?php if ($product['attributes']) { ?>
    <?php if (is_array($product['attributes'])) { ?>
    <ul class="attributes">
    <?php foreach ($product['attributes'] as $key => $attribute) { ?>
    <li><span class="option"><?php echo $attribute['name']; ?>:</span>&nbsp;<span class="value"><?php echo $attribute['values']; ?></span></li>
    <?php } ?>
    </ul>
    <?php } else { ?>
    <?php echo $product['attributes']; ?>
    <?php } ?>
    <?php } else { ?>
    <?php echo $product['description']; ?>
    <?php } ?>
    </div>
    <!-- Filter end --> - этот фрагмент кода отвечает за вывод в шаблоне, как видим там объявлен просто дескрипшн, значит тип описания выбирается и ибрезается на уровне контроллера, в контроллере, есть примерно такой кусок кода (это в массиве товара $this->data['products'][] = array( )
    Код:
    'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 250) . '...',
    проще всего заменить его на
    Код:
    'description' => $result['short_description'],
     
    termotorg.shop нравится это.
  11. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    ЗДОРОВО!
    Только вот в кратком описании появились вот такие знаки <p>short description</p> и нет переноса текста. С внешним видом это в css-ке, а вот как избавиться от этих знаков? Где ошибка есть предположения?
     
  12. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    756
    Симпатии:
    269
    фиговато разбираюсь в пхп попробовать так
    'description' => utf8_substr(strip_tags(html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8')), 0, 250) . '', - тут похоже и обрезаются теги, количество символов можно увеличить. Переноса нет так как там одно слово, как заставить его переносить я не знаю.
     
    termotorg.shop нравится это.
  13. termotorg.shop

    termotorg.shop

    Регистрация:
    5 янв 2014
    Сообщения:
    94
    Симпатии:
    9
    ОГРОМНОЕ ВАМ СПАСИБО ЗА ОТЗЫВЧИВОСТЬ И ПОНЯТНОЕ РАЗЪЯСНЕНИЕ!!!
    Теперь можно спокойно ложится спать))
     
    cereberlum нравится это.