Hacer un Catálogo de temas de varios foros

Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

imported_Jhonnyf Seguir

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Tutorial hecho a solicitud en este tema
Enlace eliminado

Objetivo: hacer una pagina propia (indice.php) que reciba parametros por URL (indice.php?cat=peliculas&por=tema&letra=N&orden=asc) para mostrar un listado de todos los temas de varios foros a la vez, para de esa forma crear un listado general

¿Como Funciona?: Básicamente es mostrar un listado al igual que Enlace eliminado, pero usando los parametros de la URL armar una consulta SQL que cumpla con nuestros requisitos

Requerimientos:

  • Lenguaje SQL básico-Intermedio (clausulas order by, in, like, consultas a más de 1 tablas)
  • PHP Intermedio (Arreglos, controles como el For, Switch, etc)
Comentarios: El PHP que se usa en esá pagina es usando siempre las funciones de vBulletin, asi que cuando veas una funcion desconocida del PHP, te recomiendo entrar a esta web y fijarte su descripcion, uso, etc:
Enlace eliminado

-------------------------------------------------------------------
El Archivo PHP:
El contenigo del Archivo PHP tiene que ser el siguiente, lo he comentado lo más que he podido
PHP:
<?php

// #SET ENTORNO PHP #
error_reporting(E_ALL & ~E_NOTICE);

// # DEFINIR COSNTANTES IMPORTANTES #

define('THIS_SCRIPT', 'catalogo_descarga');  

// # PRE-CACHE DATOS Y PLANTILLAS #
//Obtener Grupo de Frases  Especiales
$phrasegroups = array();

//Obtener Plantillas Especiales desde el datastore
$specialtemplates = array();

// pre-cache Plantillas usadas en todas las Acciones de este php
$globaltemplates = array(
        // Pon aqui todas las plantillas que hayas creado, pero curiosamente si no las pones, igualito funciona (esto es lenguaje c pues
        'catalogo_descarga',
        'catalogo_descargabit',
        'catalogo_principal',        //RECUERDA QUE ESTE ES EL NOMBRE DE LA PLANTILLA QUE CREASTE
);

// pre-cache Plantillas usadas para Acciones Estemplates used by specific actions
$actiontemplates = array();

// # REQUERIDO #
require_once('./global.php'); //con esto cargas todas las opciones de vBulletin, ademas de la conexion, acceso a MySQL, etc, etc

// #######################################################################
// ######################## COMIENZO DEL SCRIPT PRINCIPAL ############################
// #######################################################################
    
