¡Bienvenido! ¿Aún no estás registrado?, deberás registrarte antes de poder usar el Chat, Comentar y Descargar en el Foro. Usa un email válido para la activación.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Ordenar posts como foro en la home THEME Life (Act 1.3)
#1

4
Mejor respuesta del mensaje Ordenar posts como foro en la home THEME Life (Act 1.3)
[img]Registrate o inicia tu sesión para ver este contenido[/img]


Hola a tod@s, os dejo el mod ordenar post como los foros de Debes agradecer para ver el contenido... actualizado para la versión 1.3, lo he hecho en el tema default pero vale para cualquier tema, lo que cambias es el diseño, solo hay que adaptarlo y listo.


¿Que tiene?
  • Administrar categorias "padre" desde la admin.
  • Seleccionar a que categoría "padre" pertenecerá cada categoría (foro).
  • Ultimo post de cada foro en la home
  • Estadisticas de cada categoría en la home
  • Ver categorías individualmente


1- Hacen estas SQL en su BD:
 
CREATE TABLE IF NOT EXISTS `p_hcats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

ALTER TABLE `p_categorias` ADD `c_hcat` INT(11) NOT NULL ;



2- Abren el c.admin.php de inc/class y buscan:
 
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 . '\''))


Y lo reemplazan por:
 
if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_categorias` SET c_nombre = \'' . $tsCore->setSecure($c_nombre) .
            '\', c_hcat = \'' . $tsCore->setSecure($_POST['hcat']) .
            '\', c_seo = \'' . $tsCore->setSecure($tsCore->setSEO($c_nombre, true)) . '\', c_img = \'' .
            $tsCore->setSecure($cimg) . '\' WHERE cid = \'' . (int)$cid . '\''))


Añadido:
 
'\', c_hcat = \'' . $tsCore->setSecure($_POST['hcat']) .



Luego buscan:
 
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

}


Y arriba añaden:
 
/*
    gethCats()
    */
    function gethCats()
    {

        //
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM p_hcats ORDER BY id DESC');
        $data = result_array($query);

        //
        return $data;
    }


    function newhCat()
    {
        global $tsCore;
        //
        //$db = $this->getDBtypes();
        // VALORES
        $name = $tsCore->setSecure($tsCore->parseBadWords($_POST['h_nombre']));

        // INSERTS
        if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `p_hcats` (name) VALUES (\'' .
            $name . '\')'))
            return true;
        else
            exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
    }

function gethCat($id)
    {
        //
        //$db = $this->getDBtypes();
        //
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM p_hcats WHERE id = \'' .
            (int)$id . '\' LIMIT 1');
        $data = db_exec('fetch_assoc', $query);

        //
        return $data;
    }

    function savehCat($id)
    {
        global $tsCore;
        //
        // VALORES
        $name = $tsCore->setSecure($tsCore->parseBadWords($_POST['h_nombre']));

        // INSERTS
        if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `p_hcats` SET name = \'' .
            $name . '\' WHERE id = \''.(int)$id.'\''))
            return true;
        else
            exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
    }

function deletehCat($id)
    {
        //
    
        // INSERTS
        if (db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM `p_hcats` WHERE id = \''.(int)$id.'\''))
            return true;
        else
            exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
    }



buscan:
 
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid, c_orden, c_nombre, c_seo, c_img FROM p_categorias WHERE cid = \'' .
            (int)$cid . '\' LIMIT 1');


Y lo reemplazan por:
 
$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid, c_orden, c_nombre, c_seo, c_img, c_hcat FROM p_categorias WHERE cid = \'' .
            (int)$cid . '\' LIMIT 1');


Añadido:
 
, c_hcat



3- Abren el c.posts.php de inc/class y buscan:
 
/*
getLastPosts($category, $sticky)
*/


Y arriba añaden:
 
function getLastPostsForo(){
  //SELECCIONAMOS DE TODAS LAS CATEGORIAS
  $sql = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM p_hcats');
  $hcats = result_array($sql);
  
  //CATEGORIAS
  foreach($hcats as $h => $n){
  $hcats[$h]['cats'] = result_array(db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid, c_nombre, c_seo, c_img FROM p_categorias WHERE c_hcat = \''.$n['id'].'\''));

//DATOS
foreach($hcats[$h]['cats'] as $c => $id){

//ULTIMO POST
$sql = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_title, p.post_id, p.post_user, p.post_date, u.user_id, u.user_name, u.user_rango, r.r_color FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE p.post_category = \''.$id['cid'].'\' ORDER BY p.post_id DESC LIMIT 1') or die(mysql_error());
$hcats[$h]['cats'][$c]['ultimo'] = db_exec('fetch_assoc', $sql);

//ESTADISTICAS
$posts = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) AS posts FROM p_posts WHERE post_category = \''.$id['cid'].'\''));
$sql = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(post_id) AS posts, SUM(post_comments) AS comments FROM p_posts WHERE post_category = \''.$id['cid'].'\'');
$posts = db_exec('fetch_assoc', $sql);

