Hacer un Catálogo de temas de varios foros

Esta es una discusión para el tema Hacer un Catálogo de temas de varios foros en el foro Tips y tutoriales, bajo la categoría Recursos para vBulletin (Descargas); Tutorial hecho a solicitud en este tema http://www.vbhispano.com/foros/f31/s...374/#post49088 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 ...
Página:


Página 1 de 4 1234 ÚltimoÚltimo
Resultados 1 al 15 de 50

Temas similares

  1. Por beto 10 en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  2. Por cnicolaide en el foro Sala de Charla
  3. Conectar varios foros Respuestas: 7
    Por jacobomoya en el foro vBulletin 3 - Preguntas, Problemas y Soluciones
  4. Por pappocapo en el foro Soporte para Productos/Plugins
  5. varios foros Respuestas: 4
    Por bono1964 en el foro Sala de Charla
  1. #1
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Hacer un Catálogo de temas de varios foros

    Tutorial hecho a solicitud en este tema
    http://www.vbhispano.com/foros/f31/s...374/#post49088

    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 en este tutorial (click aqui), 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:
    Main Page - vB Wiki

    -------------------------------------------------------------------
    El Archivo PHP:
    El contenigo del Archivo PHP tiene que ser el siguiente, lo he comentado lo más que he podido
    Código 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

    Catálogo de temas de varios foros v1.1

    Última edición por Jhonnyf; 13/03/2009 a las 11:42
    vendecido31 le gusta esto.

  2. #2
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Las Plantillas:
    catalogo_descarga
    Código 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
    Código 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
    Código 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 .. aqui la estructura de ese plugin

    Archivo product-catalogo_fnp.xml
    Código 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
    vendecido31 le gusta esto.

  3. #3
    Miembro especial Miembro de diamante Array Avatar de Gasper
    Fecha de ingreso
    01 mar, 08
    Ubicación
    Argentina
    Mensajes
    1,510
    Gustado
    5 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    No seria mejor usar una consulta a la base de datos para buscar el id del foro que se ponga en la url??

  4. #4
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Cita Iniciado por Gasper Ver mensaje
    No seria mejor usar una consulta a la base de datos para buscar el id del foro que se ponga en la url??
    ya existe ese php, se llama forumdisplay.php

    forumdisplay.php?f=2

  5. #5
    Miembro especial Miembro de diamante Array Avatar de Gasper
    Fecha de ingreso
    01 mar, 08
    Ubicación
    Argentina
    Mensajes
    1,510
    Gustado
    5 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    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.

  6. #6
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Cita Iniciado por Gasper Ver mensaje
    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

  7. #7
    Miembro especial Miembro de diamante Array Avatar de Gasper
    Fecha de ingreso
    01 mar, 08
    Ubicación
    Argentina
    Mensajes
    1,510
    Gustado
    5 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Vos usas:
    Código 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:
    Código 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.
    vendecido31 le gusta esto.

  8. #8
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    interesante, pero me gustaria verlo funcionando

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

  9. #9
    Miembro especial Miembro de diamante Array Avatar de Gasper
    Fecha de ingreso
    01 mar, 08
    Ubicación
    Argentina
    Mensajes
    1,510
    Gustado
    5 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    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.

  10. #10
    Miembro especial Miembro de diamante Array Avatar de Monito
    Fecha de ingreso
    27 abr, 08
    Mensajes
    512
    Gustado
    6 Veces
    Me Gustan
    5 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    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
    Resurgire... ¡Cual Ave Fenix resurge de sus Cenizas!

  11. #11
    Miembro especial Miembro de oro Array
    Fecha de ingreso
    13 ene, 08
    Mensajes
    168
    Gustado
    2 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    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

  12. #12
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Cita Iniciado por Monito Ver mensaje
    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
    a la plantilla catalogo_descarga despues de
    Código PHP:
    $catalogo_descargabits
    </tr>
    </
    table
    agregale
    Código PHP:
    <br />
    $pagenav 
    y el php ha cambiado un poco
    Código 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
    Código PHP:
     $perpage 20
    Lo hize rapido si tiene errores, pues me avisan

    aqui hecho en plugin cosa que asi, se puede actualizar mas facil en caso haya errores
    Ultima version: v1
    Última edición por Jhonnyf; 11/11/2009 a las 07:25
    vendecido31 le gusta esto.

  13. #13
    Miembro especial Miembro de oro Array
    Fecha de ingreso
    13 ene, 08
    Mensajes
    168
    Gustado
    2 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    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

  14. #14
    Miembro especial Miembro de diamante Array Avatar de Jhonnyf
    Fecha de ingreso
    06 sep, 08
    Ubicación
    Dentro de mi
    Mensajes
    1,125
    Gustado
    50 Veces
    Me Gustan
    1 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    Cita Iniciado por pirado14x Ver mensaje
    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

  15. #15
    Miembro especial Miembro de oro Array
    Fecha de ingreso
    13 ene, 08
    Mensajes
    168
    Gustado
    2 Veces
    Me Gustan
    0 Veces

    Predeterminado Re: Hacer un Catálogo de temas de varios foros

    wenas Jhonnyf e instentado agregar mas categorias pero no me sale por ejemplo al indice.php le agregue

    Código 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

Página 1 de 4 1234 ÚltimoÚltimo