[Помогите] Проблемы с кратким описанием товаров в категории

Тема в разделе "OpenCart", создана пользователем alex5151, 6 окт 2013.

  1. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    165
    Симпатии:
    26
    краткое описание товаров получается из полного, используя следующие функции:
    Код:
    utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100)
    всё конечно хорошо, но если мне не нужно обрезать теги <b>например</b>?
    не вопрос, убираем strip_tags() и на первый взгляд всё получилось, но нет.
    substr() может обрезать строку <b>например</b> по разному. В результате может получится:
    <b>например
    <b>например</b
    >например</b>
    и как следствие искажение вёрстки и отображение частей тегов в описании.

    Вопрос:
    Каким образом можно без искажение вёрстки и без отображение частей тегов обрезать краткое описание до n-го количества символов, желательно без учёта символов тегов?
     
  2. gnommong

    gnommong

    Регистрация:
    29 июн 2013
    Сообщения:
    176
    Симпатии:
    194
    Я так понял, что это именно это обсуждают вот тут.
     
    alex5151 нравится это.
  3. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    165
    Симпатии:
    26
    попробовал описанный метод - аналогичная проблема.
    может из строки:
    <b>два слова</b>
    сделать строку
    <b>два
    и как следствие испортить вёрстку
     
  4. bawan

    bawan

    Регистрация:
    15 дек 2012
    Сообщения:
    102
    Симпатии:
    11
    Сделать походу можно только написав свою функцию, которая будет анализировать текст, искать теги и закрывать их, если не закрыты.
    ---
    Вот еще такой скрипт есть - вроде на демке форматирование не портит (но я не проверял) - если прикрутишь, отпишись че как.
    https://github.com/FrDH/jQuery.dotdotdot
     
    alex5151 нравится это.
  5. alex5151

    alex5151

    Регистрация:
    15 ноя 2012
    Сообщения:
    165
    Симпатии:
    26
    конечно спасибо, но подключать дополнительные скрипты как-то не хочется. и так уже навалом.
    да и проблему в принципе решил.
    ввиду наличия в моём описании всего одного тега <b></b>
    добавил после
    Код:
    <?php echo $product['description']; ?>
    вот это
    Код:
    <?php if (substr_count($product['description'], '</b>')<>substr_count($product['description'], '<b>')) {?>
    </b>
    <?php } ?>  
    
    хоть решение и не очень изящное, но зато простое
     
  6. Bogdan

    Bogdan

    Регистрация:
    25 фев 2013
    Сообщения:
    228
    Симпатии:
    104
    А изящного тут быть не может. Если учесть вложенность, то никогда не поймешь что предполагалось. Есть такой невалидный код:
    <b> <b> aaaa </b> <b> bbbb </b>
    Тут уж точно не поймешь куда вставлять закрывающий </b>
    Логичней всего:
    <b></b> <b> aaaa </b> <b> bbbb </b>,
    но и
    <b> <b> aaaa </b> </b> <b> bbbb </b>
    и
    <b> <b> aaaa </b> <b> bbbb </b> </b>
    будут валидными.
    Поэтому самое простое решение ничем не хуже, чем "хитроумное"
     
  7. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    17
    Симпатии:
    1
    Доброго времени суток
    Вот такая ещё проблемка поднялась в версии 2101
    Краткое описание регулируется в настройках магазина во вкладке опции. Но...
    Цифра которая там прописывается не соответствует действительности вывода символов.
    Например если прописать 60, то может вывестись 70.
    Что надо сделать чтоб выводилось именно то количество символов которое указано в настройках?