Comments. Как добавить смайлик или сменить на свой набор.
Как добавить один смайлик
Смайлики настолько плотно вошли в культуру общения пользователей в сети, что готового набора иногда не хватает. И надо добавить какой-то новый знак или поменять весь набор. В компоненте Comments есть такая возможность.
Добавить один смайлик в набор достаточно просто.
1. Создаем папку www/images/emoticons/.
2. Копируем в нее картинку, обновляем страницу. В конце блока смайликов на форме появился установленный.
Важным условием является то, что картинка должна иметь расширение .gif, иначе она не будет отображаться.
При нажатии на смайлик в редакторе формы будет вставляться текстовый интерпретатор, который имеет следующий вид :name.gif:, где name - произвольное имя картинки, обычно описывающее внешний вид или поведение смайлика.
Как сменить набор смайликов на другой
Если нужно сменить набор, то сделать это можно в файле конфигурационных настроек. Находим настройку smiles, в которой меняем на нужное значение параметр type. В настоящий момент доступны на выбор 2 стандартных набора со значениями:
- vk
- balls
// app/config/modules.php return array( 'Component.Comments.' => array( 'editor' = >array( 'bbcode' = true, 'smiles' = array( 'type' = 'balls', ),),), );
Как настраивать файл конфигураций и какие еще настройки доступны, можно посмотреть в статье с описанием компонента Comments.
Как добавить свой набор смайликов
Если требуется вообще сменить набор смайликов на пользовательский, то сделать это можно следующим образом:
1. В компоненте Comments есть класс Component_Comments_Fields_BBCode_Parser_Smile, который описывает свойства и методы для отображения и функционирования одного объекта смайлика и всего блока в целом. От этого класса будем наследовать наш.
Для этого создаем файл (местоположение не играет роли) и описываем в нем класс.
// app/lib/Simpleballs.php Core::load('Component.Comments.Fields.BBCode.Parser.Smile'); class App_Simpleballs extends Component_Comments_Fields_BBCode_Parser_Smile implements Core_ModuleInterface { protected $css_class_prefix = 'emoticon emoticon-simpleballs emoticon-simpleballs-'; public function css_file() { return 'smiles/emoticon-simpleballs.css'; } protected $all_smiles = array( 'smile' => array(':)', ':-)', '))', ':sm010:'), 'aggressive' => array(':angry:', ':sm021:'), 'bad' => array(':bad:', ':sm032:'), // ... }
где
- свойство $css_class_prefix - опишем строку имен css-классов, которая будет передаваться в html-элемент. Правило построения строки будет описано ниже.
- метод css_file() - возвращает адрес, по которому находится css-файл с описанием позиций изображения каждого смайлика в спрайте.
- свойство $all_smiles - массив, где ключ - произвольный буквенно-цифровой код, значение - возможные варианты отображения смайлика в тексте сообщения с использованием знаков пунктуации или буквенно-цифровой записи.
Css-классы для смайликов строятся по следующему правилу:
- {name_of_type} - имя нового типа смайликов. Может быть произвольным, но обычно совпадает с именем модуля, в котором описывается класс нового набора смайликов.
- {mnemocode} - произвольный буквенно-цифровой код (берется из массива all_smiles), для которого описывается значение в виде перечисления возможных вариантов графического или текстового варианта в тексте сообщения.
В исходном коде страницы в браузере код смайлика для нашего класса будет выглядеть следующим образом:
<div class="emoticon emoticon-simpleballs emoticon-simpleballs-smile"></div>
2. Описать стили для классов в css-файле.
3. В файле конфигурационных настроек установить новый тип набора смайликов. В параметр type записываем имя модуля, в котором описали новый набор смайликов.
// app/config/mofules.php return array( 'Component.Comments.' => array( 'editor' = >array( 'bbcode' = true, 'smiles' = array( 'type' = 'App.Simpleballs', ),),), );