$hcats[$h]['cats'][$c]['posts'] = $posts['posts'];
$hcats[$h]['cats'][$c]['comments'] = empty($posts['comments']) ? 0 : $posts['comments'];
}
}
return $hcats;
  }



4- Abren el posts.php de inc/php y buscan:
 
$smarty->assign("tsPosts",$tsLastPosts['data']);


Y abajo añaden:
 
$smarty->assign("tsHCats", $tsPosts->getLastPostsForo());


5- Abren el admin.php de inc/php y buscan:
 
} elseif($action == 'pconfigs'){
if(!empty($_POST['save'])){
if($tsAdmin->savePConfigs()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/pconfigs?save=true');
}


Abajo añaden:
 
} elseif($action == 'hcats'){
$id = (int)$_GET['id'];
if($act == 'editar'){
if($_POST['save']){
if($tsAdmin->savehCat($id)) $tsCore->redirectTo($tsCore->settings['url'].'/admin/hcats?save=true');
} else {
$smarty->assign("tsCat",$tsAdmin->gethCat($id));

}
} elseif($act == 'nueva'){
if(!empty($_POST['h_nombre'])){
if($tsAdmin->newhCat()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/hcats?save=true');
}

} elseif($act == 'borrar'){

if($tsAdmin->deletehCat($id)) $tsCore->redirectTo($tsCore->settings['url'].'/admin/hcats?save=true');


}else{
$smarty->assign("tsCats",$tsAdmin->gethCats());
}



Luego buscan:
 
$smarty->assign("tsIcons",$tsAdmin->getExtraIcons());


Y abajo añaden:
 
$smarty->assign("tshCats",$tsAdmin->gethCats());



6- Abren el t.home.tpl de themes/TUTEMA/templates y buscan:
 
{include file='modules/m.home_last_posts.tpl'}


Y Arriba agregan:
 
{if !$tsCat}{include file='modules/m.home_foro.tpl'}<br>{/if}



NOTA: Solo para el theme Life. Si quieren que se elimine el bloque de ultimos posts que aparecerá debajo, en vez de el paso anterior, hagan esto:

Buscan:
 
<br>
{include file='modules/m.home_last_posts.tpl'}


Lo reemplazan por:
 
{if !$tsCat}
                    <br>
{include file='modules/m.home_foro.tpl'}
                    {else}
<br>
{include file='modules/m.home_last_posts.tpl'}
                    {/if}



7- Abren el t.admin.tpl de themes/TUTEMA/templates y buscan:
 
{elseif $tsAction == 'rangos'}
                            {include file='admin_mods/m.admin_rangos.tpl'}


Y abajo añaden:
 
{elseif $tsAction == 'hcats'}
                            {include file='admin_mods/m.admin_hcats.tpl'}



8- 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_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/hcats">Categor&iacute;as "padre"</a></span></li>



9- Abren el m.admin_cats.tpl de themes/TUTEMA/templates/admin_mods y buscan:
 
<dl>
                                                <dt><label for="cat_name">Nombre de la categor&iacute;a:</label></dt>
                                                <dd><input type="text" id="cat_name"name="c_nombre" value="{$tsCat.c_nombre}" /></dd>
                                            </dl>


Abajo añaden:
 
<dl>
                                                <dt><label for="hcat">Categoría padre:</label></dt>
                                                <dd>
                                                    <select name="hcat" id="hcat" style="width:164px">
                                                    {foreach from=$tshCats item=h}
                                                    <option value="{$h.id}" {if $tsCat.c_hcat == $h.id}selected="selected"{/if}>{$h.name}</option>
                                                    {/foreach}
                                                    </select>
                                                </dd>
                                            </dl>



10- Suben estos archivos:


Mega
Debes agradecer para ver el contenido...

Google Drive
Debes agradecer para ver el contenido...

Mediafire
Debes agradecer para ver el contenido...




Creditos: Debes agradecer para ver el contenido...
Responder
#2

1
Gracias por el aporte  Cool
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)