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

(Actualizacion) (MOD) Ordenar posts como foro en la home THEME Life

Recommended Posts

Ordenar posts como foro en la home THEME Life

Funciona tambien en el theme default

 

Hola amigos, en este caso les traigo un MOD de Aperpen actualizado a la Risus 1.2

que ordena los posts en la home como un foro, segun las categorías.

Por lo que se incluye un pequeño sistema de subcategorías

¿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

 

Empecemos:

1) Hacen esta SQL en su BD:

1º Consulta

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 ;

2º Consulta

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

2) Abren el c.admin.php de inc/class y buscan:

1º Modificación

/*
    saveCat()
    : EDITA LOS DATOS DE LA CAT O SUBCAT
    */
    function saveCat()
    {
        global $tsCore;
        //
        //$db = $this->getDBtypes();
        $cid = $tsCore->setSecure($_GET['cid']);
        //
        $c_nombre = $tsCore->setSecure($tsCore->parseBadWords($_POST['c_nombre']));
        $cimg = $tsCore->setSecure($tsCore->parseBadWords($_POST['c_img']));
        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 . '\''))
            return true;
    }

Y lo reemplazan por:

    /*
    saveCat()
    : EDITA LOS DATOS DE LA CAT O SUBCAT
    */
    function saveCat()
    {
        global $tsCore;
        //
        //$db = $this->getDBtypes();
        $cid = $tsCore->setSecure($_GET['cid']);
        //
        $c_nombre = $tsCore->setSecure($tsCore->parseBadWords($_POST['c_nombre']));
        $cimg = $tsCore->setSecure($tsCore->parseBadWords($_POST['c_img']));
        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 . '\''))
            return true;
    }

Luego buscan:

2º Modificación

/*
    getCat()
    : OBTIENE LOS DATOS DE LA CAT O SUBCATEGORIA
    */
    function getCat()
    {
        global $tsCore;
        //
        //$db = $this->getDBtypes();
        $cid = intval($_GET['cid']);
        //
        $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');
        $data = db_exec('fetch_assoc', $query);

        //
        return $data;
    }

Y lo reamplazan por:

    /*
    getCat()
    : OBTIENE LOS DATOS DE LA CAT O SUBCATEGORIA
    */
    function getCat()
    {
        global $tsCore;
        //
        //$db = $this->getDBtypes();
        $cid = intval($_GET['cid']);
        //
        $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');
        $data = db_exec('fetch_assoc', $query);

        //
        return $data;
    }

Luego buscan: (Esta al final del archivo c.admin.php)

3º Y ultima modificación en este archivo.

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

}

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') );
    }

Con eso hemos terminado en el archivo c.admin.php

 

3) Abren el c.posts.php de inc/class y buscan:

