Comments. Как добавить смайлик или сменить на свой набор.

Компонент: 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-классы для смайликов строятся по следующему правилу:

emoticon emoticon-{name_of_type} emoticon-{name_of_type}-{mnemocode}-

  • {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',
	),),),
);
13.10.2014
Все статьи