-
Cómo funcionan las Mision...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-14-2026, 09:46 PM
» Respuestas: 0
» Vistas: 105 -
V6 Original/Dark/Memes (A...
Foro: Diseños Terminados
Último mensaje por: carlos007r
06-14-2026, 11:08 AM
» Respuestas: 26
» Vistas: 6,357 -
V5
Foro: Diseños Terminados
Último mensaje por: Aeikox
06-13-2026, 12:16 AM
» Respuestas: 8
» Vistas: 1,452 -
Risus 1.3 Actualizado jQu...
Foro: Risus 1.3
Último mensaje por: Tronlar
06-12-2026, 10:45 PM
» Respuestas: 55
» Vistas: 10,672 -
Preguntas Frecuentes y So...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 06:17 PM
» Respuestas: 0
» Vistas: 77 -
Cómo registrar tu comunid...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 05:32 PM
» Respuestas: 0
» Vistas: 62 -
Cómo monetizar tu comunid...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 07:19 PM
» Respuestas: 0
» Vistas: 57 -
Introducción al SEO para ...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 06:58 PM
» Respuestas: 0
» Vistas: 63 -
Guía completa de SEO para...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 06:48 PM
» Respuestas: 0
» Vistas: 65 -
Diccionario de términos b...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-11-2026, 01:41 PM
» Respuestas: 0
» Vistas: 89
- Mensajes del foro:1,957
- Temas del foro:614
- Miembros:1,036
- Último miembro:carlos007r
Capturas
Ejecutar esta consulta
ALTER TABLE u_miembros ADD user_fondog VARCHAR(500) NOT NULL AFTER user_email
En c.cuenta.php --> inc --> class --> c.cuenta.php
Buscar:
'email' => $tsCore->setSecure($_POST['email'], true),
Debajo agregar:
'fondog' => $tsCore->setSecure($_POST['fondog']),
Buscar:
// 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($perfilData, 0, 1); // HACK
Reemplazar por:
// ACTUALIZAR
if($save == 1) {
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_email = \''.$tsCore->setSecure($perfilData['email'], true).'\', user_fondog = \''.$tsCore->setSecure($perfilData['fondog']).'\' WHERE user_id = \''.$tsUser->uid.'\'');
array_splice($perfilData, 0, 2); // HACK
En main_header.tpl --> themes --> default --> templates --> sections --> main_header.tpl
Buscar:
</head>
Arriba agregar:
{if $tsUser->info.user_fondog != ''}
<style type="text/css">
/* {literal} */
body {
background-attachment: fixed;
/* {/literal} */background-image:url({$tsUser->info.user_fondog}) !important;/* {literal} */
}
/* {/literal} */
</style>
{/if}
En m.cuenta_cuenta.tpl --> themes --> default --> templates --> modules --> m.cuenta_cuenta.tpl
Buscar:
{if $tsConfig.c_allow_firma}
Arriba agregar:
<div class="field">
<label for="fondo">Fondo:</label>
<input type="text" name="fondog" class="cuenta-save-1" value="{$tsUser->info.user_fondog}" size="60" />
</div>
Nota: Si tienen el mod Fondo de perfil y cabecera tipo facebook instalado hagan el siguiente paso.
Mod Fondo de perfil y cabecera tipo facebook
Registrate o inicia tu sesión para ver este contenido
En t.perfil.tpl --> themes --> default --> templates --> t.perfil.tpl
Buscar:
<body style="background-image:url('{$tsInfo.p_fondo}');background-attachment: fixed; background-repeat: no-repeat;-webkit-background-size: cover;-moz-background-size: cover;-o-background-size: cover;background-size: cover;background-position: center;">
Reemplazar por:
{if $tsInfo.p_fondo != ''}
<style type="text/css">
/* {literal} */
body {
background-attachment: fixed;
/* {/literal} */background-image:url({$tsInfo.p_fondo}) !important;/* {literal} */
}
/* {/literal} */
</style>
{/if}
Creditos: tutan-kabron
Captura
En c.cuenta.php --> inc --> class --> c.cuenta.php
Buscar:
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.user_dia, p.user_mes, p.user_ano, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
Al lado de:
p.user_pais,
Agregar:
p.user_dia, p.user_mes, p.user_ano,
Buscar:
$data['p_configs'] = unserialize($data['p_configs']);
Debajo agregar:
$anoa = date("Y",time());
$mesa = date("m",time());
$diaa = date("d",time());
$data['anos']= $anoa - $data['user_ano'];
$data['mesas']= $mesa - $data['user_mes'];
$data['dias']= $diaa - $data['user_dia'];
En m.perfil.headinfo.tpl --> themes --> default --> templates --> modules --> m.perfil.headinfo.tpl
Buscar:
<span class="bio">{if $tsInfo.p_nombre != ''}{$tsInfo.p_nombre} es {else}Es {/if}{if $tsInfo.user_sexo == 1}un hombre{else}una mujer{/if}. Vive en <span id="info_pais">{$tsInfo.user_pais}</span> y se unió a la familia de {$tsConfig.titulo} el {$tsInfo.user_registro|fecha:true}. {if $tsInfo.p_empresa}Trabaja en {$tsInfo.p_empresa}{/if}</span>
Reemplazar por:
<span class="bio">{if $tsInfo.p_nombre != ''}{$tsInfo.p_nombre} es {else}Es {/if}{if $tsInfo.user_sexo == 1}un hombre{else}una mujer{/if}. Vive en <span id="info_pais"><b>{$tsInfo.user_pais}</b></span>, tiene <b>{if $tsInfo.mesas <= 0 && $tsInfo.dias <= 0}{$tsInfo.anos-1}{else}{$tsInfo.anos}{/if}</b> años, cumple el <b>{$tsInfo.user_dia}</b> de <b>{if $tsInfo.user_mes==1}Enero{elseif $tsInfo.user_mes==2}Febrero{elseif $tsInfo.user_mes==3}Marzo{elseif $tsInfo.user_mes==4}Abril{elseif $tsInfo.user_mes==5}Mayo{elseif $tsInfo.user_mes==6}Junio{elseif $tsInfo.user_mes==7}Julio{elseif $tsInfo.user_mes==8}Agosto{elseif $tsInfo.user_mes==9}Septiembre{elseif $tsInfo.user_mes==10}Octubre{elseif $tsInfo.user_mes==11}Noviembre{elseif $tsInfo.user_mes==12}Diciembre{/if}</b> y se unió a la familia de {$tsConfig.titulo} el {$tsInfo.user_registro|fecha:true}. {if $tsInfo.p_empresa}Trabaja en {$tsInfo.p_empresa}{/if}</span>
Variables
Años que tiene el usuario para el año actual
{if $tsInfo.mesas <= 0 && $tsInfo.dias <= 0}{$tsInfo.anos-1}{else}{$tsInfo.anos}{/if}
Día de cumpleaños
{$tsInfo.user_dia}
Mes de cumpleaños
{if $tsInfo.user_mes==1}Enero{elseif $tsInfo.user_mes==2}Febrero{elseif $tsInfo.user_mes==3}Marzo{elseif $tsInfo.user_mes==4}Abril{elseif $tsInfo.user_mes==5}Mayo{elseif $tsInfo.user_mes==6}Junio{elseif $tsInfo.user_mes==7}Julio{elseif $tsInfo.user_mes==8}Agosto{elseif $tsInfo.user_mes==9}Septiembre{elseif $tsInfo.user_mes==10}Octubre{elseif $tsInfo.user_mes==11}Noviembre{elseif $tsInfo.user_mes==12}Diciembre{/if}
Creditos: Kmario19
Capturas
En c.user.php --> inc --> class --> c.user.php
Buscar:
$tsMonitor->setNotificacion(12, $pid, $tsUser->uid, $pub_id);
Debajo agregar:
$tsMonitor->setFollowNotificacion(60, 1, $tsUser->uid, $pub_id);
En c.monitor.php --> inc --> class --> c.monitor.php
Buscar:
17 => array('text' => 'Tu foto recibió una medalla', 'css' => 'medal'),
Arriba agregar:
60 => array('text' => 'actualizó su', 'ln_text' => 'estado', 'css' => 'blue_ball'),
Buscar:
case 14:
Arriba agregar:
case 60:
Buscar:
case 17:
$oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>';
break;
Debajo agregar:
case 60:
$oracion['text'] = ($this->show_type == 1) ? $this->monitor[$no_type]['text'] : $this->monitor[$no_type]['text'].' '.$ln_text.': ';
$oracion['link'] = $site_url.'/perfil/'.$data['user_name'].'/'.$data['pub_id'];
$oracion['ltext'] = ($this->show_type == 1) ? $ln_text : substr($data['p_body'],0,20).'...';
$oracion['ltit'] = ($this->show_type == 1) ? substr($data['p_body'],0,20).'...' : $ln_text;
break;
Creditos: Kmario19
Descripción
Bloquea 15 minutos la cuenta de un usuario para la IP que haga 5 logins consecutivos fallidos en 1 día.
Captura
Ejecutar esta consulta
CREATE TABLE IF NOT EXISTS `u_loginc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(20) NOT NULL,
`ip` varchar(32) NOT NULL,
`veces` int(4) NOT NULL DEFAULT '1',
`time` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
En c.user.php --> inc --> class --> c.user.php
Buscar:
/*
HACEMOS LOGIN
loginUser($username, $password, $remember = false, $redirectTo = NULL);
*/
function loginUser($username, $password, $remember = FALSE, $redirectTo = NULL){
global $tsCore;
/* ARMAR VARIABLES */
$username = strtolower($username); // ARMAR VARIABLES
Reemplazar por:
/*
HACEMOS LOGIN
loginUser($username, $password, $remember = false, $redirectTo = NULL);
*/
function loginUser($username, $password, $remember = FALSE, $redirectTo = NULL){
global $tsCore;
$username = strtolower($username); // ARMAR VARIABLES
$ip = $tsCore->getIP();
$sql_inc = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT time, veces FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
$datalogs = db_exec('fetch_array', $sql_inc);
if($datalogs['time'] <= time()-86400)
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
if($datalogs['veces'] >= 5){
if($datalogs['time'] <= time()-900)
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
else
return '0: Esta cuenta se encuentra bloqueada temporalmente.';
}
Buscar:
if($data['user_password'] != $pp_password){
return '0: Tu contraseña es incorrecta.';
} else {
if($data['user_activo'] == 1){
// Actualizamos la session
$this->session->update($data['user_id'], $remember, TRUE);
// Cargamos la información del usuario
$this->loadUser(true);
Reemplazar por:
if($data['user_password'] != $pp_password){
if(!db_exec('num_rows', $sql_inc))
db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_loginc` (user, ip, time) VALUES (\''.$username.'\', \''.$ip.'\', \''.time().'\')');
else
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_loginc SET time = \''.time().'\', veces = veces + 1 WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
return '0: Tu contraseña es incorrecta.';
} else {
if($data['user_activo'] == 1){
// Actualizamos la session
$this->session->update($data['user_id'], $remember, TRUE);
// Cargamos la información del usuario
$this->loadUser(true);
//BORRAMOS LOGINS FALLIDOS
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_loginc WHERE ip = \''.$ip.'\' AND user = \''.$username.'\'');
Creditos: aperpen
Captura
Buscar:
/*
lalala
*/
Arriba agregar:
/*
Top Categorias
*/
function topcat(){
global $tsCore;
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.cid, c.c_nombre, c.c_seo, c.c_img, COUNT(p.post_id) AS total
FROM p_categorias AS c
LEFT JOIN p_posts AS p ON p.post_category = c.cid AND p.post_status = \'0\'
GROUP BY c.cid
HAVING total > 0
ORDER BY total DESC, c.c_nombre ASC LIMIT 20');
return result_array($query);
}
En posts.php --> inc --> php --> posts.php
Buscar:
$smarty->assign("tsDo",$_GET['do']);
Debajo agregar:
$smarty->assign("tsTopcat",$tsPosts->topcat());
En t.home.tpl --> themes --> default --> templates --> t.home.tpl
Buscar:
{include file='modules/m.home_afiliados.tpl'}
Arriba agregar:
{include file='modules/m.home_topcat.tpl'}
Y subir esta carpeta
Mediafire
http://Registrate o inicia tu sesión par...).rar/file
Google Drive
http://Registrate o inicia tu sesión par... contenido
Creditos: Tronlar
Captura GIF
En bbcode.inc.php --> inc --> ext --> bbcode.inc.php
Buscar:
array('tag' => 'url', 'replace' => '<a href="{param}" target="_blank">{param}</a>', 'parse' => false, 'validParam' => $urlValidator),
array('tag' => 'url', 'replace' => '<a href="{option}" target="_blank">{param}</a>', 'option' => true, 'validOption' => $urlValidator),
Reemplazar por:
array('tag' => 'url', 'replace' => '<a href="'.$tsCore->settings['url'].'/go/?p={param}" target="_blank" class="encoded" data-url="{param}">{param}</a>', 'parse' => false, 'validParam' => $urlValidator),
array('tag' => 'url', 'replace' => '<a href="'.$tsCore->settings['url'].'/go/?p={option}" target="_blank" class="encoded" data-url="{option}">{param}</a>', 'option' => true, 'validOption' => $urlValidator),
En funciones.js --> themes --> default --> js --> funciones.js
Al final agregar:
// mozilla has this native
// - but breaks in 2.0.0.12!
//if (typeof this.window['btoa'] === 'function') {
// return btoa(data);
//}
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = "",
tmp_arr = [];
if (!data) {
return data;
}
do { // pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
var r = data.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}
$(document).ready(function(){
$('a.encoded').each(function(){
var new_url = $(this).data('url');
$(this).attr('href', '' + global_data.url + '/go/?p='+base64_encode(new_url));
});
});
Y subir esta carpeta
Mega
http://Registrate o inicia tu sesión par... contenido
Google Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par...).rar/file
Uptobox
http://Registrate o inicia tu sesión par... contenido
4shared
http://Registrate o inicia tu sesión par... contenido
Creditos: Vellenger
Captura
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
$lastPosts['data'] = result_array($query);
Debajo agregar:
/****FILTRO CATEGORIA 1*****/
$categoria = 1;
$sql = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
$lastPosts['cat'] = result_array($sql);
Explicación
- La variable $categoria tendrá un valor entero que es equivalente a la id de la categoría que queremos, en este caso yo puse 1 como ejemplo, en mis categorías de juegos es "acción"
- Se mostraran solo 5 resultados como máximo, se puede cambiar donde dice LIMIT 5 por la cantidad que quieran. Le he puesto solo eso porque la idea es que si hay mas resultados, aparezca el boton "ver más" que nos mostrará los "últimos posts" con todos los posts de dicha categoría.
- Si quieren agregar más filtros, dupliquen todo el código anterior y le cambiaran el nombre de la variable.
Ejemplo
$sql por $sql2 (puede ser cualqiera)
$lastPosts['cat'] = result_array($sql); lo cambian por $lastPosts['cat2'] = result_array($sql2);
Y así copian el código tantas veces quieran y solo le cambiaran los números de las variables (ejemplo $sql3, $sql4, $sql5... etc)
/****FILTRO CATEGORIA 1*****/
$categoria = 1;
$sql = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
$lastPosts['cat'] = result_array($sql);
/****FILTRO CATEGORIA 2*****/
$categoria = 2;
$sql2 = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
$lastPosts['cat2'] = result_array($sql2);
/****FILTRO CATEGORIA 3*****/
$categoria = 3;
$sql3 = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
$lastPosts['cat3'] = result_array($sql3);
En posts.php --> inc --> php --> posts.php
Buscar:
$smarty->assign("tsPosts",$tsLastPosts['data']);
Agregan (tantas veces quieran mostrar categorías diferentes):
$smarty->assign("tsPCat",$tsLastPosts['cat']);
Ejemplo
$smarty->assign("tsPCat",$tsLastPosts['cat']);
$smarty->assign("tsPCat2",$tsLastPosts['cat2']);
$smarty->assign("tsPCat3",$tsLastPosts['cat3']);
En m.home_last_posts.tpl --> themes --> default --> templates --> modules --> m.home_last_posts.tpl
Al final agregar:
<div ***** lastPosts">
{if $tsPCat}
<div class="header">
<div class="box_txt ultimos_posts">Categoría 1</div>
<div class="box_rss">
<a href="/rss/ultimos-post">
<span class="systemicons sRss" style="position:relative;z-index:87"></span>
</a>
</div>
<div class="clearBoth"></div>
</div>
<div class="body">
<ul>
{foreach from=$tsPCat item=p key=i}
<li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
<a {if $p.post_status == 3}class="qtip" title="El post está en revisión"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisión por acumulación de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post está eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario está desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario está suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a>
<span>{$p.post_date|hace} » <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> · Puntos <strong>{$p.post_puntos}</strong> · Comentarios <strong>{$p.post_comments}</strong></span>
<span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span>
</li>
{if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver más</a>{/if}
{/foreach}
</ul>
<br clear="left"/>
</div>
{/if}
</div>
Explicación
{if $tsPCat} → Condicional por si existe o no posts de la categoría (si agregan más no olviden poner el 2, 3, 4, etc en los otros códigos)
<div class="box_txt ultimos_posts">Categoría 1</div> → nombre de la categoría seleccionada
{if $i > 4} → Condicional que determina el LIMITE mencionado anteriormente - 1 (menos 1) para que muestre el botón de ver más de la categoría escogida
Repiten este mismo código cuantas veces quieran de las categorías seleccionadas.
Ejemplo
<div ***** lastPosts">
{if $tsPCat}
<div class="header">
<div class="box_txt ultimos_posts">Categoría Acción</div>
<div class="box_rss">
<a href="/rss/ultimos-post">
<span class="systemicons sRss" style="position:relative;z-index:87"></span>
</a>
</div>
<div class="clearBoth"></div>
</div>
<div class="body">
<ul>
{foreach from=$tsPCat item=p key=i}
<li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
<a {if $p.post_status == 3}class="qtip" title="El post está en revisión"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisión por acumulación de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post está eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario está desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario está suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a>
<span>{$p.post_date|hace} » <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> · Puntos <strong>{$p.post_puntos}</strong> · Comentarios <strong>{$p.post_comments}</strong></span>
<span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span>
</li>
{if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver más</a>{/if}
{/foreach}
</ul>
<br clear="left"/>
</div>
{/if}
</div>
<div ***** lastPosts">
{if $tsPCat2}
<div class="header">
<div class="box_txt ultimos_posts">Categoría Aventuras</div>
<div class="box_rss">
<a href="/rss/ultimos-post">
<span class="systemicons sRss" style="position:relative;z-index:87"></span>
</a>
</div>
<div class="clearBoth"></div>
</div>
<div class="body">
<ul>
{foreach from=$tsPCat2 item=p key=i}
<li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
<a {if $p.post_status == 3}class="qtip" title="El post está en revisión"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisión por acumulación de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post está eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario está desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario está suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a>
<span>{$p.post_date|hace} » <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> · Puntos <strong>{$p.post_puntos}</strong> · Comentarios <strong>{$p.post_comments}</strong></span>
<span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span>
</li>
{if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver más</a>{/if}
{/foreach}
</ul>
<br clear="left"/>
</div>
{/if}
</div>
<div ***** lastPosts">
{if $tsPCat3}
<div class="header">
<div class="box_txt ultimos_posts">Categoría Deportes</div>
<div class="box_rss">
<a href="/rss/ultimos-post">
<span class="systemicons sRss" style="position:relative;z-index:87"></span>
</a>
</div>
<div class="clearBoth"></div>
</div>
<div class="body">
<ul>
{foreach from=$tsPCat3 item=p key=i}
<li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
<a {if $p.post_status == 3}class="qtip" title="El post está en revisión"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisión por acumulación de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post está eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario está desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario está suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a>
<span>{$p.post_date|hace} » <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> · Puntos <strong>{$p.post_puntos}</strong> · Comentarios <strong>{$p.post_comments}</strong></span>
<span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span>
</li>
{if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver más</a>{/if}
{/foreach}
</ul>
<br clear="left"/>
</div>
{/if}
</div>
Creditos: Kmario19
Capturas
Ejecutar esta consulta
CREATE TABLE IF NOT EXISTS `nick_reserved` (
`n_id` int(11) NOT NULL auto_increment,
`n_nick` varchar(50) NOT NULL,
`n_fecha` int(11) NOT NULL,
`n_activado` varchar(2) NOT NULL,
`n_admin` varchar(50) NOT NULL,
PRIMARY KEY (`n_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
En .htaccess
Buscar:
RewriteRule ^admin/news/nueva inc/php/admin.php?action=news&act=nuevo [QSA,L]
Debajo agregar:
RewriteRule ^admin/nicks_reserved/editar/([0-9]+)$ inc/php/admin.php?action=nicks_reserved&act=editar&id=$1 [QSA,L]
RewriteRule ^admin/nicks_reserved/nueva inc/php/admin.php?action=nicks_reserved&act=nuevo [QSA,L]
En c.admin.php --> inc --> class --> c.admin.php
Buscar:
/*
saveConfigs()
*/
Arriba agregar:
/*
getNickas()
*/
function getNickas()
{
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, n.* from nick_reserved AS n LEFT JOIN u_miembros AS u ON n.n_admin = u.user_name ORDER BY n.n_id DESC');
$data = result_array($query);
//
return $data;
}
/*
newNicka()
*/
function newNicka()
{
global $tsCore, $tsUser;
//
$id = $tsCore->setSecure($_GET['id']);
$a = $tsCore->setSecure($_POST['a']);
$n_nick = $tsCore->setSecure($_POST['n_nick']);
$activo = $tsCore->setSecure($_POST['activado']);
$tiempo = time();
if (!empty($n_nick)) {
if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `nick_reserved` (`n_nick`, `n_fecha`, `n_activado`, `n_admin`) VALUES (\'' . $n_nick . '\', \'' . $tiempo . '\', \'' . $activo . '\', \'' . $a . '\')'))
return true;
}
//
return false;
}
/*
editNicka()
*/
function editNicka()
{
global $tsCore, $tsUser;
//
$id = intval($_GET['id']);
$n_nick = $tsCore->setSecure($_POST['n_nick']);
$activo = $_POST['activado'];
//
if (!empty($n_nick)) {
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `nick_reserved` SET `n_nick` = \''.$n_nick.'\', `n_activado` = \'' .$activo . '\' WHERE n_id = \'' .(int)$id . '\''))
return true;
}
}
/*
getNicka()
*/
function getNicka()
{
global $tsCore;
//
$id = $tsCore->setSecure($_GET['id']);
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `n_id`, `n_nick`, `n_activado`, `n_fecha` FROM nick_reserved WHERE n_id = \'' .
(int)$id . '\' LIMIT 1');
$data = db_exec('fetch_assoc', $query);
//
return $data;
}
/*
deNicka();
*/
function delNicka()
{
$id = $_GET['id'];
if (!db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `n_id` FROM `nick_reserved` WHERE `n_id` = \'' .
(int)$id . '\' LIMIT 1'))) {
return 'El id ingresado no existe.';
}
db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `nick_reserved` WHERE `n_id` = \'' . (int)$id . '\'');
}
En c.registro.php --> inc --> class --> c.registro.php
Buscar:
if(db_exec('num_rows', $query) > 0) $valid = '0: El '.$which.' ya se encuentra registrado.'; // EXISTE
Arriba agregar:
$query2 = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `n_nick` FROM `nick_reserved` where LOWER(n_nick)= \''.$username.'\' and n_activado = \'si\' limit 1');
if(db_exec('num_rows', $query2) > 0) {$valid = '0: El Nick <b>'.$username.'</b> se encuentra reservado!';}
En admin.php --> inc --> php --> admin.php
Buscar:
/** NOTICIAS **/
} elseif($action == 'news'){
Arriba agregar:
/** NICKS **/
} elseif($action == 'nicks_reserved'){
if(empty($act)) $smarty->assign("tsNicks",$tsAdmin->getNickas());
elseif($act == 'nuevo' && !empty($_POST['n_nick'])){
if($tsAdmin->newNicka()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nicks_reserved?save=true');
} elseif($act == 'editar'){
if(!empty($_POST['n_nick'])){
if($tsAdmin->editNicka()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nicks_reserved?save=true');
} else $smarty->assign("tsNew",$tsAdmin->getNicka());
} elseif($act == 'borrar'){
if($tsAdmin->delNicka()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nicks_reserved?borrar=true');
}
En t.admin.tpl --> themes --> default --> templates --> t.admin.tpl
Buscar:
{/if}
Arriba agregar:
{elseif $tsAction == 'nicks_reserved'}
{include file='admin_mods/nicks_reserved.tpl'}
En m.admin_sidemenu.tpl --> themes --> default --> templates --> admin_mods --> m.admin_sidemenu.tpl
Al final agregar:
<h4>Utilidades</h4>
<ul class="cat-list">
<li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/nicks_reserved">Reservar Nicks</a></span></li>
</ul>
Y subir esta carpeta
Mega
http://Registrate o inicia tu sesión par... contenido
Google Drive
http://Registrate o inicia tu sesión par... contenido
Mediafire
http://Registrate o inicia tu sesión par... contenido
Uptobox
http://Registrate o inicia tu sesión par... contenido
4shared
http://Registrate o inicia tu sesión par... contenido
Creditos: tutan-kabron
[img]Registrate o inicia tu sesión para ver este contenido[/img]
Todos los días se descargan millones de datos en Internet de forma consciente o inconsciente. Gran parte de ellos representan información personal muy valiosa para el usuarios pero para el ciberdelincuente es un verdadero tesoro.
En este sentido, elegir una contraseña adecuada puede ser complicado para la mayoría ya que el sistema requiere más de ocho caracteres, mayúsculas, minúsculas, números y símbolos, entre otros requisitos, para evitar el ingreso de intrusos.
Y es que intentando poner una contraseña lo más segura posible, los usuarios casi siempre olvidan qué combinación están usando. En este contexto, la firma de ciberseguridad ESET ha revelado las contraseñas menos seguras que ningún usuario debería elegir para sus cuentas personales, y ofrece una serie de consejos para ser “inaccesible” en Internet.
Contraseñas más utilizadas e inseguras del 2021
En 2021, la mayoría de los usuarios de la web eligieron “123456″ (se detectó 1.003.925 veces) como contraseña. Ocho de las diez contraseñas más utilizadas admiten combinaciones numéricas y todas advirtieron que son extremadamente vulnerables a los ciberataques, según el informe.
El segundo lugar es “123456789″ (326.815 veces) y el tercer lugar es “12345″ (154.075 veces). Las únicas contraseñas que no son una combinación de números son “qwerty” (143.513 veces) y “password” (106.217 veces) en las posiciones 4 y 5, respectivamente.
ESET analiza que “cuando se utilizan solo las 20 contraseñas más frecuentes como referencia, los ataques de fuerza bruta suelen tardar menos de un segundo en descifrar las contraseñas”.
La lista completa es la siguiente:
1. 123456 (1003925 veces que se detectó la contraseña)
2. 123456789 (326815)
3. 12345 (154075)
4. qwerty (143513)
5. password (106217)
6. 12345678 (103500)
7. 111111 (85937)
8. 123123 (85158)
9. 1234567890 (62649)
10. 1234567 (54441)
11. qwerty123 (51725)
12. 000000 (49286)
13. 1q2w3e (45459)
14. aa12345678 (42703)
15. abc123 (42532)
16. password1 (40939)
17. 1234 (40244)
18. qwertyuiop (38013)
19. 123321 (37380)
20. password123 (34061)
Contraseñas en algunos países de Latinoamérica
El informe brinda la opción de filtrar las contraseñas más populares por país, incluidos datos de varios países de América Latina, como Brasil, Chile, Colombia o México. Es importante recalcar que varias contraseñas que son únicas para cada país siguen un patrón que se repite en el resto, como nombres de países o versiones en idiomas locales de la misma contraseña.
De hecho, las coincidencias más habituales de los cuatro países son las primeras contraseñas en la lista de los mismos cuatro. Por otro lado, el nombre de una persona, equipo de fútbol o país es común en países de la región.
Si está utilizando una de estas contraseñas para proteger alguna de sus cuentas, se recomienda que la cambie lo antes posible y que se tome unos minutos para leer estos consejos y evitar errores.
“Considere usar una frase como contraseña única para cada una de sus cuentas en línea, lo que haría más difícil o incluso imposible descifrarla. También, evite caer en otros malos hábitos relacionados con la creación y el uso de contraseñas, como la reutilización de contraseñas para diferentes servicios”, explica Cecilia Pastorino, especialista en Seguridad Informática del Laboratorio de Investigación de ESET Latinoamérica.
Recuerde que los ciberdelincuentes suelen utilizar ataques de fuerza bruta para descubrir credenciales en todo tipo de servicios y derechos de acceso disponibles en internet. Si los usuarios cometen el doble error de reutilizar esas mismas contraseñas para acceder a otros servicios, el riesgo es aún mayor. Al descifrar un acceso, los atacantes pueden obtener las claves de otros servicios.
Con credenciales de propiedad, los ciberdelincuentes a menudo intentan venderlas en foros de la web oscura y son adquiridos por otros delincuentes para algún tipo de campaña maliciosa.
[img]Registrate o inicia tu sesión para ver este contenido[/img]
A sus 30 años, el lateral derecho Frank Fabra se mantiene en Boca Juniors como uno de los actuales referentes del plantel y es habitual titular en el esquema utilizado por Sebastián Battaglia. Pese a ello cada que se aproxima una temporada de fichajes, el colombiano suena como una de las posibles salidas del equipo ‘xeneize’.
El representante del ex Deportivo Cali e Independiente Medellín habló en una emisora argentina sobre el futuro de Fabra, desmintiendo rumores de su posible salida y lo feliz que se encuentra este en el equipo de Buenos Aires:
“Frank Fabra tuvo altibajos y ahora recuperó el ritmo, el juego y el ánimo. Hablé con el Consejo de Fútbol y no tienen intenciones de venderlo. Hay algunas ofertas y se charlaran con ellos. Nosotros trabajamos en conjunto para que todas las partes estén conforme”
Martín Aráoz también reveló que la cláusula de recesión del contrato del defensor es bastante alta por lo que podría ser un impedimento para que se concrete una transferencia a futuro:
“A Fabra le queda un año y medio o dos años, la cláusula es alta, pero de llegar una oferta nos sentaremos a hablar. Frank tiene una buena relación con la dirigencia, con Juan Román Riquelme. Veremos qué decisiones deportivas se toman en Boca Juniors”.
Desde que llegó a Boca Juniors en 2016, Fabra ha jugado 137 partidos en los que ha anotado 11 goles y realizado 18 asistencias. Además, acumula cinco títulos, todos por torneos en Argentina. Por ahora, el nacido en Nechi, Antioquia le restan dos años de contrato.
El próximo partido será el sábado 4 de diciembre ante Arsenal de Sarandí, aunque el campeón en esta edición del torneo fue River Plate, Boca Juniors busca asegurar su participación en la Copa Libertadores 2022, para ello necesitará un triunfo ante el equipo del ‘viaducto’. Luego jugará ante Talleres de Córdoba por el título de Copa Argentina.
La decisión que tomó Boca tras la intoxicación de Zambrano, Cardona y Villa
La sorpresa de la suplencia de Carlos Zambrano, Edwin Cardona y Sebastián Villa en el encuentro postergado por la lluvia ante Newell’s fue, en realidad, una media sanción. Alertado por un acto de indisciplina durante las horas libres que tuvo el plantel de Boca entre el mediodía y la noche del lunes, cuando volvieron a concentrarse en un hotel de Puerto Madero, Sebastián Battaglia decidió borrarlos del once titular aunque en el segundo tiempo hizo ingresar a los colombianos por necesidad futbolística. Ahora el cuerpo técnico tomó otra decisión de cara a la recta final del año.
El grupo de “intoxicados”, término que utilizó el DT para referirse a la supuesta indisposición que les impidió jugar desde el minuto cero contra la Lepra, formará parte de la lista de concentrados para el próximo partido por la Liga Profesional ante Arsenal en Sarandí (este sábado desde las 17). Este compromiso será la previa a la final de Copa Argentina contra Talleres de Córdoba en Santiago del Estero, del miércoles 8 de diciembre. Los futbolistas que quedaron en el ojo de la tormenta van a ser tenidos en cuenta en los últimos cotejos de 2021. ¿Y después?
Algunos referentes no están muy conformes con la actitud de sus compañeros. Y se sobreentiende que el Consejo de Fútbol, desde donde congelaron todas las negociaciones por renovaciones de contrato para darle prioridad y hacer foco en lo deportivo, tampoco. Para citar un ejemplo, en su momento se compararon las situaciones de Carlos Izquierdoz, quien se negó a disputar los Juegos Olímpicos con la Selección Sub 23 (Fernando Batista le había comunicado su deseo de tenerlo como uno de los mayores) para estar al 100% en la serie de octavos de final de Libertadores ante Atlético Mineiro, y Edwin Cardona, que con un avión privado puesto a disposición optó por tomarse vacaciones en Colombia tras disputar la Copa América, motivo por el cual se ausentó en esa fase.