1º Y unica modificación en este archivo.

	/*
		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 exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );
			$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:

1º Y unica modificación en este archivo

    	$smarty->assign("tsPosts",$tsLastPosts['data']);

Y abajo añaden:

		$smarty->assign("tsHCats", $tsPosts->getLastPostsForo());

5) Abren el admin.php de inc/php y buscan:

1º Modificación

	} 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 que les saldra 2 veces:

2º Y ultima modificación en este archivo.

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

1º Y ultima modificación en este archivo.

					{include file='modules/m.home_last_posts.tpl'}

Y abajo agregan:

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

NOTA: Si quieren que se elimine el bloque de ultimos posts que aparecerá arriba, en vez de el paso anterior, hagan esto:

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

1º Y unica modificación en este archivo.

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

1º Y unica modificación en este archivo.

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

1º Y unica modificación en este archivo.

<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) Para acabar extraen y suben los archivos de este Zip como se indica:

http://www.mediafire.com/download/l48tm3rv519l3f6/Mod_Foro_Risus_1.2.zip

m.admin_hcats.tpl -> themes/TUTEMA/templates/admin_mods

m.home_foro.tpl -> themes/TUTEMA/templates/modules

 

 

11) Espero que les sirva, y para adaptaciones para otros themes pedir soporte por este post.

 

Creditos Autor: vellenger

Creditos Actualizacion: ReModWrite

 

P.D

Un Saludo

P.D

Creditos Mod: Aperpen

  • Like 2

Share this post


Link to post
Share on other sites

¿Y las imágenes? +1 por el trabajo :)

 

Las imagenes estan en el post original que por cierto se me olvido ponerlo.

Link al mod original:

 pero bueno aqui te las plagio

3c17296504.png

ff36511fa2.png

034fdfd650.png

3bfd791dbd.png

 

y tambien un demo que no es mio

http://www.cuatropatitascelaya.com/

 

P.D

Gracias

P.D

Por cierto el mod se visualizaen el espacio  en donde salen los ultimos post en la home (no queda igual que en la demo pero si la estructura es igual)

Share this post


Link to post
Share on other sites

tengo un pequeño problema, instale este complemento puedo hacer las categorías padres sin problema pero cuando quiero cambiar una categoría a una categoría padre no puedo escojer ninguna categoría en la caja, miren. no se cual sea el problema, porque si guarda las categorías padre en la BD y todo, alguna fix?

layerba-uniendo-a-la-yerba.png

Share this post


Link to post
Share on other sites

Creo que te faltan las consultas a la db en especifico la segunda consulta

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

y si eso no te soluciona el poblema los archivos que dice el mod de modificar los comprimimes y los pasasen un enlace para revisarlos

 

P.D

debes dejar la url de tu pagina web ya que la que sale en la imagen ciscoa.info te redirige a http://ciscoa.info/blog/ y ademas no tiene nada que ver con Risus de phpost

Edited by ReModWrite

Share this post


Link to post
Share on other sites

perdón ahí era donde estaba la imagen alojada, esa consulta la ejecute dos 3 veces las ultimas dos veces me dice que esa consulta ya esta en la BD

mi pagina de pruebas es aqui:

http://layerbabuena.org/

 

voy a ver que le arreglo

Amigo si no pasas los archivos que dice el mod que hay que modificar dificil sera que compruebe los fallos que puedas haber cometido en la instalacion

Share this post


Link to post
Share on other sites

y tambien un demo que no es mio

http://www.cuatropatitascelaya.com/

 

P.D

Gracias

 

P.D

Por cierto el mod se visualizaen el espacio  en donde salen los ultimos post en la home (no queda igual que en la demo pero si la estructura es igual)

En un comentario aparece mi web ahora extinta, :3 que bien, aunque no se si ahora será lo pondré en mi nueva web, pero con mi modificación adicional quedaba todavía mejor :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      Una segunda forma de poder hacerlo!
       
      1 -  Ejecutar esta consulta
      ALTER TABLE `c_comunidades` ADD `c_headercom` VARCHAR(255) NOT NULL AFTER `c_nombre_corto`; 2 -  Buscar en c.comunidades.php en la función nueva_comunidad()
                      'fecha' => time(),                 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombre']), true),                 'ncorto' => $tsCore->setSeo($tsCore->setSecure($_POST['ncorto'], true)),
      y debajo agregamos
                      'headercom' => $tsCore->setSecure($tsCore->parseBadWords($_POST['headercom']), true),
      un poco más abajo buscamos
                  // Insertamos             if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO c_comunidades (c_autor, c_nombre, c_nombre_corto,
      y le agregamos a lado 
                   c_headercom,
      un poquito más abajo de
                      VALUES (                     \''.$tsUser->uid.'\',                     \''.$dato['nombre'].'\',                     \''.$dato['ncorto'].'\',
      agregamos
                          \''.$dato['headercom'].'\',
      Luego buscamos la función editar_comunidad($comid)
                          'pais' => $tsCore->setSecure($_POST['pais']),                         'desc' => $tsCore->setSecure($_POST['descripcion']),                     'color' => $tsCore->setSecure($_POST['back_color']),
      y debajo pegamos
                          'headercom' => $tsCore->setSecure($_POST['headercom']),
      más abajo buscamos 
                          c_acceso = \''.(int)$dato['acceso'].'\',                     c_permisos = \''.$dato['permisos'].'\',
      y debajo pegamos
       
                         c_headercom = \''.$dato['headercom'].'\',             
      3 - Después buscamos en c.crear_left.tpl
          <div class="item_form clearfix">         <label>Categoría</label>         <select name="categoria" id="ShowCats" class="required" onChange="com.subcat()" tabindex="3">             <option value="0">Selecciona una categoría</option>             {foreach from=$tsCats item=c}             <option value="{$c.cid}" {if $tsDato.c_categoria == $c.cid}selected="selected"{/if}>{$c.c_nombre}</option>             {/foreach}         </select>     </div>
      y debajo o arriba pegamos (se me olvido quitar los required, ya que no es obligatorio)
          <div class="item_form clearfix">         <label>Cabecera!</label>         <input type="text" name="headercom" tabindex="10" maxlength="180" size="60" class="required input_text https" placeholder="URL de portada (debe tener https://)" pattern="https://.*" value="{$tsDato.c_headercom}">         <small class="mg-lt">Solo admitirá los https!</small>     </div> 4 - Después buscamos c.com_info.tpl [línea 24 y 25]
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info" style="background-image: url({$tsCom.c_headercom});">     <div class="opacity">     <div class="vci_left floatL">
      luego debajo de la línea 61 agregaremos un 
          </div> 5 -  Por último agregaremos esto a comunidades.css
      .ver_com_info {     padding: 0; } .headercom {      background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
    • By 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
    • By 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
    • By 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
       
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×