Доброго дня! В категории товаров вывод описания товара дублирует сокращенно основное и заканчивается троеточием. Необходимо сделать дополнительное окно в редакторе товара для написания краткого описания которое бы выводилось в категории при просмотре общего ассортимента (как здесь). Но в решении для версии 1.4.9, а нужно для 1.5.4.1. Подскажите пожалуйста, думаю что это будет полезно и остальным.
На первый взгляд там все почти актуально, кроме запроса к бд и в модели админки и вызова в темплейте клиентской части, в подобных случаях всегда помогает смотреть в качестве примера имеющийся код и дописывать нужное. Например для вызова в модели вместо предложенных изменений надо будет в двух местах после Код: 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']; ?>. а еще есть модуль
За модуль спасибо, не знал о таком Но Short description не выводится в категории, только в карточке товара. Может можно как то это исправить?
Судя по содержанию 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> А проверить работоспособность этого фрагмента кода надо. Особенно в части касающейся темплейта, или попробовать сделать изменение вручную. шаблон стандартный? сейчас есть обрезанный вариант стандартного описания? если есть, то конечно надо править. Как проверить позиции понятно?
Шаблон не стандартный, но лежит в дефолтной папке. Обрезанный вариант создавал. В категории нет, в карточке есть. В файле 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> нет!
в карточке товара понятно что описание есть, соответственно и вызов его, а если краткого описания нет в категории, то перво-наперво надо придумать как его выводить, вызывается оно упрощенно <?php echo $product['description']; ?> при наличии нужных изменений в контроллере. Как бы тут задача сводится именно к тому чтобы визуально вписать его в шаблон категории - вызвать его не проблема.
Я так понимаю что стиль можно потом будет отредактировать в CSS, визуально устраивает и нынешний вариант, только количество символов можно увеличить до 200 - 250 знаков и не ставить троеточие. Под словом визуально Вы это имели ввиду?
так значит описание все же есть, темплейт категории в студию. естественно обрезки и троеточий не будет.
<!-- 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> <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'],
ЗДОРОВО! Только вот в кратком описании появились вот такие знаки <p>short description</p> и нет переноса текста. С внешним видом это в css-ке, а вот как избавиться от этих знаков? Где ошибка есть предположения?
фиговато разбираюсь в пхп попробовать так 'description' => utf8_substr(strip_tags(html_entity_decode($result['short_description'], ENT_QUOTES, 'UTF-8')), 0, 250) . '', - тут похоже и обрезаются теги, количество символов можно увеличить. Переноса нет так как там одно слово, как заставить его переносить я не знаю.