¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, es necesario tener una cuenta activa. Por favor, regístrate utilizando un correo electrónico válido para completar la activación.

Usamos BanaHosting para alojar tanto la demo oficial como este mismo foro de Risus Nova. Cumple todos los requisitos del script (PHP 8, mod_rewrite, SSL gratis) — si quieres usar el mismo hosting que nosotros, aquí tienes el enlace.

⚠️ Aviso de seguridad

Risus Nova solo se distribuye de forma segura y verificada a través de phpost.es.

Hemos detectado copias modificadas en sitios de terceros que contienen código malicioso, backdoors y funciones ocultas diseñadas para el robo de credenciales y datos sensibles. No confíes en descargas provenientes de foros, canales de Telegram o webs externas; no podemos garantizar la integridad de esos archivos.

Tu seguridad es nuestra prioridad: Descarga siempre la versión oficial desde el botón inferior para asegurar una instalación limpia y libre de amenazas.

Tampoco pedimos donaciones en ningún sitio — ni en phpost.es, ni en Ko-fi, PayPal o redes sociales. Si ves una campaña de donaciones a nombre de Risus Nova o phpost.es en cualquier sitio, es falsa — no compartas tus datos ni dones nada ahí.

🔄 Mantente actualizado

Al estar en desarrollo activo, recibe cambios constantes — échale un vistazo de vez en cuando al changelog y a las notas de administración para estar al día de qué ha cambiado.

Risus Nova 2.0 Estable En desarrollo activo Actualizado: 27/06/2026 — 15:30 h (Hora España) Desarrollo Tema: 75% Ver notas de la versión Ver Demo Descargar desde phpost.es

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

TUTORIAL Mejorar la sección "Cuenta"
#1

6
Mejor respuesta del mensaje Mejorar la sección "Cuenta"Esto le va a gustar ya que vamos a simplificar un poco más lo que sería la sección de cuenta, y será bastante largo, y en mi caso le he quitado el porcentaje que se muestra en cuenta y varias opciones que ningún usuario se toma el tiempo en completar, como por ejemplo "Intereses y preferencias"

1 - En .htaccess buscamos 
RewriteRule ^cuenta.php$ inc/php/cuenta.php [QSA,L]

y debajo agregamos
RewriteRule ^cuenta/([A-Za-z0-9_-]+)$ inc/php/cuenta.php?accion=$1 [QSA,L]


2 - En tema/templates/t.cuenta.tpl y reemplazamos el contenido por esto
{include file='sections/main_header.tpl'}
<script src="{$tsConfig.js}/cuenta.js"></script>
<script>
   $(document).ready(() => {
      avatar.uid = '{$tsUser->uid}';
      avatar.current = '{$tsConfig.url}/files/avatar/{if $tsPerfil.p_avatar}{$tsPerfil.user_id}{else}avatar{/if}.jpg';
   });
