Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Buscar en La Comunidad

Showing results for tags 'Complementos-Mod'.



More search options

  • Search By Tags

    Añade tags separandolos por comas.
  • Search By Author

Tipo de Contenido


Foros

  • El núcleo de PHPost
    • Novedades e información
    • Off Topic
    • Presentaciones
  • PHPost Risus
    • Actualizaciones
    • Versión 1.1
    • Versión 1.2
  • La esquina
    • Rincón del PC
    • Rincón del móvil
  • Next [last version]'s Fix's
  • Next [last version]'s Theme
  • Next [last version]'s Notas!
  • Bootstrap's TRABAJOS
  • Bootstrap's EL CLUB
  • Bootstrap's PRESENTACIONES
  • Bootstrap's OTROS FRAMEWORKS
  • Bootstrap's DERIVACIONES
  • Next [last version]'s Bugs
  • Bootstrap's WEBS CON BOOTSTRAP
  • Bootstrap's TEMAS TERMINADOS
  • Bootstrap's TEMAS EN VENTA
  • Juegos de Steam Gratis's Activos
  • Bootstrap's MODS EN DESARROLLO
  • Bootstrap's MODS EN VENTA
  • Bootstrap's MODS TERMINADOS
  • Bootstrap's TEMAS EN DESARROLLO
  • Juegos de Steam Gratis's Finalizados
  • Bootstrap's OFF-TOPIC
  • Bootstrap's MODS PARA OTROS SCRIPTS
  • Bootstrap's TEMAS PARA OTROS SCRIPTS
  • Escuela de Actualización de Risus Phpost's Presentación
  • Escuela de Actualización de Risus Phpost's PHP 7.0+
  • Escuela de Actualización de Risus Phpost's Smarty
  • Escuela de Actualización de Risus Phpost's Jquery & JS
  • Escuela de Actualización de Risus Phpost's PHP
  • Escuela de Actualización de Risus Phpost's EXTRAS
  • Escuela de Actualización de Risus Phpost's Web Demo
  • Escuela de Actualización de Risus Phpost's Fix´s y Errores
  • Escuela de Actualización de Risus Phpost's Themes
  • Escuela de Actualización de Risus Phpost's Actualiza2

Calendars

  • Bootstrap's CALENDARIO

