[Помогите] Ограничение числа символов в названии товара

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

  1. timofey

    timofey

    Регистрация:
    14 ноя 2012
    Сообщения:
    53
    Симпатии:
    18
    Подскажите, как в названии товара, кот. отображаются на главной странице магазина задать максимальное число выводимых символов?
    [​IMG]
     
  2. Matras

    Matras Guest

  3. WildeRNS

    WildeRNS

    Регистрация:
    6 ноя 2012
    Сообщения:
    151
    Симпатии:
    112
    в файле шаблона ищите переменную с названием и меняете ее на:
    Код:
    echo mb_substr( $product['name'],0,20,'utf-8' );
    , $product['name'] - переменная (заменить на свою), 20 - сколько символов оставлять.
    Пример моего шаблона category.tpl, режет по-символьно. Другой функцией можно реализовать обрезку по словам.

    П.С. если надо еще после обрезки поставить ..., то:
    Код:
    echo mb_substr( $product['name'],0,20,'utf-8' )."...";
     
    timofey и Lion18 нравится это.
  4. timofey

    timofey

    Регистрация:
    14 ноя 2012
    Сообщения:
    53
    Симпатии:
    18
    WildeRNS подскажи пожалуйста, как правильно записать условие чтобы троеточие добавлялось только к обрезанным названиям?
     
  5. timofey

    timofey

    Регистрация:
    14 ноя 2012
    Сообщения:
    53
    Симпатии:
    18
    все разобрался сам:
    сначала ввел переменную, в которой задается максимальное число символов:
    Код:
    <?php $cut_symbols = 90; ?>
    затем проверяется условие, если число символов в названии продукта больше значения переменной $cut_symbols:
    Код:
    <?php if (mb_strlen($product['name'], 'UTF-8') > $cut_symbols) { ?>
    , то соответственно обрезаем название по количеству символов и добавляем в конце HTML-ное троеточие, иначе выводим название продукта целиком:
    Код:
    <div class="name">
    <a href="<?php echo $product['href']; ?>"><?php echo mb_substr( $product['name'],0,$cut_symbols,'utf-8' ).'&nbsp;&hellip;'; ?></a>
    </div>
    <?php } else { ?>
    <div class="name">
    <a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
    </div>
    <?php } ?>
     
  6. WildeRNS

    WildeRNS

    Регистрация:
    6 ноя 2012
    Сообщения:
    151
    Симпатии:
    112
    а можно так:
    Код:
    <?php if( strlen( $product['name'] ) < 30 ) { echo $product['name']; } else { echo mb_substr( $product['name'],0,20,'utf-8' )."..."; } ?>
     
    v@dim нравится это.
  7. Владимир Z

    Владимир Z

    Регистрация:
    12 янв 2013
    Сообщения:
    73
    Симпатии:
    30
    Данный код верен только для однобайтовых кодировок. Но если используется однобайтовая кодировка, зачем использовать mbstring.
     
  8. WildeRNS

    WildeRNS

    Регистрация:
    6 ноя 2012
    Сообщения:
    151
    Симпатии:
    112
    потому, что работает и так.