</script>
<div class="tabbed-d">
   <div class="floatL">
      <div id="alerta_guarda"></div>
      <ul class="menu-tab">
         <li{if $tsAccion == ''} class="active"{/if}><a href="{$tsConfig.url}/cuenta/">Cuenta</a></li>
         <li{if $tsAccion == 'perfil'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/perfil">Perfil</a></li>    
         <li{if $tsAccion == 'block'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/block">Bloqueados</a></li>
         <li{if $tsAccion == 'clave'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/clave">Cambiar Clave</a></li>
         <li{if $tsAccion == 'nick'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/nick">Cambiar Nick</a></li>
         <li{if $tsAccion == 'config'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/config">Privacidad</a></li>
      </ul>
      <a name="alert-cuenta"></a>
      <form class="horizontal" method="post" name="editarcuenta">
         <input type="hidden" name="pagina" value="{$tsAccion}">
         {include file="modules/m.cuenta_$tsAccion.tpl"}
      </form>
   </div>
   <div class="floatR">
       {include file='modules/m.cuenta_sidebar.tpl'}
   </div>
</div>
<div style="clear:both"></div>          
{include file='sections/main_footer.tpl'}


3 - Luego acceden a tema/templates/modules y buscan todos los m.cuenta_*.tpl y le quitan (al inicio del archivo)
style="display:none"

también (7 el numero puede variar, dependiendo de la sección)
<div class="alert-cuenta cuenta-7"></div>

y luego en los divs con la clase .buttons lo reemplazan por
<div class="buttons">
   <input type="button" value="Guardar" onclick="cuenta.guardar_datos()" class="mBtn btnOk">
</div>


4 - En inc/php/cuenta.php buscan
    } elseif($action == 'desactivate'){
        if(!empty($_POST['validar'])) echo $tsCuenta->desCuenta();
    

y debajo agregan
   $smarty->assign("tsAccion"$_GET["accion"]); 


5 - Luego inc/class/c.cuenta.php en la funcion "savePerfil()" cambian
$save $_POST['save']; 
por 
$save $_POST['pagina']; 

dentro del switch hacen lo siguiente, cambian el número por el nombre
 - case 1 -> case ''
 - case 2 -> case 'perfil'
 - case 6 -> case 'clave'
 - case 7 -> case 'config'
 - case 8 -> case 'nick'

luego eliminan estos
 - case 3: ...todo hasta el break... break;
 - case 4: ...todo hasta el break... break;
 - case 5: ...todo hasta el break... break;


más abajo buscamos y borramos
        // COMPROBAR PORCENTAJE
        $total = array(5,8,9,8,9); // CAMPOS EN CADA CATEGORIA
        $tid $save 1;
        if($save && $save 6){
            $total[$tid] = $this->getPorcentTotal($perfilData$total[$tid]);
            if($save == 1$total[$tid] = $total[$tid] - 2;
            $porcen db_exec('fetch_assoc'db_exec(array(__FILE____LINE__), 'query''SELECT p_total FROM u_perfil WHERE user_id = \''.$tsUser->uid.'\' LIMIT 1'));
            $porcen unserialize($porcen['p_total']);
            $porcen[$tid] = $total[$tid];
            $porcenNow $this->getPorcentVal($porcen);
            $porcen serialize($porcen);
            db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET p_total = \''.$porcen.'\' WHERE user_id = \''.$tsUser->uid.'\'');
        

justo debajo de eso seleccionan
        // ACTUALIZAR
        if($save == 1) {
            db_exec(array(__FILE____LINE__), 'query''UPDATE u_miembros SET user_email = \''.$tsCore->setSecure($perfilData['email'], true).'\' WHERE user_id = \''.$tsUser->uid.'\'');
            array_splice($perfilData01); // HACK
            $updates $tsCore->getIUP($perfilData'user_');
            if(!db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET '.$updates.' WHERE user_id = \''.$tsUser->uid.'\'')) return array('error' => show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''db'));
        } else {
            $updates $tsCore->getIUP($perfilData'p_');
            if(!db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET '.$updates.' WHERE user_id = \''.$tsUser->uid.'\'')) return array('error' => show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''db')); 
        
}
        //
        if(is_array($msg_return)) return $msg_return;
        else return array('porc' => $porcenNow); 

y lo reemplazan por
        // ACTUALIZAR
        if($save == '' or $save == 'perfil' or $save == 'config') {
            if($save == '') {
                db_exec([__FILE____LINE__], "query""UPDATE u_miembros SET user_email = '{$perfilData['email']}' WHERE user_id = " $tsUser->uid);    
                array_splice
($perfilData01);            
            
}
            $updates $tsCore->getIUP($perfilData, ($save == '' 'user_' 'p_'));
           $msg_return = (db_exec([__FILE____LINE__], "query""UPDATE u_perfil SET {$updates} WHERE user_id = " $tsUser->uid)) ? array("error" => "Los cambios fueron aceptados y ser&aacute;n aplicados.") : die(show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''Base de datos'));
        }
        //
        return $msg_return


6 - Crean un archivo llamado ajax.cuenta.php en inc/php/ajax y agregan lo siguiente
<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');

/**
 * Controlador AJAX
 *
 * @name    ajax.cuenta.php
 * @author  Miguel92
*/


$files = [
   'cuenta-guardar' => ['n' => 2'p' => ''],
];

// REDEFINIR VARIABLES
$tsPage 'ajax/p.cuenta.'.$files[$action]['p'];
$tsLevel $files[$action]['n'];
$tsAjax = empty($files[$action]['p']) ? 0;

// DEPENDE EL NIVEL
$tsLevelMsg $tsCore->setLevel($tsLeveltrue);
if(
$tsLevelMsg != 1):
    echo '0: '.$tsLevelMsg['mensaje']; 
    die
();
endif;

// CLASE
require("../class/c.cuenta.php");
$tsCuenta = new tsCuenta();

// CODIGO
switch($action){
    case 'cuenta-guardar':
        echo json_encode($tsCuenta->savePerfil());
    break;



7 - En tema/templates/modules/m.cuenta_cuenta.tpl lo renombran a m.cuenta_.tpl

8 - En tema/templates/modules/m.cuenta_perfil.tpl y reemplazan el contenido por esto, y aplica este Debes agradecer para ver el contenido...
<div class="content-tabs perfil">
   <
fieldset>
      <
div class="field">
         <
label for="nombrez">Nombre completo</label>
         <
input type="text" value="{$tsPerfil.p_nombre}maxlength="60" name="nombrez" id="nombrez" class="text cuenta-save-2" style="width:230px">
      </
div>
      <
div class="field">
         <
label for="sitio">Mensaje Personal</label>
         <
textarea value="" maxlength="60" name="mensaje" id="mensaje" class="cuenta-save-2">{$tsPerfil.p_mensaje}</textarea>
      </
div>
      <
div class="field">
         <
label for="sitio">Sitio Web</label>
         <
input type="text" value="{$tsPerfil.p_sitio}maxlength="60" name="sitio" id="sitio" class="text cuenta-save-2" style="width:230px">
      </
div>
      <
div class="field">
         <
label for="red">Redes sociales</label>
         <
div style="display:grid;grid-template-columns: repeat(2, 1fr);gap: 10px;">
            {foreach 
$tsPerfil.redes key=name item=red}
               <
div style="display:flex;justify-content: flex-start;align-items: center;">
                  <
div class="icon">
                      <
img src="{$tsConfig.images}/icons/{$name}.png" width="16" height="16" />
                  </
div>
                  <
input type="text" class="text cuenta-save-2" value="{$tsPerfil.p_socials.$name}placeholder="{$red}name="red[{$name}]">
               </
div>
            {/foreach}
         </
div>
      </
div>
      <
div class="field">
          <
label>Me gustar&iacute;a</label>
          <
div class="input-fake">
              <
ul>
               {foreach 
from=$tsPData.gustos key=val item=text}
                  <
li><input type="checkbox" name="g_{$val}class="cuenta-save-2" value="1"{if $tsPerfil.p_gustos.$val == 1checked{/if}>{$text}</li>
               {/foreach}
            </
ul>
         </
div>
      </
div>
      <
div class="field">
         <
label for="estado">Estado Civil</label>
         <
div class="input-fake">
            <
select class="cuenta-save-2" name="estado" id="estado">
                  {foreach 
from=$tsPData.estado key=val item=text}
                  <
option value="{$val}"{if $tsPerfil.p_estado == $valselected{/if}>{$text}</option>
               {/foreach}
            </
select>
         </
div>
      </
div>
        <
div class="buttons">
           <
input type="button" value="Guardar" onclick="cuenta.guardar_datos()" class="mBtn btnOk">
        </
div>
   </
fieldset>
   <
div class="clearfix"></div>
</
div


9 - Ahora se viene lo genial, busca en tema/js/cuenta.js , justo antes que empieza var avatar = {
var cuenta = {... HASTA ... }

y lo reemplazas por
var cuenta = {
    alerta: (alerta) => {
        $(".alert-cuenta").show();
        $("#alerta_guarda").html(`<div style="background:#FFFFCC;text-align:center;margin-bottom: 10px;"><p style="display: block;font-size: 16px;padding: 10px 0;">${alerta}</p></div>`)
        window.scrollTo(0, 0)
        // Despues de 5s quitamos el alerta
        setTimeout(() => $("#alerta_guarda").html(''), 5000)
    },
    chgpais: () => {
        // Campo pais
        const pais = $("select[name=pais]").val();
        const estado = $("select[name=estado]");
        if(empty(pais)) estado.addClass('disabled').attr('disabled', 'disabled').val('');
        else {
            //Obtengo las estados
            $(estado).html('');
         $('#loading').fadeIn(250); 
         $.get(global_data.url + '/registro-geo.php', 'pais_code=' + pais, h => {
             if(h.charAt(0) === '1') estado.append(h.substring(3)).removeAttr('disabled').val('').focus();
             $('#loading').fadeOut(250); 
         })
      }
    },
    guardar_datos: () => {
        $('#loading').slideDown(250);
        $.ajax({
            type: 'post', 
            url: global_data.url + '/cuenta-guardar.php', 
            data: $("form[name=editarcuenta]").serialize(), 
            dataType: 'json',
            success: response => cuenta.alerta(response.error)
        });
    }
}

Eso sería todo, espero no olvidarme de ningún paso.
Responder


Compartir en:

Mensajes en este tema
Mejorar la sección "Cuenta" - por Miguel92 - 02-20-2022, 05:51 PM
RE: Mejorar la sección "Cuenta" - por Krsh - 04-15-2024, 08:08 AM
RE: Mejorar la sección "Cuenta" - por Miguel92 - 04-15-2024, 04:26 PM
RE: Mejorar la sección "Cuenta" - por Krsh - 04-15-2024, 05:31 PM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)