$cat = $vbulletin->input->clean_gpc('r', 'cat', TYPE_STR);  //obtenemos el parametro  cat
    if ($cat!="")
    {
        switch ($cat)  
        {
            case "series":
                $en_foros  = "13,14,16"; //ID de foros donde hay series
                break;
            case "peliculas":
                $en_foros = "9,10,11"; //ID de foros de Peliculas
                break;
            case "software":
                $en_foros = "6,7,8"; //ID de los foros donde hay Programas
                break;
            default: 
                $cat = "error"; //puso cualquier cosa en cat o simplemente lo dejo en blanco
                 $en_foros = "1";
        }
    }

    if ($cat=="")    //si el cat esta en blanco, se asume que esta en el indice general
    {
        $navbits = array(); 
        $navbits[$parent] = 'Catálogo Principal';  //esto se vera en el NavBar (Ver Imagen 1)
        $navbits = construct_navbits($navbits); //Que vBulletin lo compile a su manera
        eval('$navbar = "' . fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plnatilla prueba
        eval('print_output("' . fetch_template('catalogo_principal') . '");'); //y Finalmente llamamos a nuestra plantilla personalizada
    }
    elseif($cat=="error")
    {
        header( 'Location: indice.php' ) ; //si hubo un error al leer la categoria, se lo manda al indice general (cat="")
    }
    else
    {
    //Si tenemos una categoria, vamos a vrificar si hay condiciones adicionales
    $letra = $vbulletin->input->clean_gpc('r', 'letra', TYPE_STR);  //si quiere que se muestre solo alguna letra
    $orderby = $vbulletin->input->clean_gpc('r', 'por', TYPE_STR);  //si quiere que se ordene por alguna columna en especial
    $descasc = $vbulletin->input->clean_gpc('r', 'orden', TYPE_STR); //el tipo de orden, si es ascendente o descendente

        
        
        
        if ($letra!= '') //vemos si puso alguna letra, de ser asi, se arma el like para el SQL
        {
            $letra = $letra{0}; //si pusieron alguna palabra o lo que sea, solo tomarémos la primera letra 
            $condicionlike = "and thread.title like '$letra%'";  //Aqui armamos el Like para el SQL
            $porletra="&letra=$letra"; //Esto lo vamos a usar para armar la URL en las plantillas :D, su uso es especifico para las plantillas
        }
        $navbits = array(); 
        $cat_template = ucfirst($cat); //esto es para que la palabra del parametro (serie, pelicula, etc), se convierta su primera letra 
                                        //en mayuscula (Serie, Pelicula, Etc) es para que se vea estetico en las plantillas al momento de ser presentado
        $navbits[$parent] = 'Catalogo: ' . $cat_template;  //esto se vera en el NavBar 
        $navbits = construct_navbits($navbits); //Que vBulletin lo compile a su manera
        eval('$navbar = "' . fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plnatilla prueba

        for ($i=65;$i<=90;$i++ ) //con este for hacemos el menu de las letras, la letra A es 65 en ascii y la Z es 90
        {
            $abecedario.= "<td class='alt1'><a href='indice.php?cat=$cat&letra=".chr($i)."'>".chr($i)."</a></td>"; //esta variable va a contener todos los TD para la tabla del abecedario
        }
        
        if ($descasc!="asc") //armamos el tipo de orden, el $descascflecha sirve solo para cpntrolar la direcion del la imagen de ordenamiento en las plantillas
        {
            $descasc!="desc";
            $descascflecha ="asc";
        }
        else
        {
            $descascflecha ="desc";
        }
        switch ($orderby) //segun lo que recibimos en este parametro, hacemos el order by, el $flecha[NOMBRE] sirve para mostrar la fecha si es necesario en la columna de la tabla que se muestra
        {
            case "autor":
                $orderby = " order by thread.postusername ";
                $flechaautor = "<a href='indice.php?cat=$cat&porautor" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "foro":
                $orderby = " order by forum.title_clean ";
                $flechaforo = "<a href='indice.php?cat=$cat&por=foro" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "fecha":
                $orderby = " order by thread.dateline ";
                $flechafecha = "<a href='indice.php?cat=$cat&por=fecha" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "visitas":
                $orderby = " order by thread.views ";
                $flechavisitas = "<a href='indice.php?cat=$cat&por=visitas" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            default: 
                $orderby = " order by thread.title ";
                $flechatema = "<a href='indice.php?cat=$cat&por=tema" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
        }
        //Consulta SQL que obtiene los registros segun las condiciones que le hayamos dado
        $get_temas_query = $db->query_read("SELECT thread.threadid, thread.title, thread.forumid, thread.postusername, thread.dateline,thread.views,thread.postuserid, forum.title_clean as title_forum 
        FROM " . TABLE_PREFIX . "thread as thread," . TABLE_PREFIX . "forum as forum 
        where thread.visible=1 and thread.forumid=forum.forumid and thread.forumid in ($en_foros) $condicionlike 
        ". $orderby . $descasc );
        if ($vbulletin->db->num_rows($get_temas_query) > 0) //Si hay regitros los muestra
        {    
            while ($temas = $vbulletin->db->fetch_array($get_temas_query))
            {
                if ($i==1) {$i=2;} else {$i=1;}; //esto es para alternar entre el atl1  el alt2 para que sea más estetico la tabla
                $temas['dateline'] = vbdate($vbulletin->options['dateformat'], $temas['dateline']); //convertimos la fecha de la tabla en fecha formato vBulletin
                eval('$catalogo_descargabits .= "' . fetch_template('catalogo_descargabit') . '";'); //evaluamos la plantilla de registro por cada registro obtenido
            };
        }
        else //Si no hay registros muestra el mensaje de no hay temas
        {
            eval('$catalogo_descargabits .= "' . "<tr><td class='alt1' colspan=5><center>No hay Temas</center></td></tr>" . '";');
        }
        eval('print_output("' . fetch_template('catalogo_descarga') . '");'); //llamamos a nuestra plantilla de descarga que se encargará de llamar al abecedario y al catalogo de cada registro
    }
?>



NUEVA VERSION 1.1

Enlace eliminado

Enlace eliminado
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Las Plantillas:
catalogo_descarga
HTML:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - Catálogo $cat_template</title>
</head>
<body>

$header 
$navbar 
<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 
>
<tr>
<td class="alt1"><a href="indice.php?cat=$cat">Todos</a></td>
$abecedario
</tr>
</table>
<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 
>
<tr>
<td class="tcat"><a href="indice.php?cat=$cat&por=tema$porletra&orden=asc">Tema$flechatema</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=autor$porletra&orden=asc">Autor$flechaautor</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=foro$porletra&orden=asc">Foro$flechaforo</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=fecha$porletra&orden=asc">Fecha$flechafecha</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=visitas$porletra&orden=desc">Visitas$flechavisitas</a></td>
$catalogo_descargabits
</tr>
</table>

$footer
</body>
</html>
catalogo_principal
HTML:
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - Catálogo Principal</title>
</head>
<body>

$header 
$navbar
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 

align="center">
<tr>
<td class="tcat">Indice Principal</td>
</tr>
<tr>
<td class="alt1"><a href="indice.php?cat=peliculas">Peliculas</a></td>
</tr>
<tr>
<td class="alt2"><a href="indice.php?cat=series">Series</a></td>
</tr>
<tr>
<td class="alt1"><a href="indice.php?cat=software">Software</a></td>
</tr>
</table>



$footer
</body>
</html>
catalogo_descargabit
HTML:
<tr>
<td class="alt$i">
<a href="showthread.php?t=$temas[threadid]">$temas[title]
</td>
<td class="alt$i">
<a href=member.php?u=$temas[postuserid]>$temas[postusername]</a>
</td>
<td class="alt$i">
<a href="forumdisplay.php?f=$temas[forumid]">$temas[title_forum]</a>
</td>
<td class="alt$i">
$temas[dateline]
</td>
<td class="alt$i">
$temas[views]
</td>
</tr>
El detalle con las plantillas, es que tienes que crear las 3 por cada estilo que tengas, para evitar eso, lo mejor es meterlo en un plugin y luego importarlo :D.. aqui la estructura de ese plugin

Archivo product-catalogo_fnp.xml
HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="catalogo_fnp" active="1">
    <title>Catalogo Descargas</title>
    <description>Catalogo</description>
    <version>1</version>
    <url />
    <versioncheckurl />
    <dependencies>
    </dependencies>
    <codes>
    </codes>
    <templates>
    <template name="catalogo_descarga" templatetype="template" date="1231858754" username="Admin" version="3.7.0"><![CDATA[$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - Catálogo $cat_template</title>
</head>
<body>

$header 
$navbar 
<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 
>
<tr>
<td class="alt1"><a href="indice.php?cat=$cat">Todos</a></td>
$abecedario
</tr>
</table>
<br />

<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 
>
<tr>
<td class="tcat"><a href="indice.php?cat=$cat&por=tema$porletra&orden=asc">Tema$flechatema</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=autor$porletra&orden=asc">Autor$flechaautor</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=foro$porletra&orden=asc">Foro$flechaforo</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=fecha$porletra&orden=asc">Fecha$flechafecha</a></td>
<td class="tcat"><a href="indice.php?cat=$cat&por=visitas$porletra&orden=desc">Visitas$flechavisitas</a></td>
$catalogo_descargabits
</tr>
</table>

$footer
</body>
</html>  ]]></template>
        <template name="catalogo_descargabit" templatetype="template" date="1231858619" username="Admin" version="3.7.0"><![CDATA[<tr>
<td class="alt$i">
<a href="showthread.php?t=$temas[threadid]">$temas[title]
</td>
<td class="alt$i">
<a href=member.php?u=$temas[postuserid]>$temas[postusername]</a>
</td>
<td class="alt$i">
<a href="forumdisplay.php?f=$temas[forumid]">$temas[title_forum]</a>
</td>
<td class="alt$i">
$temas[dateline]
</td>
<td class="alt$i">
$temas[views]
</td>
</tr>]]></template>
        <template name="catalogo_principal" templatetype="template" date="1231858595" username="Admin" version="3.7.0"><![CDATA[$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>$vboptions[bbtitle] - Catálogo Principal</title>
</head>
<body>

$header 
$navbar
<br />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" 

align="center">
<tr>
<td class="tcat">Indice Principal</td>
</tr>
<tr>
<td class="alt1"><a href="indice.php?cat=peliculas">Peliculas</a></td>
</tr>
<tr>
<td class="alt2"><a href="indice.php?cat=series">Series</a></td>
</tr>
<tr>
<td class="alt1"><a href="indice.php?cat=software">Software</a></td>
</tr>
</table>



$footer
</body>
</html> ]]></template>
    </templates>
    <plugins>
    </plugins>
    <phrases>
    </phrases>
    <options>
    </options>
    <helptopics>
    </helptopics>
    <cronentries>
    </cronentries>
    <faqentries>
    </faqentries>
</product>

aqui la muestra
http://www.forosenperu.com/indice.php?cat=series
http://www.forosenperu.com/indice.php?cat=peliculas
http://www.forosenperu.com/indice.php?cat=software
 

imported_Gasper

Eta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
1 Mar 2008
Mensajes
1.271
No seria mejor usar una consulta a la base de datos para buscar el id del foro que se ponga en la url??
 

imported_Gasper

Eta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
1 Mar 2008
Mensajes
1.271
Digo hacerlo en el mismo php que hiciste.
Y no el id sino usando el nombre del foro.
indice.php?cat=Peliculas
Entonces usando GPC y una consulta que busque los datos de los temas a mostrar donde el foro sea Peliculas.
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Digo hacerlo en el mismo php que hiciste.
Y no el id sino usando el nombre del foro.
indice.php?cat=Peliculas
Entonces usando GPC y una consulta que busque los datos de los temas a mostrar donde el foro sea Peliculas.
en mi ejemplo. si pones Peliculas, puede buscar en los foros:

Peliculas
Pelicuas en Español
Peliculas en Otros Idiomas
etc, etc

Pero seria interesante ver tu propuesta, para que quede más claro lo que dices
 

imported_Gasper

Eta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
1 Mar 2008
Mensajes
1.271
Vos usas:
PHP:
 case "series":
                $en_foros  = "13,14,16"; //ID de foros donde hay series
                break;
            case "peliculas":
                $en_foros = "9,10,11"; //ID de foros de Peliculas
                break;
            case "software":
                $en_foros = "6,7,8"; //ID de los foros donde hay Programas
                break;
            default: 
                $cat = "error"; //puso cualquier cosa en cat o simplemente lo dejo en blanco
                 $en_foros = "1";
Hay que especificar los id de temas, mi idea es:
PHP:
$cat = $vbulletin->input->clean_gpc('r', 'cat', TYPE_STR);
$get_forumid_query = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "forum where title = ". $cat ."");
Entonces despues usas while y obtenes el id del foro, esto es mejor ya que si el user one otro nombre de foro obtendra los temas de ese foro que escriba sin encesidad de modificar el php. Tambien podes usar un explode para poder poner varios foros, por ejemplo Peliculas-Series.
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
interesante, pero me gustaria verlo funcionando :D

lo puedes hacer para verlo en funcionamiento? cosa que se puede ver las 2 versiones
 

imported_Gasper

Eta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
1 Mar 2008
Mensajes
1.271
Ok, ahora no tengo mucho tiempo estoy haciendo unos trabajos y actualizando un hack de 3.0 a 3.7/3.8 cuando tenga un poco de tiempo lo hago.
 

imported_Monito

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Abr 2008
Mensajes
441
Hola Jhonnyf habra alguna manera de poder ponerle un "Paginador" al pie de los "listados" cada "X" lineas (50 ó 100) por ejemplo?

Desde ya muchisimas gracias :)

Saludos :D
 

pirado14x

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
13 Ene 2008
Mensajes
158
Muy bueno Jhonnyf muchas gracias pero serias tan amable de convertirlo en hack ya que así seria mas facil y evitaría fallos pero de todos modos yo lo voy a probar lo dicho muchas gracias
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Hola Jhonnyf habra alguna manera de poder ponerle un "Paginador" al pie de los "listados" cada "X" lineas (50 ó 100) por ejemplo?

Desde ya muchisimas gracias :)

