09-01-2021, 09:11 AM
[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 Aperpen 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:
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:
ALTER TABLE `p_categorias` ADD `c_hcat` INT(11) NOT NULL ;2- Abren el c.admin.php de inc/class y buscan:
Código:
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:
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:
'\', c_hcat = \'' . $tsCore->setSecure($_POST['hcat']) .Luego buscan:
Código:
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
}Y arriba añaden:
Código:
/*
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:
$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:
$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:
, c_hcat3- Abren el c.posts.php de inc/class y buscan:
Código:
/*
getLastPosts($category, $sticky)
*/Y arriba añaden:
Código:
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:
$smarty->assign("tsPosts",$tsLastPosts['data']);Y abajo añaden:
Código:
$smarty->assign("tsHCats", $tsPosts->getLastPostsForo());5- Abren el admin.php de inc/php y buscan:
Código:
} elseif($action == 'pconfigs'){
if(!empty($_POST['save'])){
if($tsAdmin->savePConfigs()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/pconfigs?save=true');
}Abajo añaden:
Código:
} 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:
$smarty->assign("tsIcons",$tsAdmin->getExtraIcons());Y abajo añaden:
Código:
$smarty->assign("tshCats",$tsAdmin->gethCats());6- Abren el t.home.tpl de themes/TUTEMA/templates y buscan:
Código:
{include file='modules/m.home_last_posts.tpl'}Y Arriba agregan:
Código:
{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:
<br>
{include file='modules/m.home_last_posts.tpl'}Lo reemplazan por:
Código:
{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:
{elseif $tsAction == 'rangos'}
{include file='admin_mods/m.admin_rangos.tpl'}Y abajo añaden:
Código:
{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:
<li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categorías</a></span></li>Abajo añaden:
Código:
<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:
<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:
<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: Aperpen
