PHPost | Soporte, Descargas y Tutoriales de Risus Nova
COMPLEMENTOS Ver posts por categoría separados en la home (Act 1.3) - Versión para impresión

+- PHPost | Soporte, Descargas y Tutoriales de Risus Nova (https://phpost.es)
+-- Foro: Risus 1.3 (https://phpost.es/foro-Risus-1-3)
+--- Foro: Complementos (https://phpost.es/foro-Complementos)
+---- Foro: Complementos Terminados (https://phpost.es/foro-Complementos-Terminados)
+---- Tema: COMPLEMENTOS Ver posts por categoría separados en la home (Act 1.3) (/tema-Complementos-Terminados-Ver-posts-por-categor%C3%ADa-separados-en-la-home-Act-1-3)



Ver posts por categoría separados en la home (Act 1.3) - Chctrpgo - 12-11-2021

Captura
[img]Registrate o inicia tu sesión para ver este contenido[/img]

 
 
En c.posts.php  --> inc --> class --> c.posts.php

Buscar:
Código PHP:
$lastPosts['data'] = result_array($query); 
 
 
Debajo agregar:
Código PHP:
/****FILTRO CATEGORIA 1*****/
      
$categoria 1;
      
$sql db_exec(array(__FILE____LINE__), 'query''SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id  '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == '' ' && 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'] == 'p.post_id > 0' 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
      
$lastPosts['cat'] = result_array($sql); 
 
 
Explicación     
Ejemplo

    $sql por $sql2 (puede ser cualqiera)
    $lastPosts['cat'] = result_array($sql); lo cambian por $lastPosts['cat2'] = result_array($sql2);
    Y así copian el código tantas veces quieran y solo le cambiaran los números de las variables (ejemplo $sql3, $sql4, $sql5... etc)


Código PHP:
/****FILTRO CATEGORIA 1*****/
      
$categoria 1;
      
$sql db_exec(array(__FILE____LINE__), 'query''SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id  '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == '' ' && 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'] == 'p.post_id > 0' 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
      
$lastPosts['cat'] = result_array($sql);
      
/****FILTRO CATEGORIA 2*****/
      
$categoria 2;
      
$sql2 db_exec(array(__FILE____LINE__), 'query''SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id  '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == '' ' && 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'] == 'p.post_id > 0' 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
      
$lastPosts['cat2'] = result_array($sql2);
      
/****FILTRO CATEGORIA 3*****/
      
$categoria 3;
      
$sql3 db_exec(array(__FILE____LINE__), 'query''SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id  '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == '' ' && 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'] == 'p.post_id > 0' 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5');
      
$lastPosts['cat3'] = result_array($sql3); 

 
En posts.php  --> inc --> php --> posts.php

Buscar:
Código PHP:
$smarty->assign("tsPosts",$tsLastPosts['data']); 
 
 
Agregan (tantas veces quieran mostrar categorías diferentes):
Código PHP:
$smarty->assign("tsPCat",$tsLastPosts['cat']); 
 
 
Ejemplo
Código PHP:
$smarty->assign("tsPCat",$tsLastPosts['cat']);
        
$smarty->assign("tsPCat2",$tsLastPosts['cat2']);
        
$smarty->assign("tsPCat3",$tsLastPosts['cat3']); 
 
 
En m.home_last_posts.tpl --> themes --> default --> templates --> modules --> m.home_last_posts.tpl

Al final agregar:
Código PHP:
<div class="clearbeta lastPosts">
                    {if 
$tsPCat}
                    <
div class="header">
                        <
div class="box_txt ultimos_posts">Categor&iacute;a 1</div>
                        <
div class="box_rss">
                            <
a href="/rss/ultimos-post">
                                <
span class="systemicons sRss" style="position:relative;z-index:87"></span>
                            </
a>
                        </
div>
                        <
div class="clearBoth"></div>
                    </
div>
                    <
div class="body">
                        <
ul>
                            {foreach 
from=$tsPCat item=p key=i}
                            <
li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" >
                                <
{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> &middotPuntos <strong>{$p.post_puntos}</strong> &middotComentarios <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


Explicación

    {if $tsPCat} → Condicional por si existe o no posts de la categoría (si agregan más no olviden poner el 2, 3, 4, etc en los otros códigos)
    <div class="box_txt ultimos_posts">Categor&iacute;a 1</div>nombre de la categoría seleccionada
    {if $i > 4} → Condicional que determina el LIMITE mencionado anteriormente - 1 (menos 1) para que muestre el botón de ver más de la categoría escogida
    Repiten este mismo código cuantas veces quieran de las categorías seleccionadas.


Ejemplo
Código PHP:
<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}" >
                                <
{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> &middotPuntos <strong>{$p.post_puntos}</strong> &middotComentarios <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}" >
                                <
{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> &middotPuntos <strong>{$p.post_puntos}</strong> &middotComentarios <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}" >
                                <
{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> &middotPuntos <strong>{$p.post_puntos}</strong> &middotComentarios <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





Creditos: Kmario19