
Функционал:
Установка флеш эффекта на аватар;
Ограничение по карме для установки эффекта;
Взимание оплаты в рейтингах за установку эффекта;
Удаление эффекта со своего аватара;



1. Выполнить запрос из файла install.sql в БД исправив предварительно префикс cms на тот который у вас;
2. Залить содержимое папки /components/users/effects/ из архива в аналогичную папку на сервере;
3. В файле /components/users/frontend.php после строчек:
$plugins = $model->getPluginsOutput($usr);
$effs = $model->getEffects();
$smarty->assign('plugins', $plugins);
$smarty->assign('effs', $effs);
public function getEffects(){ $result = $this->inDB->query("SELECT * FROM cms_effects"); while ($item = $this->inDB->fetch_assoc($result)){ $items[] = $item; } return $items; }
if ($eff_ava = getUserEffect($user_id, $usr_imageurl, $small)){ return $eff_ava; }
function getUserEffect($user_id, $usr_imageurl, $small){ $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); $cfg = $inCore->loadComponentConfig('users'); if ($small=='small'){ $usr_imageurl = '/images/users/avatars/small/'.$usr_imageurl; $w = $h = $cfg['smallw'].'px'; }else{ $usr_imageurl = '/images/users/avatars/'.$usr_imageurl; $w = $cfg['medw'].'px'; $h = "100%"; } if ($eff_arr = $inDB->get_fields("cms_effects_chels", "to_user='{$user_id}'", "*")){ return '<div id=\'ava\' style=\'background: url('.$usr_imageurl.') no-repeat center center;\' align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://pdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lecteur" width="'.$w.'" height="'.$h.'"><param name="wmode" value="transparent"><param name="movie" value="/components/users/effects/'.$eff_arr['url'].'"><param name="allowScriptAccess" value="never"><embed allowscriptaccess="never" type="application/x-shockwave-flash" src="/components/users/effects/'.$eff_arr['url'].'" wmode="transparent" width="'.$w.'" height="'.$h.'"></object></div>'; } }
после строчки:
if ($eff_ava = getUserEffect($user_id, $usr['imageurl'], $small)){ return $eff_ava; }
7. В файле /templates/ВАШ_ШАБЛОН/components/com_users_profile.tpl после строчек:
<div class="usr_avatar"> {$usr.avatar} </div>
{if !$myprofile} {literal} <script> function show_eff_form(){ document.getElementById('effects').style.display = document.getElementById('effects').style.display == "block" ? "none" : "block"; } function establish_effect(effect_id){ $.ajax({ type: "POST", url: "/components/users/includes/addusreffects.php", data: "from_user={/literal}{$is_auth}{literal}&to_user={/literal}{$usr.id}{literal}&effect_id="+effect_id, success: function(msg){ if (msg == 'OK'){ location.reload(); }else{ alert(msg); } } }); } </script> {/literal} <div class='func'> <a href="javascript:void(0)" onclick="show_eff_form();" >Установить/изменить эффект</a> </div> <div name="effects" id="effects" style="display: none; background-color:#cccccc;"> {foreach item=eff from=$effs} <b>{$eff.title}</b> <div class="avatar"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://pdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lecteur" width="100px" height="100px"> <param name="wmode" value="transparent"> <param name="movie" value="/components/users/effects/{$eff.url}"> <param name="allowScriptAccess" value="never"> <embed allowscriptaccess="never" type="application/x-shockwave-flash" src="/components/users/effects/{$eff.url}" wmode="transparent" width="100px" height="100px"> </object> </div> <a href="javascript:void(0)" onclick="establish_effect({$eff.id});">Выбрать Эффект</a> {/foreach} </div> {else} {literal} <script> function delete_effect(){ $.ajax({ type: "POST", url: "/components/users/includes/addusreffects.php", data: "action=del_effect&user_id={/literal}{$usr.id}{literal}", success: function(msg){ if (msg == 'OK'){ location.reload(); }else{ alert(msg); } } }); } </script> {/literal} <a href="javascript:void(0)" onclick="delete_effect();">Удалить эффект</a> {/if}
Размер минимальной кармы и количество снимаемого рейтинга выставляются в файле /components/users/includes/addusreffects.php
$min_karma = 0; //Здесь укажите минимальное значение кармы для возможности ставить эффекты на аватары $rate_value = 0; //Здесь укажите стоимость установки эффекта в рейтингах
7. В файле /templates/ВАШ_ШАБЛОН/components/com_users_profile.tpl после строчек:
Вставить код который написал DagStudent но в первом строке убрать ! будет {if $myprofile}
в файле /components/users/includes/usercore.php как сделать так чтоб код определил высоту и ширину аватара а потом передал его в com_users_profile.tpl в переменной {$width} и {$height}
если сделать так
а как сделать так чтоб кроме аватара на странице профила, больше нигде не показал эффект а то на комментариях, на записах в стене показывает эффект
Browser Name: Chrome Проблемы шаблоны
и тоже опера
и блок "Ссылка на эту страницу:" с тектовой ссылкой "установить эффект" ниже аватара на сантимов 10!
function getUserEffect($user_id, $usr_imageurl, $small){
$inDB = cmsDatabase::getInstance();
$inCore = cmsCore::getInstance();
$cfg = $inCore->loadComponentConfig('users');
if ($small=='small'){
$usr_imageurl = '/images/users/avatars/small/'.$usr_imageurl;
$w = $h = $cfg['smallw'].'px';
}else{
$usr_imageurl = '/images/users/avatars/'.$usr_imageurl;
$w = $cfg['medw'].'px';
$h = "100%";
}
if ($eff_arr = $inDB->get_fields("cms_effects_chels", "to_user='{$user_id}'", "*")){
return '<div id="ava" style="background: url('.$usr_imageurl.') no-repeat center center;" align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://pdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lecteur" width="'.$w.'" height="'.$h.'"><param name="wmode" value="transparent"><param name="movie" value="/components/users/effects/'.$eff_arr['url'].'"><param name="allowScriptAccess" value="never"><embed allowscriptaccess="never" type="application/x-shockwave-flash" src="/components/users/effects/'.$eff_arr['url'].'" wmode="transparent" width="'.$w.'" height="'.$h.'"></object></div>';
}
}
вместо $h = "100%"; прописать $h = $cfg['medh'].'px';
В некоторых случаях помогала, постараюсь в ближайщее время обновить хак, и сделать его как можно меньше хаком чтобы легче было обновляться на новые версии Instant CMS, и постараюсь также приделать вместе с флеш эффектами ставить анимации или просто картинки как в одноклассниках. Если кто знает как исправить неправильное отображение в хроме отписываемся я в css не особо силен не знаю сколько на это времени у меня уйдет.