Saludos :D
a la plantilla catalogo_descarga despues de
PHP:
$catalogo_descargabits
</tr>
</table>
agregale
PHP:
<br />
$pagenav
y el php ha cambiado un poco :D
PHP:
<?php

// ######################## SET ENTORNO PHP ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### DEFINIR COSNTANTES IMPORTANTES #######################

define('THIS_SCRIPT', 'catalogo_descarga');  
/*
este es el nombre de este Scrit, asi que en las plantillas podran usar una condicion asi:(en el Navbar o footer por ejemplo)
<if condition="THIS_SCRIPT == 'test'">
    No mostrar Adsense, algo especial etc, etc
</if>
*/
// #################### PRE-CACHE DATOS Y PLANTILLAS ######################
//Obtener Grupo de Frases  Especiales
$phrasegroups = array();

//Obtener Plantillas Especiales desde el datastore
$specialtemplates = array();

// pre-cache Plantillas usadas en todas las Acciones de este php
$globaltemplates = array(
        // Pon aqui todas las plantillas que hayas creado, pero curiosamente si no las pones, igualito funciona (esto es lenguaje c pues
        'catalogo_descarga',
        'catalogo_descargabit',
        'catalogo_principal',        //RECUERDA QUE ESTE ES EL NOMBRE DE LA PLANTILLA QUE CREASTE
);