Encontramos 10 resultados

  1. ¡Hola a todos! En conjunto con @Tuente , Hoy les traigo un nuevo adelanto a un proyecto de modificación al Script, el cual, les permitirá tener Risus, pero con diseño Material Design (P.R.M.D: INS). Aviso: Este instalador es una parte de nuestro proyecto; Phpost Risus Material Design. Más bien lo publicamos como un "Adelanto", por tal motivo, puede contener unos pequeños bugs o cambios minimos. Un pequeño dato Pronto estamos pensando en publicar una versión de Risus (Tuente y Yo), pero completamente hecha de Material Design. Nuestra idea es revivir Phpost, y buscamos que este proyecto sea más actualizado, como por ejemplo: Con su código y diseño. Por tal motivo, publicamos el instalador, como un adelanto del proyecto. Acá más detalles de porque usar Risus Material Design. [Ver Imagen de los detalles] y al final de la página podrán encontrar el sitio oficial. Además de esa introducción a el proyecto que estamos pensando en hacer, les voy a mencionar algunas funciones del instalador, ya que este tema va dedicado al instalador, tales como: Cambiar el Chmod de los archivos automáticamente. Borrar la carpeta "UPGRADE" e "INSTALL", después de terminar con la instalación. Las últimas versiones de librerías Javascript hasta el momento. Funciones Php que iban a estar obsoletas en un tiempo más , fueron cambiadas a unas nuevas (7.0 +). Les dejare algunas capturas del Instalador ALPHA: http://imgur.com/a/VJ6a0 GRACIAS A TODOS! Versión del instalador de Risus que usa el P.R.M.D: INS. de este adelanto: 1.2.7.000. Versión del instalador de P.R.M.D. De este adelanto: alpha. [Ir al sitio oficial del proyecto] [Descargar Instalador]
  2. Buenas tardes, otra vez lo voy a molestar(? , naa, bueno, eso pienso.. actualize tambien este mod hecho por el mismo creador , credito a : alexander1712 : . comenzemos con la actualizacion: AVISO: Yo estoy usando la V5 de To-Up, pero si quieren ponerlos en Default, tambien pueden, menos en el archivo a.a-sidebar, casi al final de este tema, les paso el codigo para Default! Comenzemos : Busquemos el archivo c.admin.php , esta ubicado en inc/class // PAGINAS $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(*) FROM u_miembros WHERE ' . $where); list($total) = db_exec('fetch_row', $query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . '/admin/rangos?act=list&rid=' . $rid . '&t=' . $type . '', $_GET['s'], $total, $max); // return $data; } Y abajo de eso, pongan este codigo: /****************** ADMINISTRACIÓN DE MUROS ACTUALIZADO ******************/ function GetAdminMuros() { global $tsCore; // $max = 18; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); if($_GET['ty']=='1') //si lo quiere ordenado por autor { $order='m.p_user_pub'; } else { //si lo quiere ordenado por destinatario de la publicacion $order='m.p_user'; } // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT m.pub_id, u.user_id, u.user_name, m.p_date, m.p_body, m.p_ip, m.p_comments, m.p_likes FROM u_muro AS m LEFT JOIN u_miembros AS u ON '.$order.' = u.user_id WHERE m.pub_id > \'0\' ORDER BY pub_id DESC LIMIT ' . $limit); // $data['data'] = result_array($query); // coments list($total) = db_exec('fetch_row', $query); $data['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/admin/muro?", $_GET['s'], $total, $max); // return $data; } function DelAdminMuros($id) { $id = (int) $id; //filtro anti sqli id. db_exec(array(__FILE__, __LINE__), 'query', "delete from u_muro_comentarios where pub_id = $id"); db_exec(array(__FILE__, __LINE__), 'query', "delete from u_muro_likes where obj_type = 1 and pub_id = $id"); db_exec(array(__FILE__, __LINE__), 'query', "delete from u_muro where pub_id = $id"); } function DelAdminMuros_c($id) { $id = (int) $id; //filtro anti sqli id. db_exec(array(__FILE__, __LINE__), 'query', "delete from u_muro_comentarios where cid = $id"); echo show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db'); } function GetAdminMuro_unique($id) { global $tsCore; $max = 18; // MAXIMO A MOSTRAR $limit = $tsCore->setPageLimit($max, true); $id = (int) $id; $query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT pub_id, p_body FROM u_muro WHERE pub_id = $id"); $pararetorno['main'] = db_exec('fetch_array', $query); $query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT * FROM u_muro_comentarios WHERE pub_id = $id"); $pararetorno['data'] = result_array($query); $pararetorno['pages'] = $tsCore->pageIndex($tsCore->settings['url'] . "/admin/muro?act=muro_editar&amp;id=$id&amp;", $_GET['s'], $total, $max); return $pararetorno; } function GetAdminMuro_cunique($id) { $id = (int) $id; $query = db_exec(array(__FILE__, __LINE__), 'query', "SELECT cid, c_body FROM u_muro_comentarios WHERE cid = $id"); return db_exec('fetch_array', $query); } function UPDAdminMuros($id,$corpus) { global $tsCore; $id = (int) $id; //filtramos $corpus = $tsCore->setSecure(($corpus)); //lo recontra re filtramos <img src='http://www.phpost.net/foro/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' /> db_exec(array(__FILE__, __LINE__), 'query', "update u_muro set p_body='$corpus' where pub_id=$id"); } function UPDAdminMuros_c($id,$corpus) { global $tsCore; $id = (int) $id; //filtramos $corpus = $tsCore->setSecure(($corpus)); //lo recontra re filtramos <img src='http://www.phpost.net/foro/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' /> db_exec(array(__FILE__, __LINE__), 'query', "update u_muro_comentarios set c_body='$corpus' where cid=$id"); } Ahora busquen este archivo admin.php , esta ubicado en inc/php // POSTS } elseif($action == 'posts'){ if(!$act) { $smarty->assign("tsAdminPosts",$tsAdmin->GetAdminPosts()); } Y abajo de eso, agregan este codigo: //////////////////////////////////////////////////////////////////// // muros by alexander1712 } elseif($action == 'muro'){ //si estamos en el muro if(!$act) { $smarty->assign("tsAdminMuros",$tsAdmin->GetAdminMuros()); } elseif ($act == 'muro_delete') { //si borramos algo de un muro $tsAdmin->DelAdminMuros($_GET['id']); $smarty->assign("tsAdminMuros",$tsAdmin->GetAdminMuros()); } elseif ($act == 'muro_editar') { //levantar datos y hacer formulario $smarty->assign("tsAdminMurosContent",$tsAdmin->GetAdminMuro_unique($_GET['id'])); } elseif ($act == 'muro_edit2') { //guardar datos $tsAdmin->UPDAdminMuros($_POST['id'],$_POST['cuerpo']); $smarty->assign("tsAdminMuros",$tsAdmin->GetAdminMuros()); } elseif ($act == 'coment_delete') { //borrando comentarios $tsAdmin->DelAdminMuros_c($_GET['id']); $smarty->assign("tsAdminMuros",$tsAdmin->GetAdminMuros()); $act=''; } elseif ($act == 'coment_editar') { //levantar datos y hacer formulario $smarty->assign("tsAdminMurosContent",$tsAdmin->GetAdminMuro_cunique($_GET['id'])); } elseif ($act == 'coment_edit2') { $tsAdmin->UPDAdminMuros_c($_POST['id'],$_POST['cuerpo']); $smarty->assign("tsAdminMuros",$tsAdmin->GetAdminMuros()); $act=''; } //////////////////////////////////////////////////////////////////// ahora busquen este archivo t.admin.tpl , esta ubicado en tutheme/templates, busquen: {include file='admin_mods/m.admin_posts.tpl'} y abajo de eso, agregan este codigo: {elseif $tsAction == 'muro'} {if $tsAct!='muro_editar' && $tsAct!='coment_editar'} {include file='admin_mods/m.admin_muro.tpl'} {elseif $tsAct=='muro_editar'} {include file='admin_mods/m.admin_muro_edit.tpl'} {elseif $tsAct=='coment_editar'} {include file='admin_mods/m.admin_muro_cedit.tpl'} {/if} ahora creen este archivo que sea por tpl. el archivo se tiene que llamar: m.admin_muro.tpl y ahora copian todo el codigo: <div class="boxy-title"> <h3>Administrar Publicaciones en el muro</h3> </div> <div id="res" class="boxy-content" style="position:relative"> {if $tsAct == '' || $tsAct == 'muro_delete' || $tsAct == 'muro_edit2'} {if !$tsAdminMuros.data} <div class="phpostAlfa">No hay publicaciones en los muros.</div> {else} <table cellpadding="0" cellspacing="0" border="0" class="admin_table" width="100%" align="center"> <thead> <th>ID</th> <th><a href="{$tsConfig.url}/admin/muro?ty=1" title="persona que envi&oacute; la publicaci&oacute;n">Autor</a>/<a href="{$tsConfig.url}/admin/muro" title="persona en la que se publico en su muro">Receptor</a></th> <th>Contenido</th> <th>Comentarios</th> <th>Me Gusta</th> <th>Fecha</th> <th>ip</th> <th>Acciones <a id="actionsee" onclick="$('#actionsee').slideUp( 120, 'easeInOutElastic'); $('.right').fadeOut('slow').css('width', '920px').slideDown( 1700, 'easeInOutElastic'); $('.left').slideUp( 1500, 'easeInOutElastic'); $('#moreinfo').slideDown('fast'); "><img src="{$tsConfig.default}/images/icons/details.png" width="14px" height="14px" title="M&aacute;s informaci&oacute;n" /></a></th> </thead> <tbody> {foreach from=$tsAdminMuros.data item=c} <tr id="post_{$c.cid}"> <td>{$c.pub_id}</td> <td><a href="{$tsConfig.url}/perfil/{$c.user_name}" class="hovercard" uid="{$c.user_id}">{$c.user_name}</a></td> <td>{$c.p_body|truncate:50}</td> <td>{$c.p_comments}</td> <td>{$c.p_likes}</td> <td>{$c.p_date|hace:true}</td> <td id="moreinfo1_2"><a href="{$tsConfig.url}/moderacion/buscador/1/1/{$c.p_ip}" class="geoip" target="_blank">{$c.p_ip}</a></td> <td class="admin_actions"> <a href="{$tsConfig.url}/admin/muro?act=muro_editar&id={$c.pub_id}"><img src="{$tsConfig.default}/images/icons/editar.png" title="Editar Publicacion" /></a> <a href="{$tsConfig.url}/admin/muro?act=muro_delete&id={$c.pub_id}"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Publicacion" /></a> </td> </tr> {/foreach} </tbody> <tfoot> <td colspan="8">P&aacute;ginas: {$tsAdminMuros.pages}</td> </tfoot> </table> {/if} {/if} </div> ahora creen este archivo que termine en tpl. el archivo se tiene que llamar : m.admin_muro_cedit.tpl y copien todo el codigo: <center> <div class="form-add-post" > <form action="{$tsConfig.url}/admin/muro?act=coment_edit2" method="post" name="newartist" autocomplete="off"> <ul class="clearbeta"> <li> <label>Comentario</label> <span style="display: none;" class="errormsg"></span> <br /><input type="hidden" value="{$tsAdminMurosContent.cid}" name="id"/><textarea name="cuerpo" tabindex="2" style="min-height:200px; width:600px;" >{$tsAdminMurosContent.c_body}</textarea> </li> </ul> <div class="end-form clearbeta" style="width:600px;"> <center><input tabindex="8" value="Guardar!" name="preview" class="mBtn btnGreen" style="width: auto; margin-left: 5px;" type="submit"></center> </div> </form> </div> </center> ahora creen otro archivo que tenga el formato tpl. y se tiene que llamar: m.admin_muro_edit.tpl y copien todo este codigo: <center> <div class="form-add-post" > <form action="{$tsConfig.url}/admin/muro?act=muro_edit2" method="post" name="newartist" autocomplete="off"> <ul class="clearbeta"> <li> <label>Comentario</label> <span style="display: none;" class="errormsg"></span> <br /><input type="hidden" value="{$tsAdminMurosContent.main.pub_id}" name="id"/><textarea name="cuerpo" tabindex="2" style="min-height:200px; width:600px;" >{$tsAdminMurosContent.main.p_body}</textarea> </li> </ul> <div class="end-form clearbeta" style="width:600px;"> <center><input tabindex="8" value="Guardar!" name="preview" class="mBtn btnGreen" style="width: auto; margin-left: 5px;" type="submit"></center> </div> </form> </div> </center> <table cellpadding="0" cellspacing="0" border="0" class="admin_table" width="100%" align="center"> <thead> <th>ID</th> <th><a href="{$tsConfig.url}/admin/muro?ty=1" title="persona que envi&oacute; la publicaci&oacute;n">Autor</a></th> <th>Comentario</th> <th>Fecha</th> <th>ip</th> <th>Acciones <a id="actionsee" onclick="$('#actionsee').slideUp( 120, 'easeInOutElastic'); $('.right').fadeOut('slow').css('width', '920px').slideDown( 1700, 'easeInOutElastic'); $('.left').slideUp( 1500, 'easeInOutElastic'); $('#moreinfo').slideDown('fast'); "><img src="{$tsConfig.default}/images/icons/details.png" width="14px" height="14px" title="M&aacute;s informaci&oacute;n" /></a></th> </thead> <tbody> {foreach from=$tsAdminMurosContent.data item=c} <tr id="post_{$c.cid}"> <td>{$c.cid}</td> <td><a href="{$tsConfig.url}/perfil/{$c.c_user}" class="hovercard" uid="{$c.c_user}">{$c.c_user}</a></td> <td>{$c.c_body|truncate:50}</td> <td>{$c.c_date|hace:true}</td> <td id="moreinfo1_2"><a href="{$tsConfig.url}/moderacion/buscador/1/1/{$c.p_ip}" class="geoip" target="_blank">{$c.c_ip}</a></td> <td class="admin_actions"> <a href="{$tsConfig.url}/admin/muro?act=coment_editar&id={$c.cid}"><img src="{$tsConfig.default}/images/icons/editar.png" title="Editar Comentario" /></a> <a href="{$tsConfig.url}/admin/muro?act=coment_delete&id={$c.cid}"><img src="{$tsConfig.default}/images/icons/close.png" title="Borrar Comentario" /></a> </td> </tr> {/foreach} </tbody> <tfoot> <td colspan="8">P&aacute;ginas: {$tsAdminMurosContent.pages}</td> </tfoot> </table> ATENCION: LOS 3 ARCHIVOS QUE CREASTES CON TPL. VAN EN TUTHEME/TEMPLATES/ADMIN_MODS. Ahora busquen el archivo a.a-sidebar , se encuentra en V5/templates/b_toup/administracion, busquemos : <li><a {if $tsAction == 'rangos'}id="activo-mod"{/if} href="{$tsConfig.url}/admin/rangos" style="width: 228px;"><img src="{$tsConfig.tema.t_url}/images/icons/crown.png" />Rangos de Usuarios</a></li> Y abajo de eso, ponemos este codigo: <li><a {if $tsAction == 'posts'}id="activo-mod"{/if} href="{$tsConfig.url}/admin/muro" style="width: 228px;"><img src="{$tsConfig.tema.t_url}/images/icons/posts.png" />Revisar Muros</a></li> y listo, asi se va a ver en V5 : Aviso: Esta hecho a proposito el color Negro, es para la seguridad de mis usuarios de mi pagina. ahora si, para los que tiene el theme Default usandolo, vamos a buscar este archivo m.admin.sidemenu , se encuentra en default/templates/admin_mods y busquemos <li id="a_posts"><span class="cat-title"><a href="{$tsConfig.url}/admin/posts">Todos los Posts</a></span></li> Abajo de eso, agregamos esto: <li id="a_posts"><span class="cat-title"><a href="{$tsConfig.url}/admin/muro">Revisar Muros</a></span></li> Y listo , ya te anda en Default, hasta la proxima con otra actualizacion!
  3. [mod] mi tipo tariinga

    hola traigo este mod mi pedido x muchos deben tener instalado los mods: -hashtags -pins -editar publicacion -cerrar comentarios (no pongo los links xq no recuerdo cuales son) subimos y reemlazamos estos archivos: https://mega.co.nz/#!c1pFmaCB!tH8D4-DhRXLQ47lc7VV8jCTq6chWaerD_UNVX-AVt1g hagan respaldos de sus archivos de la carpeta inc que viene en el rar ejecutan estas sqls ALTER TABLE u_muro ADD p_status ENUM( '0', '1' ) NOT NULL DEFAULT '0'; ALTER TABLE u_muro ADD p_nick varchar(16) NOT NULL; CREATE TABLE IF NOT EXISTS `u_muro_tags` ( `id` int(11) NOT NULL AUTO_INCREMENT, `p_id` int(11) NOT NULL, `p_tags` varchar(35) NOT NULL, `p_date` varchar(35) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `u_pins` ( `pid` int(11) NOT NULL AUTO_INCREMENT, `p_user` int(11) NOT NULL, `p_data` text NOT NULL, `p_fecha` varchar(35) NOT NULL, PRIMARY KEY (`pid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ; ALTER TABLE u_muro ADD p_compa ENUM( '0', '1' ) NOT NULL DEFAULT '0'; ALTER TABLE u_muro ADD p_shared int(4) NOT NULL; ALTER TABLE u_muro ADD p_user_shared int(4) NOT NULL; CREATE TABLE IF NOT EXISTS `u_muro_compartir` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `post_id` int(11) NOT NULL, `p_date` varchar(35) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; ALTER TABLE u_muro ADD p_favorito int(4) NOT NULL; CREATE TABLE IF NOT EXISTS `u_muro_favorito` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `post_id` int(11) NOT NULL, `p_date` varchar(35) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; ojo en las sqls vienen lo de hashtags y pins si ya los tienen no las ejecuten x ultimo agreguen esto a su htaccess # MI RewriteRule ^mi/([a-z]+)$ index.php?do=portal&action=$1 [QSA,L] se reemplazaran c.muro,c.portal,portal.php.perfil..php y los archivos ajax correspondientes esta basado en v5 demo: http://www.mytech.com.mx/mi/ si encuentrarn algun problema avisenme caps: me olvide de esto: vayan a su tema/templates/modules/ y suban estas carpeta https://mega.co.nz/#!Ykp02YCS!hlIOxusUsrEc6pL3_DqGwjZEM1BqLh12kuC3DBX0jhw https://mega.co.nz/#!AlByDbZB!MOqR9xI7MQnqcERAUly0hGxbX4ok8DjQbk8mkNyaF8Q y t.perfil lo editan x este: {include file='sections/main_header.tpl'} <script type="text/javascript" src="{$tsConfig.default}/js/perfil.js"></script> <div class="bg-perfil"> {if $tsType == 'story'} {include file='modules/perfil/abrir-shout.tpl'} {else} <div class="bloque-i"> {include file='modules/perfil/cabecera-info.tpl'} {include file='modules/perfil/estadisticas-perfil.tpl'} {include file='modules/perfil/datos-ajax.tpl'} </div> <div class="sidebar-d" style="padding: 5px 10px 10px 10px;"> {include file='modules/perfil/administrar-usuario.tpl'} {include file='modules/perfil/redes-sociales.tpl'} {include file='modules/perfil/karma.tpl'} {include file='modules/perfil/medallas.tpl'} {include file='modules/perfil/seguidores.tpl'} {include file='modules/perfil/siguiendo.tpl'} {include file='modules/perfil/mis-imagenes.tpl'} </div> {/if} </div> {include file='sections/main_footer.tpl'}
  4. Este MOD no lo encontré por ningun lado, y muchos preguntaban como mejorar el mensaje, Isidro comento que borrando el DIE te redirigía a la home pero si vas buscando mas post y te aparece la home pues te sacas de onda. El mensaje original es este, y ya que no dice mucho tal vez algun usuario piense que su web se daño y salga Para arreglarlo,vamos a c.posts.php y buscamos die('No hay mas posts'); y lo reemplazamos por die('No hay mas posts, seras redireccionado a la pagina principal en<meta http-equiv="Refresh" content="5;url=http://www.cuatropatitascelaya.com/posts/"> <body onload="countDown();"> <form name="form" style="float:right;"> <input size="2" class="form_input" name="hour" disabled="" type="text" style="display:none"> <input size="2" class="form_input" name="minute" disabled="" type="text" style="display:none"> <input size="2" class="form_input" name="second" disabled="" type="text" style="float: left; position: absolute; top: 8px; left: 420px; border: medium none; background-color: white; font-weight: bold; font-size: 15px; color: black;"> </form> <script language="javascript"> <!-- //Código que muestra una cuenta atrás hasta finalizar el tiempo indicado //variables que determinan el total de horas, minutos y segundos para la cuenta atrás toHour=0; toMinute=0; toSecond=6; //cuenta atrás function countDown() { toSecond=toSecond-1; if(toSecond<0) { toSecond=59; toMinute=toMinute-1; } form.second.value=toSecond; if(toMinute<0) { toMinute=59; toHour=toHour-1; } form.minute.value=toMinute; form.hour.value=toHour; if(toHour<0) { //final form.second.value=0; form.minute.value=0; form.hour.value=0; }else{ setTimeout("countDown()",1000); } } --> </script>'); y ahora nos redireccionara después de 5 segundos a la pagina principal alertando que no hay mas post y que sera redireccionado junto a un contador con los segundos restantes Modifiquen a su gusto <meta http-equiv="Refresh" content="5;url=http://www.cuatropatitascelaya.com/posts/"> y toSecond=6; en toSecond puse un segundo mas ya que el contador este comienza antes que el del meta refresh, prueben y hasta luego
  5. Hola, os traigo una nueva versión del editor que aunque aparentemente no tengo muchos cambios, se han corregido muchos errores y tiene algunas cosas nuevas, además de una instalación simplificada. Actualización 26/08/2014 a las 16:50 - Descarga actualizada (wysibb.css), se añadió el fix de los iconos en Firefox. 26/08/2014 a las 23:40 - Descarga actualizada (wysibb.js), se añadió el fix de los vídeos de YouTube. 26/09/2014 a las 02:00 - Descarga actualizada, nueva versión (1.1.0) con todos los bugs conocidos corregidos. 09/03/2015 a las 00:15 - Descarga actualizada, instalador compatible con Risus 1.2. Mejoras de la versión final Nuevos BBCodes: Justificar y Separador. Se han corregido errores menores de manera definitiva. Editor ahora también al enviar el mensaje, no solo al responder. Ahora será más fácil implementar el editor en otros lugares como: comunidades, juegos, etc. Instalación simplificada, aunque la instalación parezca larga, la mayoría de los pasos no los tendréis que hacer. Posibilidad de utilizar el editor en modo de Pantalla Completa. Cambio en el diseño del editor y los diálogos. Mejoras de la final 1.1 Mejora del rendimiento. Error sincronización solucionado Error al editar posts solucionado. Error 0 al publicar posts solucionado. Error al enviar un mensaje solucionado. El editor ya no se expande horizontalmente. Ahora las imagenes se adaptan al tamaño del editor para mejorar la creación de posts. Ya no desaparecen los emoticonos del "mi" que tenían algunas "v5". Se han añadido todos los fixes publicados hasta ahora. Al subir una imagen ya no se duplicará. Capturas Descarga wysiwyg_final_v1.1.1.zip Instalación La instrucciones para acceder a la instalación están dentro de la descarga en el archivo Instrucciones.txt, leer con atención toda la página de la instalación y recordar que la instalación cambia dependiendo si tienes instalada o no la antigua versión del editor.
  6. Buen traigo una adaptacion para la v5 de mi ultimo mod como me lo pidieron no expecificaron cual asi que lo dejo para TaringaV5 y la ultima que libero toup´ Taringa V5 capturas agregas al final de extras.css : .DataBottom { background-image: url(http://i.imgur.com/3WQMk94.png); background-repeat: no-repeat no-repeat; cursor: pointer; float: right; width: 16px; height: 16px; ; } .DataBottom:hover { background-image: url(http://www.identi.li/images/Online.png); background-repeat: no-repeat no-repeat; cursor: pointer; float: right; width: 16px; height: 16px; ; } .DataFlecha { background-image:url(http://i.imgur.com/fmcIwC2.png); background-color: transparent; background-repeat: no-repeat; float: left; margin-right: 5px; width: 16px; height: 16px; } Descarga b.post_recientes.tpl y subelo a /V5/templates/b_toup/home/ https://mega.co.nz/#!oVJXURSA!mfJWduI5jkQ7xUvRWHX2SYeyYzU730P854zrNSAMals El theme liberado de toup Capturas agregas al final de taringa.css : .DataBotton { background-image: url(http://i.imgur.com/3WQMk94.png); background-repeat: no-repeat no-repeat; cursor: pointer; position: relative; left: 177px; float: right; width: 16px; height: 16px; } .DataFlecha { background-image: url(http://i.imgur.com/fmcIwC2.png); background-color: transparent; background-repeat: no-repeat; float: left; margin-right: 5px; width: 16px; height: 16px; } .DataBotton:hover { background-image: url(http://www.identi.li/images/Online.png); background-repeat: no-repeat no-repeat; cursor: pointer; position: relative; left: 177px; float: right; width: 16px; height: 16px; } Descarga posts-recientes.tpl y subelo a /tutheme/templates/modules/home/ https://mega.co.nz/#!QYoDDJrK!R1P9bO3-RyXq9HF1IEL--MS15T5zk5039oppnI893gI Para que lo adapte a otro tema me avisan en un comentario
  7. Hola amigos, les traigo un MOD que consiste en respuestas en los comentarios como en T!. El MOD está hecho para los comentarios que tengan el mismo diseño que la v4, no necesariamente tiene que ser el tema default ¿Que trae el MOD? - Respuestas en comentarios. - Citas en respuestas de otros comentarios. - Automatizado con JS 1) Abren el funciones.js de themes/TUTEMA/js y buscan: case '1': //OK $("#nuevos").slideUp(1); $('#preview').remove(); /*textarea.attr('title', 'Escribir un comentario...').val(''); onblur_input(textarea);*/ $('#nuevos').html(h.substring(3)).slideDown('slow', function () { $('#no-comments').hide('slow'); getUrls(gget('postid')); $('.miComentario').html('<div class="emptyData">Tu comentario fue agregado correctamente </div>'); }); // SUMAMOS var ncomments = parseInt($('#ncomments').text()); $('#ncomments').text(ncomments + 1); //$('#btnsComment').attr({'disabled':''}); // POR SI HABIA ERROR //$('.miComentario .error').html(''); break; } $('#loading').fadeOut(350); // $('.miComentario #gif_cargando').hide(); mydialog.close(); } }); }, Abajo añaden: resp: function(id){ $('#'+id).removeAttr('style'); var textarea = $('#bodys_comm_'+cid); textarea.focus(); }, nuevos: function(mostrar_resp, comentarionum, cid){ // EVITAR FLOOD $('#btnssComment').attr({'disabled':'disabled'}); // var textarea = $('#bodys_comm_'+cid); var text = textarea.val(); // VACIO o DEFAULT if(text == '' || text == textarea.attr('title')){ textarea.focus(); $('#btnssComment').attr({'disabled':''}); return; }else if(text.length > 1500){ alert("Tu comentario no puede ser mayor a 1500 caracteres."); textarea.focus(); $('#btnssComment').attr({'disabled':''}); return; } // IMAGEN $('.resp #gif_cargando').show(); var auser = $('#ausers_post').val(); var respuesta = $('#respuesta_'+cid).val(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/comentario-agregar.php', data: 'comentario=' + encodeURIComponent(text) + '&postid=' + gget('postid') + '&mostrar_resp=' + mostrar_resp + '&auser=' + auser + '&respuesta=' + respuesta, success: function(h){ switch(h.charAt(0)){ case '0': //Error $('.resp .error').html(h.substring(3)).show('slow'); $('#btnssComment').attr({'disabled':''}); break; case '1': //OK $("#nuevoss_"+cid).slideUp(1); $('#preview').remove(); /*textarea.attr('title', 'Escribir un comentario...').val(''); onblur_input(textarea);*/ $('#nuevoss_'+cid).html(h.substring(3)).slideDown('slow', function () { $('.especial3').attr('class', 'especial1'); $('#nuevoss_'+cid+' .especial1 .comentario-post .comment-box').attr('style', 'width: 698px!important;'); $('#no-comments').hide('slow'); getUrls(gget('postid')); $('.resp').attr("style", "margin-left: 131px!important; width: 701px!important;"); $('.resp').html('<div class="emptyData">Tu comentario fue agregado correctamente </div>'); }); // SUMAMOS var ncomments = parseInt($('#ncomments').text()); $('#ncomments').text(ncomments + 1); //$('#btnsComment').attr({'disabled':''}); // POR SI HABIA ERROR //$('.miComentario .error').html(''); break; } $('#loading').fadeOut(350); // $('.resp #gif_cargando').hide(); mydialog.close(); } }); }, 2) Abren el c.posts.php de inc/class y buscan: c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' Y al lado añaden: AND c.c_resp = \'0\' Quedaría algo asi: c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' AND c.c_resp = \'0\' Luego buscan: $return['data'][$i]['votado'] = $votado; Abajo añaden: $return['data'][$i]['respuestas'] = $this->getRespuestas((int)$comment['cid']); En ese archivo busca: function getLastComentarios(){ global $tsUser, $tsCore; // $query = mysql_query('SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = cm.c_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } Abajo añade: function getRespuestas($comment_id){ global $tsCore, $tsUser; // $start = $tsCore->setPageLimit($tsCore->settings['c_max_com']); $query = mysql_query('SELECT u.user_name, u.user_activo, u.user_baneado, c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_resp = \''.(int)$comment_id.'\' '.($tsUser->is_admod ? '' : 'AND c.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY c.cid LIMIT '.$start); // COMENTARIOS TOTALES $return['num'] = mysql_num_rows(mysql_query('SELECT cid FROM p_comentarios WHERE c_resp = \''.(int)$comment_id.'\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').'')); // $comments = result_array($query); // PARSEAR EL BBCODE $i = 0; foreach($comments as $comment){ // CON ESTE IF NOS AHORRAMOS CONSULTAS if($comment['c_votos'] != 0){ $query = mysql_query('SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1'); $votado = mysql_num_rows($query); } else $votado = 0; // BLOQUEADO $return['block'] = mysql_num_rows(mysql_query('SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1')); // $return['data'][$i] = $comment; $return['data'][$i]['votado'] = $votado; $return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true); $i++; } // return $return; } Para acabar en ese archivo busca: if(mysql_query('INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\')')) { Y lo reemplazas por: if(mysql_query('INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`, `c_resp`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$_POST['respuesta'].'\')')) { 3) Hacen esta SQL en su BD: ALTER TABLE `p_comentarios` ADD `c_resp` INT( 11 ) NOT NULL DEFAULT '0'; 4) Por último reemplacen el p.comentario.ajax.tpl de themes/TUTEMA/t.php_files por este: https://www.mediafire.com/?aj6foqw23lyqg8f Hagan backup de su archivo original primero! Caps: Demo: http://programu.net/posts/phpost/128/-MOD-Respuestas-en-comentarios-como-en-T-v4.html#comments User: demo Pass: demo1234 Saludos
  8. [MOD] Tienda v2

    Hola amigos, hace ya mucho tiempo les traje una tienda automática, cuya administración era muy pobre. Como he visto que bastante gente lo usaba he desarrollado una v2 mas manejable. ¿Que tiene? - Administración completa de los productos de la tienda - Sección tienda - Instalación más sencilla que la v1 - Código más optimizado Próximamente más productos 1) Suben todos estos archivos como se indica: https://www.mediafire.com/?8rx9r8mk3ou7fa7 m.admin_tienda.tpl -> themes/TUTEMA/templates/admin_mods m.tienda.tpl -> themes/TUTEMA/templates/modules t.tienda.tpl -> themes/TUTEMA/templates tienda.php -> inc/php c.tienda.php -> inc/class 2) Hacen esta SQL en su BD: CREATE TABLE IF NOT EXISTS `t_productos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` int(1) NOT NULL, `precio` int(4) NOT NULL, `obj` int(5) NOT NULL DEFAULT '0', `obj_2` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 3) Abren el t.admin.tpl de themes/TUTEMA/templates y buscan: {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} Y abajo agregan: {elseif $tsAction == 'tienda'} {include file='admin_mods/m.admin_tienda.tpl'} 4) Abren el admin.php de inc/php y buscan: } elseif($action == 'configs'){ // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } Y justo debajo añaden: /** TIENDA **/ } elseif($action == 'tienda'){ include('../class/c.tienda.php'); $tsTienda = new tsTienda; if(empty($act)){ $productos = $tsTienda->getProductos(); if(is_array($productos)) $smarty->assign("tsProductos", $productos); else $smarty->assign("tsError", $productos); }elseif($act == 'nuevo' && !empty($_POST['type'])){ $producto = $tsTienda->nuevoProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } elseif($act == 'editar'){ if(!empty($_POST['type'])){ $producto = $tsTienda->editProducto((int)$_GET['id']); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else{ $smarty->assign("tsError", $producto); $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } else{ $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } elseif($act == 'borrar'){ $producto = $tsTienda->delProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } 5) Abren el c.user.php de inc/class y buscan: // NOMBRE $this->nick = $this->info['user_name']; $this->uid = $this->info['user_id']; $this->is_banned = $this->info['user_baneado']; Abajo añaden: $this->puntos = $this->info['user_puntos']; 6) Abren el m.admin_sidemenu.tpl de themes/TUTEMA/templates/admin_mods y buscan: <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categor&iacute;as</a></span></li> Abajo añaden: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/tienda">Tienda</a></span></li> 7) Para acabar, abren el head_menu.tpl de themes/TUTEMA/templates/sections y buscan: <li class="tabbed {if $tsPage == 'tops'}here{/if}" id="tabbedtops"> <a title="Ir a TOPs" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/top/">TOPs <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y abajo añaden: <li class="tabbed {if $tsPage == 'tienda'}here{/if}" id="tabbedtops"> <a title="Ir a Tienda" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/tienda/">Tienda <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y listo!! Caps: Demo: http://programu.net/tienda/ User: demo Pass: demo1234 Espero que les guste P.D: Proximamente nuevos productos, si desean algún producto en concreto no duden en pedirlo
  9. Eliminar visitas y sesiones Automaticamente mayores a 24 hs. Aqui por pedido. Aqui les dejo este mini-mod que les puede ser de utilidad para los que tienen muchas visitas en su web. Esta tabla w_visitas y u_sessions puede almacenar datos inecesarios mas que para tener estadisticas de las visitas. Esto les ocaciona problemas aveces cuando quieren cambiar de servidor y su base de datos es muy grande, con esto podran reducir conciderablemente. Para las visitas en c.posts.php buscamos: // AGREGAMOS A VISITADOS... PORTAL Y agregamos arriba: $query = mysql_query('SELECT COUNT(id) as total FROM w_visitas'); $data = mysql_fetch_assoc($query); $time = time() - 1440*60; if($data['total']>100){ mysql_query('DELETE FROM w_visitas WHERE date < \''.$time.'\' '); } Para las sesiones en c.user.php buscamos: // Establecemos la cookie $this->set_cookie('sid', $this->ID, $this->sess_expiration); Y agregamos abajo: $query = mysql_query('SELECT COUNT(session_user_id) as total FROM u_sessions'); $data = mysql_fetch_assoc($query); if($data['total']>100){ $time = time() - 1440*60; mysql_query('DELETE FROM u_sessions WHERE session_time < \''.$time.'\' '); } Donde veran los numero 100 en ambas pueden cambiarlas por la canditdad que quieran que que se actualice al llegar a esa cantidad, dependiendo de la actividad que tengan en sus web. Hagan copias de sus tablas si quieren probar. Espero les sea de utilidad.. hasta la póxima.
  10. Hola a todos, a pedido de SKIDROW en este topic → enseño a como separar los posts de una categoría específica de los últimos posts habituales. es para hacer algo como esto: Para eso abrimos c.posts.php que está en inc/class y debajo de: $lastPosts['data'] = result_array($query); agregamos: /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 1; $sql = mysql_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); Antes de pasar al siguiente paso explico como funciona esto. 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 $sql por (puede ser cualqiera) $sql2 y en $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) Ahora abrimos posts.php y debajo de: $smarty->assign("tsPosts",$tsLastPosts['data']); Agregan (tantas veces quieran mostrar categorías diferentes) $smarty->assign("tsPCat",$tsLastPosts['cat']); Solo recuerden cambiarle el nombre a las lineas siguientes de la siguiente forma: $smarty->assign("tsPCat2",$tsLastPosts['cat2']); y así, le ponen 3, 4, 5 si lo desean... Por último se van a m.home_last_posts.tpl y al final de todo el código (según el theme default) agregan: <div class="clearbeta lastPosts"> {if $tsPCat} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;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&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; 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} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; 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&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> Si lo pueden notar es el mismo codigo que el de "ultimos posts" solo que cambié algunas cosas. {if $tsPCat} → Condicional por si existe o no posts de la categoria (si agregan más no olviden poner el 2, 3, 4, etc en los otros códigos) <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;n</div> → nombre de la categoría seleccionada {if $i > 4} → Condicional que determina el LIMITE menconado 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. Ahora les mostrare un ejemplo mostrando 3 categorias diferentes. Acción, Aventura, Deportes: en c.posts.php: /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 1; $sql = mysql_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 POR CATEGORIA ESPECIAL*****/ $categoria = 2; $sql2 = mysql_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 POR CATEGORIA ESPECIAL*****/ $categoria = 4; $sql3 = mysql_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 $smarty->assign("tsPCat",$tsLastPosts['cat']); $smarty->assign("tsPCat2",$tsLastPosts['cat2']); $smarty->assign("tsPCat3",$tsLastPosts['cat3']); Y en m.home_last_posts.tpl <div class="clearbeta lastPosts"> {if $tsPCat} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;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&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; 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} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; 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&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> <div class="clearbeta lastPosts"> {if $tsPCat2} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;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&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; 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} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; 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&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> <div class="clearbeta lastPosts"> {if $tsPCat3} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;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&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; 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} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; 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&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> Resultado: Curiosamente solo tengo 4 posts de cada categoría xD pero limitará solo 5 (o más si lo desean) Cómo pudieron notar repetí el código tres veces en todos los pasos cambiándoles los nombres (en este caso solo puse el numero para no hacerlo tan largo: 2 y 3.) SKIDROW cuando lo instales muestra cap de como quedó para que vean un resultado diferentes con las portadas y en el paso de c.posts.php no olvides agregar la variable p.post_portada al lado de p.post_title para que se puedan ver las imágenes de portada de los posts. Bueno, eso es todo, espero te funcione y les sirva a algún otro user, nos vemos en otro mod
×