-
Cómo funcionan las Mision...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-14-2026, 09:46 PM
» Respuestas: 0
» Vistas: 95 -
V6 Original/Dark/Memes (A...
Foro: Diseños Terminados
Último mensaje por: carlos007r
06-14-2026, 11:08 AM
» Respuestas: 26
» Vistas: 6,348 -
V5
Foro: Diseños Terminados
Último mensaje por: Aeikox
06-13-2026, 12:16 AM
» Respuestas: 8
» Vistas: 1,449 -
Risus 1.3 Actualizado jQu...
Foro: Risus 1.3
Último mensaje por: Tronlar
06-12-2026, 10:45 PM
» Respuestas: 55
» Vistas: 10,668 -
Preguntas Frecuentes y So...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 06:17 PM
» Respuestas: 0
» Vistas: 73 -
Cómo registrar tu comunid...
Foro: Guías y Tutoriales
Último mensaje por: Tronlar
06-12-2026, 05:32 PM
» Respuestas: 0
» Vistas: 61 -
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: 62 -
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: 88
- Mensajes del foro:1,957
- Temas del foro:614
- Miembros:1,037
- Último miembro:go881net1
Capturas
Ejecutar esta consulta
ALTER TABLE `p_categorias` ADD `c_staff` ENUM( '0', '1' ) NOT NULL
En header.php
Buscar:
// Mensajes
$smarty->assign('tsMPs',$tsMP->mensajes);
Debajo agregar:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM p_categorias '.(!$tsUser->permisos['catfp'] ? 'WHERE c_staff = \'0\'' : '').' ORDER BY c_orden') or exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
$smarty->assign('tsCats', result_array($query));
En c.admin.php --> inc --> class --> c.admin.php
Buscar 2 veces (Linea 666 y 746):
'goaf' => $_POST['global-antiflood'],
Debajo agregar:
'catfp' => $_POST['global-staffcats'],
Buscar:
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_categorias` SET c_nombre = \'' . $tsCore->setSecure($c_nombre) .
'\', c_seo = \'' . $tsCore->setSecure($tsCore->setSEO($c_nombre, true)) . '\', c_img = \'' .
$tsCore->setSecure($cimg) . '\' WHERE cid = \'' . (int)$cid . '\''))
Reemplazar por:
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_categorias` SET c_nombre = \'' . $tsCore->setSecure($c_nombre) .
'\', c_seo = \'' . $tsCore->setSecure($tsCore->setSEO($c_nombre, true)) . '\', c_img = \'' .
$tsCore->setSecure($cimg) . '\', c_staff = \'' .($_POST['c_staff'] == 'on' ? 1 : 0).'\' WHERE cid = \'' . (int)$cid . '\''))
Buscar:
if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_categorias` (`c_orden`, `c_nombre`, `c_seo`, `c_img`) VALUES (\'' .
$orden . '\', \'' . $c_nombre . '\',\'' . $tsCore->setSEO($c_nombre, true) . '\', \'' .
$cimg . '\')'))
Reemplazar por:
if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_categorias` (`c_orden`, `c_nombre`, `c_seo`, `c_img`, `c_staff`) VALUES (\'' .
$orden . '\', \'' . $c_nombre . '\',\'' . $tsCore->setSEO($c_nombre, true) . '\', \'' .
$cimg . '\', \'' . ($_POST['c_staff'] == 'on' ? 1 : 0) . '\')'))
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
$start = $tsCore->setPageLimit($tsCore->settings['c_max_posts'],false,$posts['total']);
$lastPosts['pages'] = $tsCore->getPages($posts['total'], $tsCore->settings['c_max_posts']);
Debajo agregar:
if(!$tsUser->permisos['catfp']){ $c_staff = '&& c.c_staff = \'0\''; }
Buscar:
$query = 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\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start);
Reemplazar por:
$query = 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, c.c_staff 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\'').' '.$c_where.' '.$s_where.' '.$c_staff.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start);
Buscar:
// CATEGORIAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_nombre, c.c_seo FROM p_categorias AS c WHERE c.cid = \''.$postData['post_category'].'\'');
$postData['categoria'] = db_exec('fetch_assoc', $query);
Reemplazar por:
// CATEGORIAS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.c_nombre, c.c_seo, c.c_staff FROM p_categorias AS c WHERE c.cid = \''.$postData['post_category'].'\'');
$postData['categoria'] = db_exec('fetch_assoc', $query); if($postData['categoria']['c_staff'] != '0' && !$tsUser->permisos['catfp']) return array('deleted','Oops! No tienes permisos para ver este post.'); $postData['c_staff'] = !!$postData['categoria']['c_staff'];
En m.admin_rangos.tpl --> themes --> default --> templates --> admin_mods --> m.admin_rangos.tpl
Buscar:
<input type="checkbox" id="gorpap" name="global-revisarposts" {if $tsRango.permisos.gorpap}checked{/if} /><label style="font-weight:bold;" for="gorpap">Revisar Posts</label><label for="gorpap"> Si marca esto, cuando publiquen un post, antes de ser público serán revisados.</label>
<br /><hr>
Debajo agregar:
<input type="checkbox" id="catfp" name="global-staffcats"{if $tsRango.permisos.catfp} checked{/if} /><label style="font-weight:bold;" for="catfp">Ver categorías de staff</label><label for="catfp"> Si marca esto, el rango podrá acceder a los posts realizados en las categorías para staff.</label>
<br /><hr>
En m.admin_cats.tpl --> themes --> default --> templates --> admin_mods --> m.admin_cats.tpl
Buscar 2 veces (Linea 67 y 94):
<dl>
<dt><label for="cat_name">Nombre de la categoría:</label></dt>
<dd><input type="text" id="cat_name"name="c_nombre" value="{$tsCat.c_nombre}" /></dd>
</dl>
Debajo agregar:
<dl>
<dt><label for="c_staff">Categoría solo visible por el staff?:</label></dt>
<dd><input type="checkbox" name="c_staff" /></dd>
</dl>
En m.agregar_form.tpl --> themes --> default --> templates --> modules --> m.agregar_form.tpl
Buscar:
{foreach from=$tsConfig.categorias item=c}
Reemplazar por:
{foreach from=$tsCats item=c}
En m.home_last_posts.tpl --> themes --> default --> templates --> modules --> m.home_last_posts.tpl
Buscar:
<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}" >
Reemplazar por:
<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.c_staff == 1} background-color:#FFBF9C;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
En m.posts_content.tpl --> themes --> default --> templates --> modules --> m.posts_content.tpl
Buscar:
<span>
{$tsPost.post_body}
</span>
Arriba agregar:
{if $tsPost.c_staff == 1} <div class="emptyData">Atención: Este post es solo visible para el staff, no reveles el contenido del mismo.</div> {/if}
En head_categorias.tpl --> themes --> default --> templates --> sections --> head_categorias.tpl
Buscar:
{foreach from=$tsConfig.categorias item=c}
Reemplazar por:
{foreach from=$tsCats item=c}
Creditos: Alan
Descripción
Este mod da la posibilidad de poder loguearse como oculto sin ser añadido al listado de usuarios online ni mostrar que está online en perfil, posts, etc.
Solo moderadores y administradores podrán ver que está online desde la sección de usuarios online.
Demo
http://Registrate o inicia tu sesión par... contenido
Capturas
Ejecutar esta consulta
ALTER TABLE `u_miembros` ADD `user_hidden` ENUM( '0', '1' ) NOT NULL
En c.user.php --> inc --> class --> c.user.php
Buscar:
// COMPROBAMOS SI TENEMOS QUE ASIGNAR MEDALLAS
$this->DarMedalla();
Debajo agregar:
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_hidden = \''.($_POST['anon'] == 'true' ? 1 : 0).'\' WHERE user_id = \''.$data['user_id'].'\'');
Buscar:
public function getVCard($user_id){
# GLOBALES
global $tsCore;
# LOCALES
$is_online = (time() - ($tsCore->settings['c_last_active'] * 60));
$is_inactive = (time() - (($tsCore->settings['c_last_active'] * 60) * 2)); // DOBLE DEL ONLINE
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_mensaje, p.p_sitio FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
$data = db_exec('fetch_assoc', $query);
// STATS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_puntos, r.r_name, r.r_color, r.r_image FROM u_miembros AS u LEFT JOIN u_rangos AS r ON u.user_rango = r.rango_id WHERE user_id = \''.(int)$user_id.'\' LIMIT 1');
$data['stats'] = db_exec('fetch_assoc', $query);
$q1 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) AS p FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\''));;
$q2 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(cid) AS c FROM p_comentarios WHERE c_user = \''.(int)$user_id.'\' && c_status = \'0\''));;
$q3 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(follow_id) AS s FROM u_follows WHERE f_id = \''.(int)$user_id.'\' && f_type = \'1\''));
$data['stats']['user_posts'] = $q1[0];
$data['stats']['user_comentarios'] = $q2[0];
$data['stats']['user_seguidores'] = $q3[0];
// STATUS
if($data['user_lastactive'] > $is_online) $data['status'] = array('t' => 'Online', 'css' => 'online');
elseif($data['user_lastactive'] > $is_inactive) $data['status'] = array('t' => 'Inactivo', 'css' => 'inactive');
else $data['status'] = array('t' => 'Offline', 'css' => 'offline');
// SIGUIENDO
$data['follow'] = $this->iFollow($user_id);
//
return $data;
}
Reemplazar por:
public function getVCard($user_id){
# GLOBALES
global $tsCore;
# LOCALES
$is_online = (time() - ($tsCore->settings['c_last_active'] * 60));
$is_inactive = (time() - (($tsCore->settings['c_last_active'] * 60) * 2)); // DOBLE DEL ONLINE
// INFORMACION GENERAL
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_mensaje, p.p_sitio, u.user_hidden FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
$data = db_exec('fetch_assoc', $query);
// STATS
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_puntos, r.r_name, r.r_color, r.r_image FROM u_miembros AS u LEFT JOIN u_rangos AS r ON u.user_rango = r.rango_id WHERE user_id = \''.(int)$user_id.'\' LIMIT 1');
$data['stats'] = db_exec('fetch_assoc', $query);
$q1 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) AS p FROM p_posts WHERE post_user = \''.(int)$user_id.'\' && post_status = \'0\''));;
$q2 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(cid) AS c FROM p_comentarios WHERE c_user = \''.(int)$user_id.'\' && c_status = \'0\''));;
$q3 = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(follow_id) AS s FROM u_follows WHERE f_id = \''.(int)$user_id.'\' && f_type = \'1\''));
$data['stats']['user_posts'] = $q1[0];
$data['stats']['user_comentarios'] = $q2[0];
$data['stats']['user_seguidores'] = $q3[0];
// STATUS
if($data['user_lastactive'] > $is_online && $data['user_hidden'] != '1') $data['status'] = array('t' => 'Online', 'css' => 'online');
elseif($data['user_lastactive'] > $is_inactive && $data['user_hidden'] != '1') $data['status'] = array('t' => 'Inactivo', 'css' => 'inactive');
else $data['status'] = array('t' => 'Offline', 'css' => 'offline');
// SIGUIENDO
$data['follow'] = $this->iFollow($user_id);
//
return $data;
}
Buscar:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, p.user_pais, p.user_sexo, p.p_avatar, p.p_mensaje, u.user_rango, u.user_puntos, u.user_comentarios, u.user_posts, u.user_lastactive, u.user_baneado, r.r_name, r.r_color, r.r_image FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE u.user_activo = \'1\' && u.user_baneado = \'0\' '.$w_online.' '.$w_avatar.' '.$w_sex.' '.$w_pais.' '.$w_rango.' ORDER BY u.user_id DESC LIMIT '.$pages['limit']);
Reemplazar por:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, p.user_pais, p.user_sexo, p.p_avatar, p.p_mensaje, u.user_rango, u.user_puntos, u.user_comentarios, u.user_posts, u.user_lastactive, u.user_baneado, r.r_name, r.r_color, r.r_image, u.user_hidden FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE u.user_activo = \'1\' && u.user_baneado = \'0\' '.$w_online.' '.$w_avatar.' '.$w_sex.' '.$w_pais.' '.$w_rango.' '.($this->is_admod != '1' ? '&& u.user_hidden = \'0\'' : '').' ORDER BY u.user_id DESC LIMIT '.$pages['limit']);
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');
Reemplazar por:
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma, u.user_hidden FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');
Buscar:
if($data['user_lastactive'] > $is_online) $data['status'] = array('t' => 'Usuario Online', 'css' => 'online');
elseif($data['user_lastactive'] > $is_inactive) $data['status'] = array('t' => 'Usuario Inactivo', 'css' => 'inactive');
Reemplazar por:
if($data['user_lastactive'] > $is_online && $data['user_hidden'] != '1') $data['status'] = array('t' => 'Usuario Online', 'css' => 'online');
elseif($data['user_lastactive'] > $is_inactive && $data['user_hidden'] != '1') $data['status'] = array('t' => 'Usuario Inactivo', 'css' => 'inactive');
En c.user.php --> inc --> class --> c.user.php
Buscar:
$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.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.'\'');
Reemplazar por:
$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.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs, u.user_hidden FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');
En perfil.php --> inc --> php --> perfil.php
Buscar:
if($tsInfo['user_lastactive'] > $is_online) $tsInfo['status'] = array('t' => 'Online', 'css' => 'online');
elseif($tsInfo['user_lastactive'] > $is_inactive) $tsInfo['status'] = array('t' => 'Inactivo', 'css' => 'inactive');
Reemplazar por:
if($tsInfo['user_lastactive'] > $is_online && $tsInfo['user_hidden'] != '1') $tsInfo['status'] = array('t' => 'Online', 'css' => 'online');
elseif($tsInfo['user_lastactive'] > $is_inactive && $tsInfo['user_hidden'] != '1') $tsInfo['status'] = array('t' => 'Inactivo', 'css' => 'inactive');
En acciones.js --> themes --> default --> js --> acciones.js
Buscar:
var remember = ($('#rem').is(':checked')) ? 'true' : 'false';
params = 'nick='+encodeURIComponent($(el['nick']).val())+'&pass='+encodeURIComponent($(el['pass']).val())+'&rem='+remember;
Reemplazar por:
var remember = ($('#rem').is(':checked')) ? 'true' : 'false';
var anon = ($('#anon').is(':checked')) ? 'true' : 'false';
params = 'nick='+encodeURIComponent($(el['nick']).val())+'&pass='+encodeURIComponent($(el['pass']).val())+'&rem='+remember+'&anon='+anon;
En t.usuarios.tpl --> themes --> default --> templates --> t.usuarios.tpl
Buscar:
<h4 style="padding:0"><span class="rango qtip" style="background-image:url({$tsConfig.default}/images/icons/ran/{$u.rango.image});" title="{$u.rango.title}"> </span> <a href="{$tsConfig.url}/perfil/{$u.user_name}" style="color:#{$u.rango.color}" >{$u.user_name}</a></h4>
Reemplazar por:
<h4 style="padding:0"><span class="rango qtip" style="background-image:url({$tsConfig.default}/images/icons/ran/{$u.rango.image});" title="{$u.rango.title}"> </span> <a href="{$tsConfig.url}/perfil/{$u.user_name}" style="color:#{$u.rango.color}" >{$u.user_name}{if $u.user_hidden == '1'} (anónimo){/if}</a></h4>
En p.perfil_info.tpl --> themes --> default --> templates --> t.php_files --> p.perfil_info.tpl
Buscar:
<li><label>Última vez activo</label><strong>{$tsPerfil.user_lastactive|fecha}</strong></li>
Reemplazar por:
{if $tsInfo.user_hidden == '0'}
<li><label>Última vez activo</label><strong>{$tsPerfil.user_lastactive|fecha}</strong></li>
{/if}
En head_menu.tpl --> themes --> default --> templates --> sections --> head_menu.tpl
Buscar:
<input type="checkbox" id="rem" name="rem" value="true" checked="checked" /> <label for="rem">Recordar usuario</label>
Debajo agregar:
<br /><input type="checkbox" id="anon" name="anon" value="false" /> <label for="anon">Loguearse anónimamente</label>
Creditos: Alan
Captura
En p.notificaciones.ajax.tpl --> themes --> default --> templates --> t.php_files --> p.notificaciones.ajax.tpl
Reemplazar contenido por:
{if $tsData}
{foreach from=$tsData item=noti}
<li style="cursor:default;overflow:hidden;" {if $noti.unread > 0}class="unread"{/if}>
<span class="floatL" ><a class="ectip" href="{$tsConfig.url}/perfil/{$noti.user}" title="">
<img class="ectip" style="float:left;background:white;padding:1px;border: 1px solid rgb(235, 235, 235);margin: 0px 4px 0px -2px;" height="35" width="35" title="{$noti.user}" src="{$tsConfig.url}/files/avatar/{$noti.avatar}"/>
</a>
{if $noti.total == 1}<a href="{$tsConfig.url}/perfil/{$noti.user}" title="{$noti.user}">{$noti.user}</a>{/if} {$noti.text} <a title="{$noti.ltit}" class="obj" href="{$noti.link}">{$noti.ltext}</a><br><span class="monac_icons ma_{$noti.style}"></span><span style="color:gray;">{$noti.date|fecha}</span>
</span>
</li>
{/foreach}
{else}
<li style="padding:10px;"><b>No hay notificaciones</b></li>
{/if}
Creditos: Kmario19
Captura
En c.cuenta.php --> inc --> class --> c.cuenta.php
Buscar:
$data['p_configs'] = unserialize($data['p_configs']);
Debajo agregar:
// SEGURIDAD VISITADOS
if($data['p_configs']['pvis'] == 0){
$data['can_pvis'] = false;
}elseif($data['p_configs']['pvis'] == 3 && ($this->iFollow($user_id) || $tsUser->is_admod)){
$data['can_pvis'] = true;
}elseif($data['p_configs']['pvis'] == 4 && ($this->yFollow($user_id) || $tsUser->is_admod)){
$data['can_pvis'] = true;
}elseif($data['p_configs']['pvis'] == 5 && $tsUser->is_member){
$data['can_pvis'] = true;
}elseif($data['p_configs']['pvis'] == 6){
$data['can_pvis'] = true;
}
// POSTS VISITADOS
if($data['can_pvis'] || $data['user_id'] == $tsUser->uid) {
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `last_posts_visited` FROM `u_portal` WHERE `user_id` = \''.(int)$user_id.'\' LIMIT 1');
$dato = db_exec('fetch_assoc', $query);
$visited = unserialize($dato['last_posts_visited']);
krsort($visited);
foreach($visited as $key => $id){
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_title, c.c_seo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = 0 AND p.post_id = '.$id.' LIMIT 1');
$data['p_visitados'][] = db_exec('fetch_assoc', $query);
if(count($data['p_visitados']) == 10) break;
}
}
Buscar:
$see_hits = ($_POST['last_hits'] == 1 || $_POST['last_hits'] == 2) ? 0 : $_POST['last_hits'];
Debajo agregar:
$see_pvis = ($_POST['last_pvis'] == 1 || $_POST['last_pvis'] == 2) ? 0 : $_POST['last_pvis'];
Una linea abajo al lado de:
'hits' => $see_hits
Agregar:
, 'pvis' => $see_pvis
En m.perfil_sidebar.tpl --> themes --> default --> templates --> modules --> m.perfil_sidebar.tpl
Al final agregar:
{if $tsInfo.can_pvis || $tsInfo.user_id == $tsUser->uid}
<div class="widget w-medallas clearfix">
<div class="title-w clearfix">
<h3>Últimos posts visitados por {$tsInfo.user_name}</h3>
</div>
{if $tsInfo.p_visitados}
<ul class="clearfix">
{foreach from=$tsInfo.p_visitados item=v key=i}
<li>
<strong style="color: #36F;">{if $i <= 8}0{/if}{$i+1}. </strong>
<a style="" href="{$tsConfig.url}/posts/{$v.c_seo}/{$v.post_id}/{$v.post_title|seo}.html" class="size13" title="{$v.post_title}">{$v.post_title|truncate:45}</a>
</li>
{/foreach}
</ul>
{else}
<div class="emptyData">{if $tsInfo.user_id == $tsUser->uid}No has{else}{$tsInfo.user_name} no ha{/if} visitado ningún post.</div>
{/if}
</div>
{/if}
En m.cuenta_config.tpl --> themes --> default --> templates --> modules --> m.cuenta_config.tpl
Buscar:
{if !$tsUser->is_admod}
{if $tsPerfil.p_configs.rmp != 8}
Arriba agregar:
<div class="field">
<label>ver últimos posts visitados?</label>
<div class="input-fake">
<select name="last_pvis" class="cuenta-save-7">
{foreach from=$tsPrivacidad item=p key=i}
{if $i != 1 && $i != 2}<option value="{$i}" {if $tsPerfil.p_configs.pvis == $i}selected{/if}>{$p}</option>{/if}
{/foreach}
</select>
</div>
</div>
Creditos: Kmario19
Capturas
En admin.php --> inc --> php --> admin.php
Buscar:
if($action == ''){
Arriba agregar:
$smarty->assign("totalNicks",$tsAdmin->totalNicks());
En c.admin.php --> inc --> class --> c.admin.php
Buscar:
function getInst()
Arriba agregar:
/*
totalNicks()
*/
function totalNicks() {
//
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM u_nicks WHERE estado = \'0\'');
list($total) = db_exec('fetch_row', $query);
//
return $total;
}
En m.admin_sidemenu.tpl --> themes --> default --> templates --> admin_mods --> m.admin_sidemenu.tpl
Buscar:
Cambios de Nicks
Al lado agregar:
{if $totalNicks > 0}: <font color="red">{$totalNicks}</font>{/if}
Creditos: Kmario19
Descripción
No permite a los usuarios enviar mensajes a los administradores.
Captura GIF
En c.mensaje.php --> inc --> class --> c.mensaje.php
Buscar:
//BLOQUEADO
if (!$tsUser->is_admod) {
$block = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid FROM u_bloqueos WHERE (b_user = \'' . $user_id . '\' && b_auser = \'' . $tsUser->uid . '\') || (b_user = \'' . $tsUser->uid . '\' && b_auser = \'' . $user_id . '\') LIMIT 1'));
if ($block) die('No puedes enviarle mensajes a ' . $para);
Opción 1
Debajo agregar:
//BLOQUEO DE MENSAJES A TODOS LOS ADMINISTRADORES
$mpadmin = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_rango FROM u_miembros WHERE user_id = \''.(int)$user_id.'\' AND user_rango = 1 LIMIT 1'));
if($mpadmin && !$tsUser->is_admod) die('No puedes enviarle mensajes a los Administradores.');
Opción 2
Debajo agregar:
//BLOQUEO DE MENSAJES AL PRIMER ADMINISTRADOR
$mpadmin = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_rango FROM u_miembros WHERE user_id = \''.(int)$user_id.'\' AND user_rango = 1 LIMIT 1'));
if($tsUser->getUserID($para)==1 && !$tsUser->is_admod) die('No puedes enviarle mensajes a ' .$para);
Creditos: Vellenger
Descripción
Limita por IP a los visitantes a ver 3 post.
Captura
Ejecutar esta consulta
CREATE TABLE IF NOT EXISTS `visitors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(19) NOT NULL,
`id_post` int(11) NOT NULL,
`total` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
// DATOS DEL POST
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.* ,m.*, u.user_id FROM `p_posts` AS c LEFT JOIN `u_miembros` AS u ON c.post_user = u.user_id LEFT JOIN `u_perfil` AS m ON c.post_user = m.user_id WHERE `post_id` = \''.(int)$post_id.'\' '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' LIMIT 1');
//
$postData = db_exec('fetch_assoc', $query);
Debajo agregar:
if(!$tsUser->is_member){
$ip = $tsCore->getIP();
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT ip,total FROM visitors WHERE ip =\''.$ip.'\'');
$dato = db_exec('fetch_assoc', $query);
if($dato['ip']==$ip){
db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE visitors SET total = total + 1 WHERE ip = \''.$ip.'\'');
}else{
$sql = "INSERT INTO visitors (ip,id_post,total) VALUES ('{$ip}','{$post_id}',1)";
$result = db_exec(array(__FILE__, __LINE__), 'query', $sql);
}
}
Buscar:
if(!empty($tsDraft['b_title'])) return array('deleted','Oops! Este post no existe o fue eliminado.');
else return array('deleted','Oops! El post fue eliminado!');
}
Debajo agregar:
elseif($dato['total'] > 2) return array('deleted','Deberás registrarte para continuar en los posts <a href="javascript:registro_load_form()">Registrate!</a>');
Creditos: TRON
Captura GIF
Ejecutar esta consulta
CREATE TABLE IF NOT EXISTS `u_inicio` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` int(11) NOT NULL,
`read` int(11) NOT NULL,
`fecha` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCrEMENT=1 ;
En c.user.php --> inc --> class --> c.user.php
Buscar:
// Cargamos la información del usuario
$this->loadUser(true);
Debajo agregar:
///////////MOD TRON////////////
$time=time();
$sql= "INSERT INTO u_inicio (user,fecha) VALUES ('{$data['user_id']}','{$time}')";
$result = db_exec(array(__FILE__, __LINE__), 'query', $sql);
En main_header.tpl --> themes --> default --> templates --> sections --> main_header.tpl
Buscar:
</head>
Arriba agregar:
{if $tsUser->is_member}
{literal}
<script>
$(document).ready(function() {
$("#recibeusuario").load("/inc/php/fichero.php");
var refreshId = setInterval(function() {
$("#recibeusuario").load('/inc/php/fichero.php');
}, 4000);
});
</script>
{/literal}
{/if}
Buscar:
<div id="cuerpocontainer">
Debajo agregar:
{if $tsUser->is_member}
<div id="recibeusuario"></div>
{/if}
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
Nota: No tiene diseño, tienen que adaptarselo al diseño de tu tema
Creditos: TRON
Captura
En c.posts.php --> inc --> class --> c.posts.php
Buscar:
// Stickys
if($sticky) {
Agregar arriba:
if(isset($_GET['initial'])) {
$s_initial = 'AND p.post_title LIKE \''.$tsCore->setSecure($_GET['initial']).'%\'';
}
Buscar unas lineas más abajo (272)
'.$s_where)
Reemplazar por:
'.$s_where.' '.$s_initial)
Buscar unas lineas más abajo (279)
'.$s_where.'
Reemplazar por:
'.$s_where.' '.$s_initial.'
En posts.php --> inc --> php --> posts.php
Buscar:
// DO <= PARA EL MENU
$smarty->assign("tsDo",$_GET['do']);
Debajo agregar:
$tsFilter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'];
$smarty->assign("tsFilter",$tsFilter);
$smarty->assign("tsInitial",$_GET['initial']);
Este es el combobox select para que puedan colocarlo donde quieran en su web y darle un diseño adecuado:
<select onchange="document.location.href='?initial='+this.value">
<option value="">Todas</option>
{foreach from=$tsFilter item=f}
<option value="{$f}" {if $tsInitial == $f}selected="selected"{/if}>{$f}</option>
{/foreach}
</select>
Para agregar la paginación en el archivo m.home_last_posts --> themes --> default --> templates --> modules --> m.home_last_posts al lado de:
pagina{$tsPages.prev}
y
pagina{$tsPages.next}
Agregar:
{if $tsInitial}?initial={$tsInitial}{/if}
Creditos: Kmario19
Captura
En c.posts.php --> inc --> class --> c.posts.php
Antes de la última llave ( } ) agregar:
//TAGS RELEVANTES
function getTags() {
$limit_tags = 15;
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_tags FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id WHERE p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\' ORDER BY RAND() LIMIT '.$limit_tags);
$data = result_array($query);
//
foreach($data as $i => $val) {
$tags = explode(',', $val['post_tags']);
$data[$i]['name'] = $tags[rand(0, count($tags))];
$data[$i]['size'] = rand(1,5);
}
return $data;
}
En posts.php --> inc --> php --> posts.php
Buscar:
$smarty->assign("tsStats",$tsTops->getStats());
Debajo agregar:
// TAGS RELEVANTES
$smarty->assign("tsTags",$tsPosts->getTags());
En t.home.tpl --> themes --> default --> templates --> t.home.tpl
Donde quieran agregan esto:
{include file='modules/m.home_tags_relevantes.tpl'}
En estilo.css --> themes --> default --> estilo.css
Al final agregar:
.tag-size1{font-size:180%;line-height:27px;font-weight:700}.tag-size2{font-size:150%;line-height:22px;opacity:.8}.tag-size3{font-size:125%;line-height:19px;opacity:.7}.tag-size4{font-size:100%;opacity:.6}.tag-size2:hover,.tag-size3:hover,.tag-size4:hover{opacity:1}
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
Creditos: Kmario19