// pre-cache Plantillas usadas para Acciones Estemplates used by specific actions
$actiontemplates = array();

// ########################## REQUERIDO ############################
require_once('./global.php'); //con esto cargas todas las opciones de vBulletin, ademas de la conexion, acceso a MySQL, etc, etc

// #######################################################################
// ######################## COMIENZO DEL SCRIPT PRINCIPAL ############################
// #######################################################################
$cat = $vbulletin->input->clean_gpc('r', 'cat', TYPE_STR);  
    if ($cat!="")
    {
        switch ($cat) 
        {
            case "series":
                $en_foros  = "13,14,16"; //ID de foros donde hay series
                break;
            case "peliculas":
                $en_foros = "9,10,11"; //ID de foros de Peliculas
                break;
            case "software":
                $en_foros = "6,7,8"; //ID de los foros donde hay Programas
                break;
            default: 
                $cat = "error";
                 $en_foros = "1";
        }
    }

    if ($cat=="")    
    {
        $navbits = array(); 
        $navbits[$parent] = 'Catálogo Principal';  //esto se vera en el NavBar (Ver Imagen 1)
        $navbits = construct_navbits($navbits); //Que vBulletin lo compile a su manera
        eval('$navbar = "' . fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plnatilla prueba
        eval('print_output("' . fetch_template('catalogo_principal') . '");'); //y Finalmente llamamos a nuestra plantilla personalizada
    }
    elseif($cat=="error")
    {
        header( 'Location: indice.php' ) ;
    }
    else
    {
         
$letra = $vbulletin->input->clean_gpc('r', 'letra', TYPE_STR);  
$por = $vbulletin->input->clean_gpc('r', 'por', TYPE_STR);  
$descasc = $vbulletin->input->clean_gpc('r', 'orden', TYPE_STR);         

        
        
        
        if ($letra!= '')
        {
            $letra = $letra{0};
            $condicionlike = "and thread.title like '$letra%'";
            $porletra="&letra=$letra";
        }
        $navbits = array();
        $cat_template = ucfirst($cat);
        $navbits[$parent] = 'Catalogo: ' . $cat_template;  //esto se vera en el NavBar 
        $navbits = construct_navbits($navbits); //Que vBulletin lo compile a su manera
        eval('$navbar = "' . fetch_template('navbar') . '";'); //Luego usamos esa compilacion con la plantilla navbar (que será llamado en la plnatilla prueba

        
        if ($descasc!="asc")
        {
            $descasc!="desc";
            $descascflecha ="asc";
        }
        else
        {
            $descascflecha ="desc";
        }
        switch ($por) 
        {
            case "autor":
                $orderby = " order by thread.postusername ";
                $flechaautor = "<a href='indice.php?cat=$cat&por=autor" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "foro":
                $orderby = " order by forum.title_clean ";
                $flechaforo = "<a href='indice.php?cat=$cat&por=foro" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "fecha":
                $orderby = " order by thread.dateline ";
                $flechafecha = "<a href='indice.php?cat=$cat&por=fecha" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            case "visitas":
                $orderby = " order by thread.views ";
                $flechavisitas = "<a href='indice.php?cat=$cat&por=visitas" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
                break;
            default: 
                $orderby = " order by thread.title ";
                $por = "tema";
                $flechatema = "<a href='indice.php?cat=$cat&por=tema" . $porletra. "&orden=".$descascflecha."'><img src='$stylevar[imgdir_button]/sort".$descascflecha.".gif' border=0></a>";
        }
        
        for ($i=65;$i<=90;$i++ )
        {
            $abecedario.= "<td class='alt1'><a href='indice.php?cat=$cat&por=$por&letra=".chr($i)."'>".chr($i)."</a></td>";
        }
        $perpage = 20;
        $pagenumber = $vbulletin->input->clean_gpc('r', 'pagenumber', TYPE_UINT);
    
        $itemcount = $db->query_first("SELECT count(thread.threadid) as itemcount
        FROM " . TABLE_PREFIX . "thread as thread," . TABLE_PREFIX . "forum as forum 
        where thread.visible=1 and thread.forumid=forum.forumid and thread.forumid in ($en_foros) $condicionlike 
        ");
        sanitize_pageresults($itemcount['itemcount'], $pagenumber, $perpage);
        $limitlower = ($pagenumber - 1) * $perpage + 1;
        $limitupper = $pagenumber * $perpage;        
        if ($limitupper > $itemcount['itemcount'])
        {
            
            $limitupper = $itemcount['itemcount'];
            if ($limitlower > $itemcount['itemcount'])
            {
                $limitlower = $itemcount['itemcount'] - $perpage;
            }
        }
        if ($limitlower <= 0)
        {
            $limitlower = 1;
        }
        
        $pagenav = construct_page_nav($pagenumber, $perpage, $itemcount['itemcount'], 'indice.php?cat='.$cat.'&por=' . $por .$porletra.'&orden='.$descasc);  
        
        $get_temas_query = $db->query_read("SELECT thread.threadid, thread.title, thread.forumid, thread.postusername, thread.dateline,thread.views,thread.postuserid, forum.title_clean as title_forum 
        FROM " . TABLE_PREFIX . "thread as thread," . TABLE_PREFIX . "forum as forum 
        where thread.visible=1 and thread.forumid=forum.forumid and thread.forumid in ($en_foros) $condicionlike 
        ". $orderby . $descasc .
        " LIMIT " . ($limitlower - 1) . ", $perpage"
        );
        if ($vbulletin->db->num_rows($get_temas_query) > 0)
        {    
            
            while ($temas = $vbulletin->db->fetch_array($get_temas_query))
            {
                if ($i==1) {$i=2;} else {$i=1;};
                $temas['dateline'] = vbdate($vbulletin->options['dateformat'], $temas['dateline']);
                eval('$catalogo_descargabits .= "' . fetch_template('catalogo_descargabit') . '";');
            };
        }
        else
        {
            eval('$catalogo_descargabits .= "' . "<tr><td class='alt1' colspan=5><center>No hay Temas</center></td></tr>" . '";');
        }
        eval('print_output("' . fetch_template('catalogo_descarga') . '");'); //y Finalmente llamamos a nuestra plantilla personalizada
    }
?>
si quieres cambiar el numero a mostrar, solo cambia esta linea
PHP:
 $perpage = 20;
Lo hize rapido si tiene errores, pues me avisan :D

aqui hecho en plugin cosa que asi, se puede actualizar mas facil en caso haya errores :D
Ultima version: v1
 

pirado14x

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
13 Ene 2008
Mensajes
158
Muchas gracias por el plugin lo e probado y si me aparece pero como dime donde aparece la id de los foros ya que no lo encuentro para poder cambiar la id que as puesto en el indice.php por al id de mis foros
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
Muchas gracias por el plugin lo e probado y si me aparece pero como dime donde aparece la id de los foros ya que no lo encuentro para poder cambiar la id que as puesto en el indice.php por al id de mis foros
cuando entras a tu foro, usualmente la URL es
forumdisplay.php?f=NUMERO

ese es el ID de tu foro
 

pirado14x

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
13 Ene 2008
Mensajes
158
wenas Jhonnyf e instentado agregar mas categorias pero no me sale por ejemplo al indice.php le agregue

PHP:
$cat = $vbulletin->input->clean_gpc('r', 'cat', TYPE_STR);  
    if ($cat!="")
    {
        switch ($cat) 
        {
            case "peliculas":
                $en_foros = "15,16,17,18,19,20,21,22"; //ID de foros de Peliculas
                break;
            case "series":
                $en_foros  = "25,26,27,28,29,30"; //ID de foros donde hay series
                break;
            case "Anime":
                $en_foros = "33,34,35"; //ID de los foros donde hay Programas
                break;
            case "Música":
                $en_foros = "37,38,39,40,41,42,43,43,45,46,47,48,49,118,117,50,51"; //ID de los foros donde hay Programas
                break;
            case "software":
                $en_foros = "54,55,56,57,58,59,60,61,62"; //ID de los foros donde hay Programas
                break;
            default: 
                $cat = "error";
                 $en_foros = "1";
        }
    }

    if ($cat=="")

Pero no me sale solo me salen las categorías anteriores
 

imported_Jhonnyf

Épsilon
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
6 Sep 2008
Mensajes
959
wenas Enlace eliminado e instentado agregar mas categorias pero no me sale por ejemplo al indice.php le agregue

PHP:
$cat = $vbulletin->input->clean_gpc('r', 'cat', TYPE_STR);  
    if ($cat!="")
    {
        switch ($cat) 
        {
            case "peliculas":
                $en_foros = "15,16,17,18,19,20,21,22"; //ID de foros de Peliculas
                break;
            case "series":
                $en_foros  = "25,26,27,28,29,30"; //ID de foros donde hay series
                break;
            case "Anime":
                $en_foros = "33,34,35"; //ID de los foros donde hay Programas
                break;
            case "Música":
                $en_foros = "37,38,39,40,41,42,43,43,45,46,47,48,49,118,117,50,51"; //ID de los foros donde hay Programas
                break;
            case "software":
                $en_foros = "54,55,56,57,58,59,60,61,62"; //ID de los foros donde hay Programas
                break;
            default: 
                $cat = "error";
                 $en_foros = "1";
        }
    }

    if ($cat=="")
Pero no me sale solo me salen las categorías anteriores
tienes que editar la plantilla catalogo_principal y ahi agregar las demas categorias

te recomiendo usar en ese switch , palabras en minusculas y sin acento (Música=musica, Anime = anime)
 

pirado14x

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
13 Ene 2008
Mensajes
158
Muchas gracias Jhonnyf ya lo instale y esta funcionando sin problemas

wenas Jhonnyf aqui estoy otra ves dándote la lata jeje e visto que en el mismo foro en el que as inspirado esta modificación ay un post donde pone indice y cuando le das no redirreciona al post que seria laweb/showthread.php?p= sino a la direccion del del indice osea laweb/indice.php?cat=peliculas querría saber como lo an hecho ?
35aulia.jpg
 

imported_Monito

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Abr 2008
Mensajes
441
Nuevamente yo dando lata xD

En la "barrita" de letras aparece...

Todos ___ A B C D E F G ... Z

Donde puse la "rayita" deberia de ir el simbolo "#" para que solo mostrara los casos en cuando un tema inicia con un número, como puedo agregarlo (?)

Muchas gracias nuevamente Jhonnyf

Saludos.


===Edito===
P.D. Ya me aparece el "paginador" ahora lo raro es que no me respeta la variable "$perpage" lo configure para 50 lineas "$perpage = 50;" y me sigue mostrando las mismas 20, elimine el indice.php y lo volvi a resubir (por si acaso) y nada :O haber si checas a que se pueda deber o si es problema mío solamente :(
 
Estado

🔒 Este tema está cerrado para nuevas respuestas.

⏰ Solo el creador del tema puede solicitar la reapertura de sus propios temas, pero únicamente dentro de los 60 días previos a la última actualización.

Arriba