Меняем цвет шрифта в комментариях

+17
2.37K
В предыдущем посте на скорую руку была сделана возможность выделять красным цветом текст в комментариях. Пользователи (на моем сайте, естественно), поблагодарили и… им захотелось большего. Почему только красный? Пришлось переделывать. Для этого подглядел, как цвет меняется в phpBB ну и вывод BBcode в Инстанте.

а) В файле /core/classes/page.class.php над функцией function getSmilesPanel (просто для удобства)
добавляем следующую функцию:

  1. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. // сделано по аналогии с phpBB
  3. /** ///!!!
  4.  * Возвращает html-код панели с выбором цвета
  5.  * @param string $for_field_id
  6.  * @return html
  7.  */
  8. public static function getColorPanel($for_field_id){
  9. $dir = 'h'; //горизонтальное
  10. $width= 20; //ширина ячейки с цветом
  11. $height= 10; //высота ячейки с цветом
  12. $color = '';
  13. $numberList[0] = '00';
  14. $numberList[1] = '40';
  15. $numberList[2] = '80';
  16. $numberList[3] = 'BF';
  17. $numberList[4] = 'FF';
  18.  
  19. $html = '<div class="usr_msg_colorbox" id="colorpanel" style="display:none">';
  20. $html .= '<table>';
  21. for ( $r = 0 ; $r < 5 ; $r++) //$r=0;$r<5;$r++
  22. {
  23. if ($dir == 'h')
  24. {
  25. $html .='<tr>';
  26. }
  27.  
  28. for ($g = 0; $g < 5; $g++)
  29. {
  30. if ($dir == 'v')
  31. {
  32. $html .='<tr>';
  33. }
  34.  
  35. for ($b = 0; $b < 5; $b++)
  36. {
  37. $color = "$numberList[$r]"."$numberList[$g]"."$numberList[$b]";
  38.  
  39. $html .='<td style="background-color:#'. $color .'; width: '. $width.'px; height: ' . $height.'px;">';
  40. $html .='<a onclick="javascript:addTag(\''.$for_field_id.'\', \'[color=#'.$color.']\', \'[/color]\')"><img src="/images/pixel.gif" width="' .$width. '" height="' . $height .'" alt="#'.$color . '" title="#' .$color . '" /></a>';
  41. $html .='</td>';
  42.  
  43. }
  44.  
  45. if ($dir == 'v')
  46. {
  47. $html .='</tr>';
  48. }
  49. }
  50.  
  51. if ($dir == 'h')
  52. {
  53. $html .='</tr>';
  54. }
  55. }
  56. $html .='</table></div>';
  57. return $html;
  58.  
  59. }
б) В том же файле /core/classes/page.class.php в функции function getBBCodeToolbar перед строкой
  1. if ($placekind=='blogs')
вставляем

  1. $html .= '<a class="usr_bb_button" href="javascript:void(0)" onclick="$(\'#colorpanel\').slideToggle(\'slow\')" title="Вставить цвет">
  2. <img src="/includes/bbcode/images/color.png" alt="Вставить цвет" />
  3. </a>' ;
(Не забываем положить в директорию красивую кнопочку /includes/bbcode/images/color.png)

Ну и убираем за ненадобностью предыдущий мой хак "красный цвет" (естественно, если его вносили)

в) В файле /components/comments/addform.php перед строкой

добавляем

  1.  
  2. ///!!! start
  3. if ($cfg['bbcode'] && $is_user_add_bb){
  4. $colors=cmsPage::getColorPanel('content'); ///!!!
  5. }
  6. $smarty->assign('colors', $colors); ///!!!
  7. ///!!! end
  8.  
г) В файле /templates/ваш_шаблон/components/com_comments_add.tpl перед строкой с <div class="cm_editor">
вставляем

  1. {if $colors}
  2. <div class="cm_colors">{$colors}</div>
  3. {/if}
д) В файле /templates/ваш_шаблон/css/styles.css
добавляем примерно такие стили

  1. div.cm_colors{
  2. }
  3.  
  4. div.cm_colors table td {
  5. border-width: 1px;
  6. border-style: double;
  7. border-color: white;
  8. background-color: white;
  9. }
  10.  
  11. div.cm_colors a{
  12. text-decoration:none;
  13. }
  14.  
  15. div.cm_colors div.usr_msg_colorbox{
  16. background:#ECECEC;
  17. width:100%;
  18. border-left:solid 1px #666;
  19. border-right:solid 1px #666;
  20.  
  21. }
