09-01-2021, 09:11 AM
4

[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:
Código: ( Seleccionar Todo )
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 ;Código: ( Seleccionar Todo )
ALTER TABLE `p_categorias` ADD `c_hcat` INT(11) NOT NULL ;2- Abren el c.admin.php de inc/class y buscan:
Código: ( Seleccionar Todo )
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:
Código: ( Seleccionar Todo )
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ódigo: ( Seleccionar Todo )
'\', c_hcat = \'' . $tsCore->setSecure($_POST['hcat']) .Luego buscan:
Código: ( Seleccionar Todo )
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
}Y arriba añaden:
Código: ( Seleccionar Todo )
/*
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:
Código: ( Seleccionar Todo )
$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:
Código: ( Seleccionar Todo )
$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ódigo: ( Seleccionar Todo )
, c_hcat3- Abren el c.posts.php de inc/class y buscan:
Código: ( Seleccionar Todo )
/*
getLastPosts($category, $sticky)
*/Y arriba añaden:
Código: ( Seleccionar Todo )
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:
Código: ( Seleccionar Todo )
$smarty->assign("tsPosts",$tsLastPosts['data']);Y abajo añaden:
Código: ( Seleccionar Todo )
$smarty->assign("tsHCats", $tsPosts->getLastPostsForo());5- Abren el admin.php de inc/php y buscan:
Código: ( Seleccionar Todo )
} elseif($action == 'pconfigs'){
if(!empty($_POST['save'])){
if($tsAdmin->savePConfigs()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/pconfigs?save=true');
}Abajo añaden:
Código: ( Seleccionar Todo )
} 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:
Código: ( Seleccionar Todo )
$smarty->assign("tsIcons",$tsAdmin->getExtraIcons());Y abajo añaden:
Código: ( Seleccionar Todo )
$smarty->assign("tshCats",$tsAdmin->gethCats());6- Abren el t.home.tpl de themes/TUTEMA/templates y buscan:
Código: ( Seleccionar Todo )
{include file='modules/m.home_last_posts.tpl'}Y Arriba agregan:
Código: ( Seleccionar Todo )
{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:
Código: ( Seleccionar Todo )
<br>
{include file='modules/m.home_last_posts.tpl'}Lo reemplazan por:
Código: ( Seleccionar Todo )
{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:
Código: ( Seleccionar Todo )
{elseif $tsAction == 'rangos'}
{include file='admin_mods/m.admin_rangos.tpl'}Y abajo añaden:
Código: ( Seleccionar Todo )
{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:
Código: ( Seleccionar Todo )
<li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categorías</a></span></li>Abajo añaden:
Código: ( Seleccionar Todo )
<li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/hcats">Categorías "padre"</a></span></li>9- Abren el m.admin_cats.tpl de themes/TUTEMA/templates/admin_mods y buscan:
Código: ( Seleccionar Todo )
<dl>
<dt><label for="cat_name">Nombre de la categoría:</label></dt>
<dd><input type="text" id="cat_name"name="c_nombre" value="{$tsCat.c_nombre}" /></dd>
</dl>Abajo añaden:
Código: ( Seleccionar Todo )
<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
Google Drive
Mediafire
Creditos: Debes agradecer para ver el contenido...




Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google