(https://www.webmastersmz.com/webmzpic/uploads/de73849c89c4f3b6.png)
Uma área de perfil totalmente nova, incluindo o modo humor. Aproveite!
ENCONTRE EM Display.template.php:
// Show information about the poster of this message.
echo '
<div class="poster">';
// Are there any custom fields above the member name?
if (!empty($message['custom_fields']['above_member']))
{
echo '
<div class="custom_fields_above_member">
<ul class="nolist">';
foreach ($message['custom_fields']['above_member'] as $custom)
echo '
<li class="custom ', $custom['col_name'], '">', $custom['value'], '</li>';
echo '
</ul>
</div>';
}
echo '
<h4>';
// Show online and offline buttons?
if (!empty($modSettings['onlineEnable']) && !$message['member']['is_guest'])
echo '
', $context['can_send_pm'] ? '<a href="' . $message['member']['online']['href'] . '" title="' . $message['member']['online']['label'] . '">' : '', '<span class="' . ($message['member']['online']['is_online'] == 1 ? 'on' : 'off') . '" title="' . $message['member']['online']['text'] . '"></span>', $context['can_send_pm'] ? '</a>' : '';
// Custom fields BEFORE the username?
if (!empty($message['custom_fields']['before_member']))
foreach ($message['custom_fields']['before_member'] as $custom)
echo '
<span class="custom ', $custom['col_name'], '">', $custom['value'], '</span>';
// Show a link to the member's profile.
echo '
', $message['member']['link'];
// Custom fields AFTER the username?
if (!empty($message['custom_fields']['after_member']))
foreach ($message['custom_fields']['after_member'] as $custom)
echo '
<span class="custom ', $custom['col_name'], '">', $custom['value'], '</span>';
// Begin display of user info
echo '
</h4>
<ul class="user_info">';
// Show the user's avatar.
if (!empty($modSettings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image']))
echo '
<li class="avatar">
<a href="', $message['member']['href'], '">', $message['member']['avatar']['image'], '</a>
</li>';
// Are there any custom fields below the avatar?
if (!empty($message['custom_fields']['below_avatar']))
foreach ($message['custom_fields']['below_avatar'] as $custom)
echo '
<li class="custom ', $custom['col_name'], '">', $custom['value'], '</li>';
// Show the post group icons, but not for guests.
if (!$message['member']['is_guest'])
echo '
<li class="icons">', $message['member']['group_icons'], '</li>';
// Show the member's primary group (like 'Administrator') if they have one.
if (!empty($message['member']['group']))
echo '
<li class="membergroup">', $message['member']['group'], '</li>';
// Show the member's custom title, if they have one.
if (!empty($message['member']['title']))
echo '
<li class="title">', $message['member']['title'], '</li>';
// Don't show these things for guests.
if (!$message['member']['is_guest'])
{
// Show the post group if and only if they have no other group or the option is on, and they are in a post group.
if ((empty($modSettings['hide_post_group']) || empty($message['member']['group'])) && !empty($message['member']['post_group']))
echo '
<li class="postgroup">', $message['member']['post_group'], '</li>';
// Show how many posts they have made.
if (!isset($context['disabled_fields']['posts']))
echo '
<li class="postcount">', $txt['member_postcount'], ': ', $message['member']['posts'], '</li>';
// Show their personal text?
if (!empty($modSettings['show_blurb']) && !empty($message['member']['blurb']))
echo '
<li class="blurb">', $message['member']['blurb'], '</li>';
// Any custom fields to show as icons?
if (!empty($message['custom_fields']['icons']))
{
echo '
<li class="im_icons">
<ol>';
foreach ($message['custom_fields']['icons'] as $custom)
echo '
<li class="custom ', $custom['col_name'], '">', $custom['value'], '</li>';
echo '
</ol>
</li>';
}
// Show the website and email address buttons.
if ($message['member']['show_profile_buttons'])
{
echo '
<li class="profile">
<ol class="profile_icons">';
// Don't show an icon if they haven't specified a website.
if (!empty($message['member']['website']['url']) && !isset($context['disabled_fields']['website']))
echo '
<li><a href="', $message['member']['website']['url'], '" title="' . $message['member']['website']['title'] . '" target="_blank" rel="noopener">', ($settings['use_image_buttons'] ? '<span class="main_icons www centericon" title="' . $message['member']['website']['title'] . '"></span>' : $txt['www']), '</a></li>';
// Since we know this person isn't a guest, you *can* message them.
if ($context['can_send_pm'])
echo '
<li><a href="', $scripturl, '?action=pm;sa=send;u=', $message['member']['id'], '" title="', $message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline'], '">', $settings['use_image_buttons'] ? '<span class="main_icons im_' . ($message['member']['online']['is_online'] ? 'on' : 'off') . ' centericon" title="' . ($message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline']) . '"></span> ' : ($message['member']['online']['is_online'] ? $txt['pm_online'] : $txt['pm_offline']), '</a></li>';
// Show the email if necessary
if (!empty($message['member']['email']) && $message['member']['show_email'])
echo '
<li class="email"><a href="mailto:' . $message['member']['email'] . '" rel="nofollow">', ($settings['use_image_buttons'] ? '<span class="main_icons mail centericon" title="' . $txt['email'] . '"></span>' : $txt['email']), '</a></li>';
echo '
</ol>
</li><!-- .profile -->';
}
// Any custom fields for standard placement?
if (!empty($message['custom_fields']['standard']))
foreach ($message['custom_fields']['standard'] as $custom)
echo '
<li class="custom ', $custom['col_name'], '">', $custom['title'], ': ', $custom['value'], '</li>';
}
// Otherwise, show the guest's email.
elseif (!empty($message['member']['email']) && $message['member']['show_email'])
echo '
<li class="email">
<a href="mailto:' . $message['member']['email'] . '" rel="nofollow">', ($settings['use_image_buttons'] ? '<span class="main_icons mail centericon" title="' . $txt['email'] . '"></span>' : $txt['email']), '</a>
</li>';
// Show the IP to this user for this post - because you can moderate?
if (!empty($context['can_moderate_forum']) && !empty($message['member']['ip']))
echo '
<li class="poster_ip">
<a href="', $scripturl, '?action=', !empty($message['member']['is_guest']) ? 'trackip' : 'profile;area=tracking;sa=ip;u=' . $message['member']['id'], ';searchip=', $message['member']['ip'], '">', $message['member']['ip'], '</a> <a href="', $scripturl, '?action=helpadmin;help=see_admin_ip" onclick="return reqOverlayDiv(this.href);" class="help">(?)</a>
</li>';
// Or, should we show it because this is you?
elseif ($message['can_see_ip'])
echo '
<li class="poster_ip">
<a href="', $scripturl, '?action=helpadmin;help=see_member_ip" onclick="return reqOverlayDiv(this.href);" class="help">', $message['member']['ip'], '</a>
</li>';
// Okay, are you at least logged in? Then we can show something about why IPs are logged...
elseif (!$context['user']['is_guest'])
echo '
<li class="poster_ip">
<a href="', $scripturl, '?action=helpadmin;help=see_member_ip" onclick="return reqOverlayDiv(this.href);" class="help">', $txt['logged'], '</a>
</li>';
// Otherwise, you see NOTHING!
else
echo '
<li class="poster_ip">', $txt['logged'], '</li>';
// Are we showing the warning status?
// Don't show these things for guests.
if (!$message['member']['is_guest'] && $message['member']['can_see_warning'])
echo '
<li class="warning">
', $context['can_issue_warning'] ? '<a href="' . $scripturl . '?action=profile;area=issuewarning;u=' . $message['member']['id'] . '">' : '', '<span class="main_icons warning_', $message['member']['warning_status'], '"></span> ', $context['can_issue_warning'] ? '</a>' : '', '<span class="warn_', $message['member']['warning_status'], '">', $txt['warn_' . $message['member']['warning_status']], '</span>
</li>';
// Are there any custom fields to show at the bottom of the poster info?
if (!empty($message['custom_fields']['bottom_poster']))
foreach ($message['custom_fields']['bottom_poster'] as $custom)
echo '
<li class="custom ', $custom['col_name'], '">', $custom['value'], '</li>';
// Poster info ends.
echo '
</ul>
</div><!-- .poster -->
<div class="postarea">
<div class="keyinfo">';ALTERE
// Show information about the poster of this message.
echo '
<div class="poster">
<ul class="user_info nolist">';
// 1. AVATAR (Topo, design redondo com fallback mais inteligente)
echo '
<li class="avatar" style="margin-bottom: 5px;">';
// Verificação para forçar a exibição do avatar se ele existir
if (!empty($message['member']['avatar']['href']))
echo '
<a href="', $message['member']['href'], '"><img src="', $message['member']['avatar']['href'], '" alt="Avatar" style="max-width: 100px; border-radius: 50%;" /></a>';
elseif (!empty($message['member']['avatar']['image']))
echo '
<a href="', $message['member']['href'], '">', $message['member']['avatar']['image'], '</a>';
else
echo '
<a href="', $message['member']['href'], '"><img src="', $settings['default_images_url'], '/default_avatar_webmastersmz.png" alt="Avatar Padrão" style="max-width: 100px; border-radius: 50%;" onerror="this.style.display=\'none\';" /></a>';
echo '
</li>';
// 2. NOME E STATUS ONLINE
echo '
<li class="name" style="font-size: 1.2em; font-weight: bold;">
', $message['member']['link'];
if (!empty($modSettings['onlineEnable']) && !$message['member']['is_guest'])
echo '
', $context['can_send_pm'] ? '<a href="' . $message['member']['online']['href'] . '" title="' . $message['member']['online']['label'] . '">' : '', '<span class="' . ($message['member']['online']['is_online'] == 1 ? 'on' : 'off') . '" title="' . $message['member']['online']['text'] . '" style="display:inline-block; margin-left: 5px;"></span>', $context['can_send_pm'] ? '</a>' : '';
echo '
</li>';
// 3. ESTADO DE ESPÍRITO (Sem Loop, sempre visível)
$mood_val = 'Timido';
if (!empty($message['member']['options']['perfil_smfpt']) && trim($message['member']['options']['perfil_smfpt']) !== '')
$mood_val = trim($message['member']['options']['perfil_smfpt']);
elseif (!empty($message['member']['options']['teknoromi']) && trim($message['member']['options']['teknoromi']) !== '')
$mood_val = trim($message['member']['options']['teknoromi']);
$traducoes = array(
'Agressivo' => 'Agressivo', 'Tranquilo' => 'Tranquilo', 'Atrevido' => 'Atrevido',
'Exausto' => 'Exausto', 'Ranzinza' => 'Ranzinza', 'Trabalhador' => 'Trabalhador',
'Excentrico' => 'Excêntrico', 'Entusiasta' => 'Entusiasta', 'Louco' => 'Louco',
'Genio' => 'Génio', 'Distraido' => 'Distraído', 'Equilibrado' => 'Equilibrado',
'Preocupado' => 'Preocupado', 'Ansioso' => 'Ansioso', 'Tagarela' => 'Tagarela',
'Doente' => 'Doente', 'Radiante' => 'Radiante', 'Animado' => 'Animado',
'Emocionado' => 'Emocionado', 'Malhumorado' => 'Mal-humorado', 'Maluco' => 'Maluco',
'Indeciso' => 'Indeciso', 'Desanimado' => 'Desanimado', 'Desconectado' => 'Desconectado',
'Pirata' => 'Pirata', 'Inocente' => 'Inocente', 'Divertido' => 'Divertido',
'Anjo' => 'Anjo', 'Curioso' => 'Curioso', 'Ocupado' => 'Ocupado',
'Feliz' => 'Feliz', 'Alegre' => 'Alegre', 'Maduro' => 'Maduro',
'Relaxado' => 'Relaxado', 'Falecido' => 'Falecido', 'Brincalhao' => 'Brincalhão',
'Artista' => 'Artista', 'Sofrido' => 'Sofrido', 'Confuso' => 'Confuso',
'Diabolico' => 'Diabólico', 'Mimado' => 'Mimado', 'Frio' => 'Frio',
'Palhaco' => 'Palhaço', 'Atleta' => 'Atleta', 'Desconfiado' => 'Desconfiado',
'Estranho' => 'Estranho', 'Esquisito' => 'Esquisito', 'Timido' => 'Tímido',
'Sonolento' => 'Sonolento', 'Semsono' => 'Sem sono', 'Irritante' => 'Irritante',
'Sozinho' => 'Sozinho', 'Banido' => 'Banido', 'Cansado' => 'Cansado',
'Desportista' => 'Desportista', 'Rabugento' => 'Rabugento'
);
$mood_pt = isset($traducoes[$mood_val]) ? $traducoes[$mood_val] : $mood_val;
echo '
<li class="mood" style="padding: 10px 0; text-align:center;">
<b style="font-size:11px;">Estado de espírito:</b><br />
<img src="', $settings['default_images_url'], '/perfil_smfpt/', $mood_val, '.png" alt="', $mood_pt, '" title="', $mood_pt, '" onerror="this.onerror=null; this.src=\'', $settings['default_images_url'], '/perfil_smfpt/Timido.png\';" />
</li>';
// 4. AGRADECIMENTOS (Thank-O-Matic)
if (!empty($modSettings['thankYouPostDisplayPage']) && (empty($modSettings['thankYouPostDisplayDisableBecame']) || empty($modSettings['thankYouPostDisplayDisableMade'])))
{
echo '
<li class="thank_o_matic" style="padding-bottom: 5px;">
<b>Agradecimentos</b><br/>';
if(empty($modSettings['thankYouPostDisplayDisableMade']))
echo '
<span style="font-size: 11px;">- Dados: <b>', $message['member']['thank_you_post']['made'], '</b></span><br/>';
if(empty($modSettings['thankYouPostDisplayDisableBecame']))
echo '
<span style="font-size: 11px;">- Recebidos: <b>', $message['member']['thank_you_post']['became'], '</b></span>';
echo '
</li>';
}
// 5. TÍTULO E GRUPO
if (!empty($message['member']['title']))
echo '
<li class="title">', $message['member']['title'], '</li>';
if (!empty($message['member']['group']))
echo '
<li class="membergroup">', $message['member']['group'], '</li>';
if (!$message['member']['is_guest'] && !empty($message['member']['group_icons']))
echo '
<li class="icons">', $message['member']['group_icons'], '</li>';
// 6. ESTATÍSTICAS E REGISTO
if (!$message['member']['is_guest'])
{
if (!isset($context['disabled_fields']['posts']))
echo '
<li class="postcount"><b>Mensagens:</b> ', $message['member']['posts'], '</li>';
echo '
<li class="kayit">
<b>Membro desde:</b><br/>
<span style="font-size: 10px;">', $message['member']['registered'], '</span>
</li>';
// 7. BARRAS MODERNAS (Atividade e Experiência)
$post = (int) $message['member']['posts'];
$postWidth = ($post > 100) ? 100 : ($post > 0 ? $post : 3);
$deneyimi = ($post / 10);
if ($deneyimi > 100) $deneyimi = 100;
if ($context['user']['is_logged'])
{
echo '
<li class="stats_bars">
<div class="aktif_bar_container">
<div class="aktif_bar atividade" style="width: ', $postWidth, '%;"></div>
<span class="aktif_text">Atividade</span>
</div>
<div class="aktif_bar_container">
<div class="aktif_bar experiencia" style="width: ', $deneyimi, '%;"></div>
<span class="aktif_text">Experiência</span>
</div>
</li>';
}
// 8. BOTÕES DE PERFIL (Web / PM / Email)
if ($message['member']['show_profile_buttons'])
{
echo '
<li class="profile">
<ol class="profile_icons nolist" style="padding: 0; margin: 0;">';
if (!empty($message['member']['website']['url']) && !isset($context['disabled_fields']['website']))
echo '
<li style="display:inline;"><a href="', $message['member']['website']['url'], '" target="_blank" rel="noopener">', ($settings['use_image_buttons'] ? '<span class="main_icons www centericon" title="' . $message['member']['website']['title'] . '"></span>' : $txt['www']), '</a></li>';
if ($context['can_send_pm'])
echo '
<li style="display:inline;"><a href="', $scripturl, '?action=pm;sa=send;u=', $message['member']['id'], '">', $settings['use_image_buttons'] ? '<span class="main_icons im_on centericon" title="' . $txt['pm_online'] . '"></span>' : 'PM', '</a></li>';
echo '
</ol>
</li>';
}
}
// 9. IP E MODERAÇÃO
if (!empty($context['can_moderate_forum']) && !empty($message['member']['ip']))
echo '
<li class="poster_ip">
<a href="', $scripturl, '?action=', !empty($message['member']['is_guest']) ? 'trackip' : 'profile;area=tracking;sa=ip;u=' . $message['member']['id'], ';searchip=', $message['member']['ip'], '" class="show_on_hover"><span>', $txt['show_ip'], '</span></a>
</li>';Profile.template.php
// Are there any custom profile fields - if so print them!// Início do bloco de Estado de Espírito
echo '
<dl>
<dt><b>Estado de espírito: </b></dt>
<dd>
<select name="default_options[perfil_smfpt]">';
// Lista de humores (Valor no Banco => Texto no ecrã)
$humores_list = array(
'Agressivo' => 'Agressivo', 'Tranquilo' => 'Tranquilo', 'Atrevido' => 'Atrevido',
'Exausto' => 'Exausto', 'Ranzinza' => 'Ranzinza', 'Trabalhador' => 'Trabalhador',
'Excentrico' => 'Excêntrico', 'Entusiasta' => 'Entusiasta', 'Louco' => 'Louco',
'Genio' => 'Génio', 'Distraido' => 'Distraído', 'Equilibrado' => 'Equilibrado',
'Preocupado' => 'Preocupado', 'Ansioso' => 'Ansioso', 'Tagarela' => 'Tagarela',
'Doente' => 'Doente', 'Radiante' => 'Radiante', 'Animado' => 'Animado',
'Emocionado' => 'Emocionado', 'Malhumorado' => 'Mal-humorado', 'Maluco' => 'Maluco',
'Indeciso' => 'Indeciso', 'Desanimado' => 'Desanimado', 'Desconectado' => 'Desconectado',
'Pirata' => 'Pirata', 'Inocente' => 'Inocente', 'Divertido' => 'Divertido',
'Anjo' => 'Anjo', 'Curioso' => 'Curioso', 'Ocupado' => 'Ocupado',
'Feliz' => 'Feliz', 'Alegre' => 'Alegre', 'Maduro' => 'Maduro',
'Relaxado' => 'Relaxado', 'Falecido' => 'Falecido', 'Brincalhao' => 'Brincalhão',
'Artista' => 'Artista', 'Sofrido' => 'Sofrido', 'Confuso' => 'Confuso',
'Diabolico' => 'Diabólico', 'Mimado' => 'Mimado', 'Frio' => 'Frio',
'Palhaco' => 'Palhaço', 'Atleta' => 'Atleta', 'Desconfiado' => 'Desconfiado',
'Estranho' => 'Estranho', 'Esquisito' => 'Esquisito', 'Timido' => 'Tímido',
'Sonolento' => 'Sonolento', 'Semsono' => 'Sem sono', 'Irritante' => 'Irritante',
'Sozinho' => 'Sozinho', 'Banido' => 'Banido', 'Cansado' => 'Cansado',
'Desportista' => 'Desportista', 'Rabugento' => 'Rabugento'
);
foreach ($humores_list as $val => $label)
{
$is_selected = (!empty($context['member']['options']['perfil_smfpt']) && $context['member']['options']['perfil_smfpt'] == $val) ? ' selected="selected"' : '';
echo '
<option value="', $val, '"', $is_selected, '>', $label, '</option>';
}
echo '
</select>
</dd>
</dl>';index.css
/* Profil WebmastersMZ - Design Moderno */
.poster {
border: 1px solid #e0e0e0;
background: linear-gradient(to bottom, #ffffff 0%, #f8f9fa 100%);
border-top: 3px solid #0d6efd; /* Linha de destaque em azul tecnológico */
border-radius: 8px;
overflow: hidden;
text-align: center;
color: #333;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
padding-bottom: 10px;
font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
.poster ul.user_info {
padding: 0;
margin: 0;
list-style: none;
}
.poster ul.user_info > li {
border-bottom: 1px solid #f0f0f0;
padding: 8px 10px;
font-size: 12px;
}
.poster ul.user_info > li:last-child {
border-bottom: none;
}
.poster .avatar img {
max-width: 100px;
border-radius: 50%;
border: 2px solid #fd7e14; /* Borda do avatar em laranja vibrante */
padding: 2px;
background: #fff;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
margin-top: 10px;
object-fit: cover;
}
.poster .name {
font-size: 15px;
font-weight: 600;
}
.poster .name a {
color: #0d6efd;
}
/* Barras de Estatísticas Modernas */
.stats_bars {
padding: 10px !important;
}
.aktif_bar_container {
background: #e9ecef;
border-radius: 10px;
height: 16px;
margin-bottom: 6px;
position: relative;
overflow: hidden;
box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
width: 100%;
}
.aktif_bar {
height: 100%;
border-radius: 10px;
}
.aktif_bar.atividade { background: linear-gradient(90deg, #fd7e14, #ffb347); } /* Gradiente Laranja */
.aktif_bar.experiencia { background: linear-gradient(90deg, #0d6efd, #66b2ff); } /* Gradiente Azul */
.aktif_text {
position: absolute;
top: 0;
left: 0;
width: 100%;
text-align: center;
font-size: 10px;
line-height: 16px;
color: #fff;
font-weight: bold;
text-shadow: 0px 0px 2px rgba(0,0,0,0.5);
}Coloque a pasta perfil_smfpt anexada na pasta images do seu tema padrão.