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

[Mini-Mod] Ver posts por categoría separados en la home

Recommended Posts

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:

 

ccrbb.png

 

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:

zcle7.png

 

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 :D

  • Me gusta 14

Compartir este post


Enlace al post
Compartir en otros sitios

algo me no me sale, no se por que, he intentado con 3 temas diferentes y nada  :unsure:

 

 

 

 

 

Pusiste el campo de la imagen de la portada como te lo mencione? receurdda que está relacionado al mod que ayas instalado, si instalaste el mio, la variable es p.post_portada

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario


  • Similar Content

    • Por Miguel92
      Bueno dice N°2 porque a la N°1 la tengo que adaptar a la default ya que tenia class de bootstrap!
       

      si no se ve clic
       
      1) Crean un archivo llamado panel.js y agregan esto dentro
       
      2) En extras.css agregan esto
       
      3) Ahora crearemos un archivo llamado head_usuario.tpl y lo colocaremos en sections y dentro agregaremos
      la parte del st-panel-footer la pueden sacar no hay problema
       
      4) Ahora en la misma carpeta sections buscamos main_footer.tpl y agregaremos esto arriba de </body>
      {include file='sections/head_usuario.tpl'} <script src="{$tsConfig.js}/panel.js" type="text/javascript"></script>  
      5) Para los iconos descarguen esto → ICONOS FUENTES  ← y lo descomprimen en css
       
      6) Busquen en main_header.tpl y debajo de
      <link href="{$tsConfig.tema.t_url}/extras.css" rel="stylesheet" type="text/css" /> colocan
      <link rel="stylesheet" href="{$tsConfig.css}/iconfont.css">  
      y eso sería todo
       
      En el caso que haya error avísenme!
      Esta es la N°1
       
      si no se ve clic
      Ver panel N°2 ir a Demo32.hol.es
      Usuario: Demo
      Pass: demouser
    • Por Rhuan

       
      Hola, este complemento podría considerarse en realidad una "plantilla" para el anterior RChat que publiqué ya que la mayor parte del funcionamiento es el mismo.
       
      Para instalar este chat no es necesario tener el anterior RChat y si lo tienes también puedes instalarlo sin problemas, los archivos se sobrescribirán.
       
       
      Actualización
      06/03/2015 a las 18:00 - Descarga actualizada: se ha corregido un fallo en el instalador que evita que aparezca el icono de los emoticonos. 08/03/2015 a las 22:10 - Descarga actualizada: se añadió seguridad adicional para evitar el flood. 09/03/2015 a las 23:15 - Descarga actualizada: ahora se muestran todos los emoticonos y se pueden agregar desde el chat.  
      Más capturas

        Caja de emoticonos abierta.
       

      Lista de moderación.
       

      Eliminar mensajes (onmouseover).
       

      Suspender usuario (onmouseover).
       
       
      Características
      Color de nick aleatorio como en grupos de WhatsApp. Suspender usuario por nick y por mensaje. Ver/editar/eliminar usuarios suspendidos. Borrar mensajes individualmente o todos de un usuario. Agrupar mensajes seguidos del mismo usuario. Mensajes propios diferenciados (alineado a la derecha en verde) BBCodes: [b], [i], [u], [br], [url], [color]. Imágenes y URLs automáticas. Censuras globales. Emoticonos globales a través de censuras. Antiflood, suspende durante 2 horas. El antiflood no afecta al staff. Diseño separado para funcionar con cualquier plantilla. Agregar emoticonos desde el chat. Selector de emoticonos.  
      Descarga
       
      Para Risus 1.2 o superior: rchat_whatsapp_1.2.zip
       
       
      Instrucciones
       
      Subir el directorio "install" a la raíz y acceder desde el navegador a http://www.tuweb.com/install/index.php
    • Por Altffenser
      Hola, traigo esta pequeña modificación, es un dialogo de confirmación para cerrar sesión. Utilizo el plugin "mydialog" que trae por default el script por lo que no hará falta nada más. Este MOD lo vi hace años, lo publicó un usuario llamado mega-lucas ((o algo así (aún mantengo su V5 ))
       
      Instrucciones.
      1. Abrir el archivo acciones.js y al ultimo del archivo colocar:
      /* Logout confirm by Altffenser */ function open_logout_box() { mydialog.show(); mydialog.title('Cerrar sesión'); mydialog.body('Estas a punto de salir de tu cuenta. <b>¿Seguro que deseas continuar?</b>'); mydialog.buttons(true, true, 'Cerrar sesión', 'logout_by_now()', true, false, true, 'No, permanecer aquí', 'close', true, true); mydialog.center(); } function logout_by_now(){ $(function (){ window.location.href = global_data.url + "/login-salir.php"; }); } 2. Abrir el archivo head_menu.tpl y buscar:
      <li class="logout"> <a href="{$tsConfig.url}/login-salir.php" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li> a) Reemplazar por:
      <li class="logout"> <a href="#" onclick="open_logout_box();" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li>  
      ¡Has terminado!
       
      Con eso lo tendrán, ahora cada que den clic en "salir"; primero aparecerá un dialogo como este:
       

       
      Es muy sencillo el MOD pero a mi parecer, se ve bien Saludos
       
    • Por airkpo
      Hola gente en esta ocasión les traigo una nueva versión de mi mod :3 
      -Aconsejado por @Rengo ., ahora se puede autorizar a los rangos a publicar
      -Filtrar por usuario
      -Categorías administrables (esto lo pidieron varios en la versión beta)
      - Filtrar por Categorías

       

       

       
       


       
      Descargar : http://www.mediafire.com/file/8f3772z45st5a45/Catalogo+v3.zip
      Demo: http://mundofree.net/catalogo/  
       
      Se aceptan ideas para mejorar el complemento  saludos  
  • Navegando Recientemente   0 miembros

    No registered users viewing this page.

  • Patrocinador



  • ×