|
|
Описание: как разместить свои смайлы |
Поиск в теме | Версия для печати |
Victor |
Отправлено: 15 июня 2009 — 19:25
|
Full Member
Покинул форум
Сообщений всего: 237
Дата рег-ции: Март 2009
Репутация: 14
|
Недавно смотря темную тему NightExBB, заметил следующие стандартные смайлы не вписываются в нее.. да и зачастую хочется чтоб смайлы отражали общую задумку темы.. благо их разновидностей тьма...
но есть пару НО
первое все изменения необходимо внести в основные исполняемые файлы, что решаемо и в общем при развитии системы шаблонов перспективно
второе придется скорее всего пожертвовать обилием смайлов, ограничившись стандартным набором смайлов (например таким как в аське, qip) и возможностью редактировать их в дальнейшем
вопрос конечно спорный, переносить ли библиотеки смайлов в папку с шаблонов тем самым связав их в единый комплекс...
как мне кажется в аське которй беспорно пользуются очень много пользователей есть необходимый и достаточный набор смайлов, при желании оригинального смайла можно использовать теги IMG.
Итак для начала я нашел в файле include/fm.class.php
CODE: /*
setsmiles замена кодов смайлов на изображения
*/
function setsmiles($string) {
if ($this->_Smiles === FALSE) {
function SmileMap($arr) {
return '<img src="./im/emoticons/'.$arr['img'].'" border="0" alt="'.$arr['emt'].'" title="'.$arr['emt'].'">';
}
$allsmiles = $this->_Read(FM_SMILES);
$this->_Smiles = array_map("SmileMap",$allsmiles['smiles']);
unset($allsmiles);
}
return strtr($string,$this->_Smiles);
}
именно здесь как я понял и определяется главный момент замены смайлов + в других местах замена отдельных ссылок
CODE:<img src=\"./im/emoticons/off.gif\" border=\"0\">
Заменить на
CODE:<img src="./templates/'.DEF_SKIN.'/im/emoticons/'.$arr['img'].'" border="0" alt="'.$arr['emt'].'" title="'.$arr['emt'].'">
соответственно
<img src=\"./templates/'.DEF_SKIN.'/im/emoticons/off.gif\" border=\"0\">
(Добавление)
следующим шагом редактируем файл самого шаблона smile_map.tpl
заменяя адрес смайла:
CODE:<img src="im/emoticons/biggrin24.gif" alt="smilie" onClick="bbcode(0,'::biggrin24.gif::')" />
<img src="./templates/InvisionExBB/im/emoticons/biggrin24.gif" alt="smilie" onClick="bbcode(0,'::biggrin24.gif::')" />
где InvisionExBB имя папки с шаблоном, также можно там же убрать ссылку на другие смайлы не входящие в стандартный набор, о котором шла речь..
CODE:<b><a href=javascript:void(0); onClick=window.open("tools.php?action=smiles","","width=320,height=400,scrollbars=yes")>{$fm->LANG['SmilesOn']}</a></b>
Дабы не потерять смайлы в сообщениях (хотя они просто заменятся тестом) можно создать такое же количество, хотя на мой взгляд это и не совсем удобно.
На самом деле обилие смайлов и их большой выбор не так востребованы, как это хотелось... порой просто лень искать их.. пользуешься теми что отражаются сразу...(Отредактировано автором: 16 июня 2009 — 18:46) |
|
|
electron |
Отправлено: 30 апреля 2010 — 04:53
|
ExBB Team
Покинул форум
Сообщений всего: 3917
Дата рег-ции: Февр. 2009
Репутация: 341
|
добавление самйлов :
идем на фтп и кидаем нужные смайлы в папку im/emoticons, далее идем в браузере на форум в "админка->смайлики". в строке "Выберите действие" выберите то что вам надо. т.е. если для новозакаченных смайлов хотите создать свою папку - то выбирайте "создать новую категорию", если просто хотите добавить к уже имеющимся, то "добавить смайл в категорию". далее , допустим, вы хотите добавить смайлики в категорию "жаркая дискуссия". в списке вверху выбираете эту категорию, ниже выбираете "добавить смайлы из временной папки" , ок, откроется список новодобавленных смайлов, выбираете нужный вам смайл что добавить надо и .... собственно как-то вот так и добавляются новые смайлы. делал давно, но кажется как-то так... |
|
|
shyuser |
Отправлено: 23 января 2013 — 20:14
|
Member
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июль 2009
Откуда: Лукоянов, Нижегородская область, Россия
Репутация: 16
|
notani пишет:shyuser пишет:в файле smiles.php данные хранятся в serialized-виде и "ручками" отредактировать проблемно.
Да, я уже понял как это сделать, ручками. Но все равно спасибо. На базе финальной сборки сделал возможность в Админцентре перемещать категории смайлов как при создании категории, так и при её изменении, редактировании.
Для этого нужно заменить оригинальные файлы прикрепленными файлами.
Изменения коснулись файлов:
admin\smiles_editcat.tpl
language\russian\lang_admin_setsmiles.php
setsmiles.php
Это первый вариант. Может кому понадобится.
Возможно можно сделать и проще. Прошу потестировать.
Если нужно, добавлю описание изменений в файлах. |
|
|
shyuser |
Отправлено: 26 января 2013 — 18:09
|
Member
Покинул форум
Сообщений всего: 111
Дата рег-ции: Июль 2009
Откуда: Лукоянов, Нижегородская область, Россия
Репутация: 16
|
shyuser пишет:Если нужно, добавлю описание изменений в файлах.
Следующие изменения (Отобразить)
1. Открываем файл admin\smiles_editcat.tpl и находим строки
CODE: <td class="row2"><input name="newcatdesc" type="text" value="{$descfieldvalue}" maxlength="255" size="40"></td>
</tr>
ниже добавляем строки
CODE: <tr class="genmed">
<td class="row2">{$fm->LANG['MoveBeforeCat']}</td>
<td class="row2">
<SELECT NAME="movebeforecat" title="Если нужно изменить расположение, выберите категорию">
{$smoption}
</SELECT>
</td>
</tr>
2. Открываем файл language\russian\lang_admin_setsmiles.php и находим строку
CODE:$this->LANG['SaveChange'] = 'Сохранить изменения';
ниже добавляем строки
CODE:$this->LANG['MoveBeforeCat'] = 'Поместить перед категорией:';
$this->LANG['CatMoveOk'] = 'Категория успешно перемещена!';
3. Открываем файл setsmiles.php и находим строки
CODE: if ($fm->input['newcatdesc'] == '') {
$fm->_Fclose($fp_sm);
$fm->_Message($fm->LANG['AdminSmiles'],$fm->LANG['CatDescNotSet'],'',1);
}
ниже добавляем строки
CODE: //begin - выбрана категория, помещаем новую категорию перед ней
if ($fm->_Intval('movebeforecat') != 0) {
$sm_newlist = array();//это новый массив - отсортированный
$sm_cats = $sm_list['cats'];//только категории
$sm_smiles = $sm_list['smiles'];//только смайлы
$n = 1;//новая нумерация категорий
foreach ($sm_cats as $catid => $catname) {//прогуляемся по всем категориям
if ($catid == $fm->input['movebeforecat']) {//если та перед которой надо поместить
$newcatid = $n;
$sm_newlist['cats'][$n] = $fm->input['newcatdesc'];
$n++;
};
$sm_newlist['cats'][$n] = $catname;
foreach ($sm_smiles as $code => $smilearray) {
if ($catid === $smilearray['cat']) {
$smilearray['cat'] = $n;
$sm_newlist['smiles'][$code] = $smilearray;
unset($smilearray);
};
};
$n++;
};
$fm->LANG['NewCatAddedOk'] .= '<br/>'.$fm->LANG['CatMoveOk'];//добавляем и отчет о проделаной работе
unset($sm_list);//удаляем старый массив смайлов и их категорий
$sm_list = $sm_newlist;//теперь отсортированный
//end - выбрана категория, помещаем новую категорию перед ней
} else {
//begin - делаем по старому - помещаем категорию в конец
В этом же файле находим ниже строку
CODE:$sm_list['cats'][$newcatid] = $fm->input['newcatdesc'];
и ниже добавляем
CODE: };
//end - делаем по старому - помещаем категорию в конец
В этом же файле чуть ниже находим строки
CODE: $fm->_Message($fm->LANG['AdminSmiles'],$fm->LANG['NewCatAddedOk'],'setsmiles.php?cat='.$newcatid,1);
} else {
$fm->_Fclose($fp_sm);
и добавляем ниже строки
CODE: //begin - список категорий для перемещения текущей
$smoption = '<OPTION VALUE="0" selected> -- Выберите категорию -- </OPTION>';
foreach ($sm_list['cats'] as $catid => $catname) {
//$selected = ($curcatid === $catid) ? ' selected':'';
if ($curcatid != $catid) {
$smoption .= '<OPTION VALUE="'.$catid.'">'.$catname.'</OPTION>';
}
}
//end
В этом же файле находим ниже строки
CODE: $sm_list['cats'][$curcatid] = $fm->input['newcatdesc'];
и добавляем ниже
CODE: //begin - выбрана категория, помещаем категорию перед ней
if ($fm->_Intval('movebeforecat') != 0) {
//begin - перемещаем категорию
$sm_newlist = array();//отсортированный массив
$sm_cats = $sm_list['cats'];
$sm_smiles = $sm_list['smiles'];
$sm_curcat = $sm_cats[$curcatid];
unset($sm_cats[$curcatid]);
$n = 1;
foreach ($sm_cats as $catid => $catname) {
if ($catid == $fm->input['movebeforecat']) {
$new_curcatid = $n;
$sm_newlist['cats'][$n] = $sm_curcat;
foreach ($sm_smiles as $code => $smilearray) {
if ($curcatid === $smilearray['cat']) {
$smilearray['cat'] = $n;
$sm_newlist['smiles'][$code] = $smilearray;
unset($smilearray);
};
};
$n++;
};
$sm_newlist['cats'][$n] = $catname;
foreach ($sm_smiles as $code => $smilearray) {
if ($catid === $smilearray['cat']) {
$smilearray['cat'] = $n;
$sm_newlist['smiles'][$code] = $smilearray;
unset($smilearray);
};
};
$n++;
};
$fm->LANG['CatRenamedOk'] .= '<br/>'.$fm->LANG['CatMoveOk'];
unset($sm_list);
$sm_list = $sm_newlist;
$curcatid = $new_curcatid;
};
//end - выбрана категория, помещаем категорию перед ней
В этом же файле чуть ниже находим строки
CODE: $curcatdesc = $sm_list['cats'][$curcatid];
$hidden = '<input type="hidden" name="action" value="editcat"/>
<input type="hidden" name="cat" value="'.$curcatid.'"/>';
$descfieldvalue = $curcatdesc;
и над ними добавляем строки
CODE: //begin - список категорий для перемещения текущей
$smoption = '<OPTION VALUE="0" selected> -- Выберите категорию -- </OPTION>';
foreach ($sm_list['cats'] as $catid => $catname) {
//$selected = ($curcatid === $catid) ? ' selected':'';
if ($curcatid != $catid) {
$smoption .= '<OPTION VALUE="'.$catid.'">'.$catname.'</OPTION>';
}
}
//end
На этом изменения закончены. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0) |
« Обсуждение » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|