Хак Лимит символов {title} при выводе новостей при помощи {custom}

Тема в разделе "DLE", создана пользователем Doctor_zlo, 23 авг 2012.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Doctor_zlo

    Doctor_zlo

    Moderator
    Регистр.:
    25 апр 2008
    Сообщения:
    464
    Симпатии:
    1.025
    Делаю 1 сайт, где последние новости из категорий выводяться при помощи тега custom
    Понадобилось ограничить количество символов пи выводе названия новости.
    engine/modules/show.custom.php
    после $tpl->set( '{title}', stripslashes( $row['title'] ) ); добавить
    PHP:
            $temp substrstripslashes$row['title'] ), 040 );
    if (
    strlen ($temp) == 40 $temp .= '...';
    $tpl->set'{title_lim}'$temp);
    где 40 кол-во знаков. В шаблоне выводиться тегом {title_lim}
     
  2. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    758
    Симпатии:
    326
    Было бы логичнее наверное не
    Код:
    if (strlen ($temp) == 40 )
    а
    Код:
    if (strlen ($temp) >= 40 )
    ?
     
  3. Doctor_zlo

    Doctor_zlo

    Moderator
    Регистр.:
    25 апр 2008
    Сообщения:
    464
    Симпатии:
    1.025
    Как оно может быть логичнее если на предыдущем шаге $temp обрезана до 40 символов и не может быть больше?
     
  4. Nonsleep

    Nonsleep Создатель

    Регистр.:
    7 авг 2012
    Сообщения:
    24
    Симпатии:
    4
    Если кодировка сайта в UTF8 то не пойдет. Т.к. strlen возвращает не количество символов, а количество байтов. В UTF8 только первые 128 символов однобайтовые. Так-что что бы было верно значение умножить на 3 где-то.

    Не знаю как в ранних версиях, но в 9.6 есть функция с учетом кодировки:
    PHP:
    if (dle_strlen(текст$config['charset']) > количества символов ) {
        
    текст dle_substr(текст0количество символов,$config['charset']) . "...";
    } else {
        
    текст без изменений
    }
     
  5. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    758
    Симпатии:
    326
    да, я тупанул, согласен.

    PS
    В пресс-релизе 9.7 заявлена эта фишка :)
     
  6. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Док, а не проще через месяц на 9.7 пересесть? Там это будет встроенной функцией.
     
Статус темы:
Закрыта.