Buenas a todos hoy les traigo un tutorial con el que obtendrán un perfil estilo facebook (con portada), una imagen dice más que mil palabras:
Lo primero es crear dos campos de perfil personalizados en tu ACP -> Configuración -> campos de perfil personalizados -> agregar campo de perfil
Primero tendrás que crear dos campos:
1.- Portada- crear como caja de texto y visible y editable por todos.
Expresión regular:
Código:
(http(s?):)|([/|.|\w|\s])*\.(?:jpg|gif|png)
2.- Estado - Crear como área de texto y visible y editable por todos.
Deberás obtener el FID de ellos, solo coloca el mouse sobre ellos en el acp y te saldrá la url en tu navegador donde al final dirá
edit&fid=X
El número que salga en la X es lo que necesitamos
Ahora vamos a nuestro estilo y creamos una hoja de estilo con el nombre que gustes (recuerda que debe de terminar en .css o dará error), le damos en escribir nuestro código y pega lo siguiente:
Código:
#perfil{
padding: 0;
margin: 0;
position: relative;
}
.fotoperfil{
max-height: 300px;
width: 100%;
}
.perfilstatus{
position: relative;
background: rgb(0 0 0 / 50%);
height: 75px;
width: 100%;
text-align: left;
display: table;
margin-top: -75px;
color: #fff;
font-size: 14px;
}
.profile_avatar{
width: 10%;
margin: auto;
border-radius: 50%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
padding-left: 20px;
padding-right: 20px;
position: relative;
vertical-align: middle;
display: table-cell;
}
.profile_avatar img{
border: 2px solid rgb(255 255 255);
box-shadow: 0 0 1px #ddd;
height: 60px;
width: 60px;
border-radius: 50%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
}
.profiletra{
padding: 10px;
font-size: 14px;
color: #fff;
display: table-cell;
width: 90%;
vertical-align: middle;
}
.socialprofile{
position: absolute;
background: rgb(0 0 0 / 50%);
right: 0;
padding: 5px 10px;
font-size: 14px;
color: #fff;
}
.socialprofile a{
color:#fff;
margin-right: 3px;
}
.socialprofile a:last-child{
margin: 0;
}
.socialprofile a:hover{
color: #aaa;
text-decoration: none;
}
.profileinfo{
background: #131313;
padding: 10px 15px;
color: #fff;
text-align: left;
vertical-align: middle;
}
.profileinfo span{
color: #aaa;
font-weight: 900;
}
.profileinfo ul {
list-style: none;
}
.profileinfo ul li{
border-right: 1px solid #000;
padding: 0px 10px;
display: inline-block;
text-align: center;
}
.profileinfo ul li a{
color: #fff;
}
profileinfo ul li a:hover{
color:#fff;
text-decoration: none;
}
.perfilrsp {
width: 49.5%;
}
@media only screen and (max-width: 866px) {
.profileinfo ul li{
display: block !important;
padding: 5px 10px !important;
border: none !important;
}
.perfilrsp {
width: 100% !important;
}
}
y en plantillas buscar "miembro -> member_profile y reemplazar por lo siguiente:
Código:
<html>
<head>
<title>{$mybb->settings['bbname']} - {$lang->profile}</title>
{$headerinclude}
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/report.js?ver=1820"></script>
<script>
$(document).ready(function() {
if($('.fotoperfil', this).attr('src') == ''){
$('.fotoperfil').attr('src', 'https://i0.wp.com/www.andro-life.com/wp-content/uploads/2017/08/Wallpaper-1.jpg?ssl=1');
}
});
</script>
</head>
<body>
{$header}
<div id="perfil">
<div class="socialprofile"><a href="javascript:Report.reportUser({$uid});" title="Reportar usuario" class="report_user_button"><i class="fas fa-bullhorn"></i></a>
<a href="private.php?action=send&uid={$uid}" title="{$lang->send_pm}"><i class="fas fa-envelope-square"></i></a>
{$buddy_options}
</div>
<div>
<img class="fotoperfil" src="{$userfields['fid5']}" title="Portada de {$memprofile['username']}" alt="Portada de {$memprofile['username']}" />
<div class="perfilstatus"><div class="profile_avatar">{$avatar}</div><div class="profiletra"><strong>{$memprofile['username']}</strong><br/>
<span class="smalltext">{$userfields['fid6']}</span>
</div>
</div>
<div class="profileinfo">
<ul>
<li><span>{$lang->registration_date}</span><br/>{$memregdate}</li>
<li><span>{$lang->lastvisit}</span><br />{$memlastvisitdate}</li>
<li><span>{$lang->total_posts}</span><br /><a href="search.php?action=finduser&uid={$uid}" title="{$lang->find_posts}">{$memprofile['postnum']}</a></li>
<li><span>{$lang->total_threads}</span><br /><a href="search.php?action=finduserthreads&uid={$uid}" title="{$lang->find_threads}">{$memprofile['threadnum']}</a></li>
</ul>
</div>
</div>
</div>
<br style="clear: both">
<div class="perfilrsp float_left">
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td colspan="2" class="thead"><strong>{$lang->users_forum_info}</strong></td>
</tr>
<tr>
<td class="trow1" style="width: 30%;"><strong>{$lang->joined}</strong></td>
<td class="trow1">{$memregdate}</td>
</tr>
<tr>
<td class="trow2"><strong>{$lang->lastvisit}</strong></td>
<td class="trow2">{$memlastvisitdate}</td>
</tr>
<tr>
<td class="trow1"><strong>{$lang->total_posts}</strong></td>
<td class="trow1">{$memprofile['postnum']} ({$lang->ppd_percent_total}){$findposts}</td>
</tr>
<tr>
<td class="trow2"><strong>{$lang->total_threads}</strong></td>
<td class="trow2">{$memprofile['threadnum']} ({$lang->tpd_percent_total}){$findthreads}</td>
</tr>
<tr>
<td class="trow1"><strong>{$lang->timeonline}</strong></td>
<td class="trow1">{$timeonline}</td>
</tr>
{$referrals}
{$reputation}
{$warning_level}
</table>
<br style="clear: both">
{$modoptions}
<br style="clear: both">
</div>
<div class="perfilrsp float_right">
{$contact_details}
{$profilefields}{$profilepicture}
{$signature}
{$adminoptions}
<div style="text-align: center">{$buddy_options}{$ignore_options}{$report_options}</div>
</td>
</tr>
</table>
</div>
<br style="clear: both">
{$footer}
</body>
</html>
Ahora les diré que modificar para cada uno de ustedes:
1.- Debemos de dar una portada para aquellos usuarios que no tengan portada aún, ya que mybb no da la opción de dar valor por defecto si está en blanco.
Para ello tenemos el siguiente script en <head> de la plantilla member profile:
Código:
<script>
$(document).ready(function() {
if($('.fotoperfil', this).attr('src') == ''){
$('.fotoperfil').attr('src', 'https://GOOGLE.COM');
}
});
</script>
Como pueden ver ahí viene la url de google (en la plantilla está de otra imagen, google es para que la identifiquen), deberás reemplazar por la url de la portada por defecto.
2.- En la misma plantilla encontrarás:
Código:
<img class="fotoperfil" src="{$userfields['fid4']}" title="Portada de {$memprofile['username']}" alt="Portada de {$memprofile['username']}" />
Donde el 4 deberá ser reemplazado por el FID de tu campo para la portada.
3.- En la plantilla encontrarás:
<span class="smalltext">{$userfields['fid5']}</span>
Harás lo mismo que en el paso anterior pero ahora con el elegido de estado, o borrar si no deseas agregar esto
Y con eso obtendrán algo lindo:
*El estado no soporta emojis aunque lo actives en el ACP al crear el campo, puedes crear un script de reemplazo con jquery, para cambiar emoji por emoji.
Espero les sirva =D
MÉTODO DOS:
Si deseas utilizar el plugin
profile picture, deberás de cambiar la plantilla member_profile por esto:
Código:
<html>
<head>
<title>{$mybb->settings['bbname']} - {$lang->profile}</title>
{$headerinclude}
<script type="text/javascript" src="{$mybb->asset_url}/jscripts/report.js?ver=1820"></script>
<script>
$(document).ready(function() {
if($('.fotoperfil', this).attr('src') == ''){
$('.fotoperfil').attr('src', 'https://i0.wp.com/www.andro-life.com/wp-content/uploads/2017/08/Wallpaper-1.jpg?ssl=1');
}
});
</script>
</head>
<body>
{$header}
<div id="perfil">
<div class="socialprofile"><a href="javascript:Report.reportUser({$uid});" class="report_user_button"><i class="fas fa-bullhorn"></i></a>
<a href="private.php?action=send&uid={$uid}"><i class="fas fa-envelope-square"></i></a>
</div>
<div>
{$profilepicture}
<div class="perfilstatus"><div class="profile_avatar">{$avatar}</div><div class="profiletra">{$memprofile['username']}<br/>
<span class="smalltext">{$userfields['fid5']}</span>
</div>
</div>
<div class="profileinfo">
<ul>
<li>{$lang->registration_date}<br/>{$memregdate}</li>
<li>{$lang->lastvisit}<br />{$memlastvisitdate}</li>
<li>{$lang->total_posts}<br /><a href="search.php?action=finduser&uid={$uid}" title="{$lang->find_posts}">{$memprofile['postnum']}</a></li>
<li>{$lang->total_threads}<br /><a href="search.php?action=finduserthreads&uid={$uid}" title="{$lang->find_threads}">{$memprofile['threadnum']}</a></li>
</ul>
</div>
</div>
</div>
<br style="clear: both">
<table width="100%" cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td width="50%" valign="top">
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td colspan="2" class="thead"><strong>{$lang->users_forum_info}</strong></td>
</tr>
<tr>
<td class="trow1" style="width: 30%;"><strong>{$lang->joined}</strong></td>
<td class="trow1">{$memregdate}</td>
</tr>
<tr>
<td class="trow2"><strong>{$lang->lastvisit}</strong></td>
<td class="trow2">{$memlastvisitdate}</td>
</tr>
<tr>
<td class="trow1"><strong>{$lang->total_posts}</strong></td>
<td class="trow1">{$memprofile['postnum']} ({$lang->ppd_percent_total}){$findposts}</td>
</tr>
<tr>
<td class="trow2"><strong>{$lang->total_threads}</strong></td>
<td class="trow2">{$memprofile['threadnum']} ({$lang->tpd_percent_total}){$findthreads}</td>
</tr>
<tr>
<td class="trow1"><strong>{$lang->timeonline}</strong></td>
<td class="trow1">{$timeonline}</td>
</tr>
{$referrals}
{$reputation}
{$warning_level}
</table>
{$contact_details}
</td>
<td> </td>
<td width="50%" valign="top">
{$profilefields}
{$signature}
{$modoptions}
{$adminoptions}
<div style="text-align: center">{$buddy_options}{$ignore_options}{$report_options}</div>
</td>
</tr>
</table>
<br style="clear: both">
{$footer}
</body>
</html>
Deberás ir a las plantillas globales y buscar la plantilla
member_profile_profilepicture y reemplazar por:
Código:
{$description}
{$profilepicture_img}
La plantilla
member_profile_profilepicture_description reemplazar por:
Código:
<span class="descport">{$memprofile['profilepicdescription']}</span>
y la plantilla
member_profile_profilepicture_profilepicture se reemplaza por:
Código:
<img class="fotoperfil" src="{$userprofilepicture['image']}" title="{$lang->users_profile_picture}" alt="{$lang->users_profile_picture}" />
Eso es todo!
Archivos adjuntos
Imagen(es)