¡Bienvenido a PHPost!

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

📦 Foro Archivado — Risus 1.3

Risus 1.3 ha finalizado su ciclo de vida y ya no recibe mantenimiento, soporte técnico ni actualizaciones de seguridad. Esta sección se conserva únicamente como archivo histórico y repositorio de descargas para consulta de la comunidad.

Importante: Esta versión contiene vulnerabilidades de seguridad conocidas que han sido corregidas en Risus Nova. No se recomienda utilizar Risus 1.3 en instalaciones nuevas ni en sitios expuestos a Internet.

Si encuentras un tema, complemento o modificación desarrollada para Risus 1.3 que te interese utilizar, no es necesario instalar una versión obsoleta. Puedes solicitar su adaptación en la sección de pedidos de Risus Nova para que sea compatible con la versión actual.

Gracias a todos los usuarios que formaron parte de la etapa de Risus 1.3. El desarrollo continúa en Risus Nova, donde se concentran todas las mejoras, correcciones y nuevas funcionalidades del proyecto.

⚖️ Aviso Legal y Normas de Contenido

PHPost.es es una comunidad dedicada al soporte, desarrollo y difusión de software libre para la creación y administración de comunidades en línea.

Compromiso con la legalidad: No se permite la publicación, promoción o distribución de software pirateado, contenido warez ni material que infrinja derechos de autor o cualquier otra normativa aplicable.

Responsabilidad: Cada usuario es responsable del contenido alojado en su propio sitio web y del uso que haga del software. Los administradores y desarrolladores de Risus Nova no controlan ni supervisan los servidores o contenidos gestionados por terceros.

⚠️ Aviso de seguridad

Risus Nova se distribuye únicamente a través de phpost.es, que es la fuente oficial del proyecto donde publicamos las versiones verificadas.

Recomendamos no utilizar copias obtenidas desde sitios de terceros, ya que podrían haber sido modificadas y no contar con la integridad del código original, lo que puede suponer riesgos de seguridad en la instalación.

Para garantizar una instalación segura y actualizada, descarga siempre la versión oficial desde el botón disponible en esta página.

Importante: No pediremos donaciones en ningún momento ni en ninguna plataforma (Ko-fi, PayPal, redes sociales u otras). Si encuentras campañas de donación que utilicen el nombre de Risus Nova o PHPost, no tienen ninguna relación con el proyecto.

🔄 Desarrollo activo

Risus Nova forma parte de una nueva etapa del proyecto PHPost, en evolución constante con mejoras, correcciones y nuevas funciones. Puedes seguir el progreso y los cambios oficiales a través del changelog y la comunidad.

Risus Nova 2.1 Estable Desarrollo activo Última actualización: 17/07/2026 Ver Demo Changelog 268 Desarrollo del tema: 75% (fase actual de desarrollo) Descargar
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

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
#2

4
Registrate o inicia tu sesión para ver este contenido

Me queda así
Responder Compartir
#3

1
(04-15-2024, 08:08 AM)Krsh escribió: Debes agradecer para ver el contenido...Me queda así

Puede ser que no hayas aplicado lo del punto 8 
Debes agradecer para ver el contenido...
Responder Compartir
#4

1
(04-15-2024, 04:26 PM)Miguel92 escribió: Debes agradecer para ver el contenido...
(04-15-2024, 08:08 AM)Krsh escribió: Debes agradecer para ver el contenido...Me queda así

Puede ser que no hayas aplicado lo del punto 8 

Si lo instale, el problema sería del otro complemento entonces?
Responder Compartir


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)