Перейти к контенту

Текстовое представление смайликов


Song

Рекомендуемые сообщения

Некоторые люди берегут свой трафик и не показывают картинок в браузере. Всё бы хорошо, но уж больно смайлы ущербно выглядят. Просто квадратик или вообще пустое место.

Предлагаю немного улучшить этим людям жизнь.

Теперь в текстовом режиме смайлы будут не просто квадратиком, а квадратиком с собвственном самим текстовым представлением смайлика.

 

Файл post_parser.php

Находим

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='$image' /><!--endemo-->";

Заменяем на

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='$code' /><!--endemo-->";

Ссылка на комментарий
Поделиться на других сайтах

Сделаем тоже самое для таблицы смайлов.

В файлах Topics.php (дополнительный мод - расширенная форма быстрого ответа, если есть) и Post.php

найдём строку

   $smilies .= "<td><a href={$out_delim}javascript:emoticon($in_delim".$elmo['typed']."$in_delim){$out_delim}><img src=\"".$ibforums->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='smilie' border='0' /></a> </td>\n";

и заменим её на

   $smilies .= "<td><a href={$out_delim}javascript:emoticon($in_delim".$elmo['typed']."$in_delim){$out_delim}><img src=\"".$ibforums->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='{$elmo['typed']}' border='0' /></a> </td>\n";

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
квадратиками они отображется в эксплорере, в опере норм. почему-то для 1.3 этот спопособ не прокатил. как были квадритике в осле, так и остались.
Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

с alt='$code' получается интересный глюк.

Есть смайлики

 1) :oh: и 2) :O

Когда пишем 1й, получается весьма странный результат (это в БД)

<!--emo&:oh:--><img src='Ссылка на картику 1го смайла' border='0' style='vertical-align:middle' alt='<!--emo&:O--><img src='Ссылка на картинку 2го смайла' border='0' style='vertical-align:middle' alt=':O' /><!--endemo-->h:' /><!--endemo-->

 

В БД видно, что в alt записывается смайлик 2.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 месяца спустя...

PALADIN+, и не только в этом глюк.

В предварительном просмотре ответа все смайлики почему-то прогоняются дважды и получается, что если alt содержит смайлик, то он тоже форматируется.

Предполагаю, что для решения этой ситуации надо в парсере подправить вот этот код:

$txt = preg_replace( "!(?<=[^\w&;/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

Добавить в него что-то (не очень дружу с регулярными, поэтому не знаю что именно :D), чтобы исключить форматирование смайликов, которые содержатся в alt'е, то есть не форматировать вот такое: alt=';)'.

Помогите, плиз, как такое сделать?

Ссылка на комментарий
Поделиться на других сайтах

точняк))

если в альте будет смайл, то он превратится в еще один смайл

 

значит надо просто немного изменять альт при выводе, а именно убирать из него какой-нибудь ключевой символ

типа " : "

или заменять его на что-нибудь необрабатываемое

 

или изменять альт как-нибудь еще

 

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='".str_replace(':','',$code)."' /><!--endemo-->";

похоже на правду?

Ссылка на комментарий
Поделиться на других сайтах

я думаю, что лучше будет все-таки изменить в парсере

$txt = preg_replace( "!(?<=[^\w&;/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

на

$txt = preg_replace( "!(?<=[^\w&';/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

у меня получилось, но можно ли употреблять символ ' (кавычку) в регулярных выражениях? я такого никогда раньше не видел... проблем не будет?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.