е) Добавляем цвет в комментарии на форуме:
в файле /components/forum/frontend.php

после строки
  1. echo cmsPage::getSmilesPanel('message');
она встречается 2 раза

вставляем строку
  1. echo cmsPage::getColorPanel('message'); ///!!!
ж) Цветовое выделение в первом посте блога:

в файле /components/blogs/frontend.php
перед строкой $smarty->display('com_blog_edit_post.tpl');
вставляем

  1. $colors=cmsPage::getColorPanel('message');
  2. $smarty->assign('colors', $colors);

Далее в файле /templates/ваш_шаблон/components/com_blog_edit_post.tpl
перед строкой {$autogrow}
вставляем
  1. <div class="cm_colors">{$colors}</div>
з) Выделение на стене пользователя

в файле /core/classes/user.class.php

находим строку
  1. $smilies = cmsPage::getSmilesPanel('message');
и после неё добавляем
  1. $colors = cmsPage::getColorPanel('message'); ///!!!
чуть ниже после строки
  1. $smarty->assign('smilies', $smilies);
добавляем
  1. $smarty->assign('colors', $colors); ///!!!
Затем в фале /templates/ваш_шаблон/components/com_users_addwall.tpl
после строки
  1. <div class="cm_smiles">{$smilies}</div>
добавляем
  1. <div class="cm_colors">{$colors}</div>
0
Female Female 13 лет назад #
не сработало(
+1
Igor-san Igor-san 13 лет назад #
Где не сработало? Это только для комментариев.
0
Female Female 13 лет назад #
вон оно что.да действительно в коментах работает.жаль ,что на форуме значок есть ,а не работает((
+1
Igor-san Igor-san 13 лет назад #
К сожалению, встроенный форум не использую (использую phpBB), но на досуге посмотрю что там.
0
Female Female 13 лет назад #
спасибо! буду очень благодарна,если сделаете)
+1
Igor-san Igor-san 13 лет назад #
Благодаря Female обнаружил свой промах - пропущенный закрывающий тег в функции getColorPanel. Должно быть так: $html .=''; Дополнил пост для форума
0
Female Female 13 лет назад #
спасибо большое! все отлично работает!
0
Настёна Настёна 13 лет назад #
Хорошая вещь, спасибо!
0
Настёна Настёна 13 лет назад #
А на стене пользователя не работает, хотя иконка есть!
+1
Igor-san Igor-san 13 лет назад #
Добавил новый пункт з) Выделение на стене пользователя
0
Настёна Настёна 13 лет назад #
УРА!!! Спасибо вам большое!
0
Zau4man Zau4man 13 лет назад #
А при написании в личку? Подскажите что подправить?
0
Zau4man Zau4man 13 лет назад #
Перенес изменения в page.class в if ($images)
В профиле эти иконки не отбражаются, в профиле цвет не нужен. все норм :)
0
bondar bondar 12 лет назад #
на стене работает, в блогах работает, а вот в комментах при нажатии на кнопку ничего не происходит (((((
0
Vyatich Vyatich 12 лет назад #
Это под 1.8 реализовано? В 1.9 даже иконка не появляется.
0
Vyatich Vyatich 12 лет назад #
Сори. Версии перепутал, в 1.8 не работает, наверно под более старой версией реализовано
0
Санечек Санечек 11 лет назад #
кто поделится красивой кнопочкой?
0
Azura Azura 11 лет назад #
Присоединяюсь.

Еще от автора

Тестирование версии 1.10.7.008 от 9 мая 2020 года
Тестирую на локалке под апачем и Php7.1. Встречающиеся варнинги и ошибки пытаюсь исправить.
Красный шрифт в комментарии
Возникла необходимость выделения цветом текста в комментарии. Поиск по трикам ничего не дал.
Облегчаем регистрацию на сайте
Тестируя вновь созданный сайт на движке 1.7 я по привычке делаю тестовые аккаунты, выбирая простые пароли.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.