Comunidad de diseño web y desarrollo en internet online

Paginacion con Template

Citar            
MensajeEscrito el 06 Mar 2008 06:04 pm
Hola, tengo este problema...

Uso la clase templatepower para la gestión de templates en mi web pero me he encontrado con la dura tarea de realizar la paginacion en este sistema...
Tenia originalmente una funcion para realizar la paginacion que es la siguiente:

Código :

function paginar($pag, $total, $por_pagina, $url) {
  $total_paginas = ceil($total/$por_pagina);
  $anterior = $pag - 1;
  $posterior = $pag + 1;
  if ($pag>1)
    $texto = "<a href=\"".$url."pag=$anterior\">&laquo;</a> ";
  else
    $texto = "<b>&laquo;</b> ";
  for ($i=1; $i<$pag; $i++)
    $texto .= "<a href=\"".$url."pag=$i\">$i</a> ";
  $texto .= "<b>$pag</b> ";
  for ($i=$pag+1; $i<=$total_paginas; $i++)
    $texto .= "<a href=\"".$url."pag=$i\">$i</a> ";
  if ($pag<$total_paginas)
    $texto .= "<a href=\"".$url."pag=$posterior\">&raquo;</a>";
  else
    $texto .= "<b>&raquo;</b>";
  return $texto;
}


trate de llevarlo a templates y resulte en esto:

archivo paginar.tpl

Código :

<!-- START BLOCK : pasoUno -->
<a href="{url}pag={anterior}">&laquo;</a>&nbsp;
<!-- END BLOCK : pasoUno -->

<!-- START BLOCK : pasoUnoDos -->
<b>&laquo;</b>&nbsp;
<!-- END BLOCK : pasoUnoDos -->

<!-- START BLOCK : pasoDos -->
<a href="{url}pag={numero}">{numero}</a>&nbsp;
<!-- END BLOCK : pasoDos -->
<b>{pag}</b>
<!-- START BLOCK : pasoTres -->
<a href="{url}pag={posterior}">&raquo;</a>&nbsp;
<!-- END BLOCK : pasoTres -->

<!-- START BLOCK : pasoTresDos -->
<b>&raquo;</b>&nbsp;
<!-- END BLOCK : pasoTresDos -->


La nueva funcion seria la siguiente:

Código :

function paginar($pag, $total, $por_pagina, $url) {
      include_once( "clases/class.TemplatePower.inc.php" );
      $tpl = new TemplatePower( "estilo/estilo.tpl" );
      $tpl->assignInclude( "paginar", "estilo/paginar.tpl" );
      $tpl->prepare();
      $total_paginas = ceil($total/$por_pagina);
      $anterior = $pag - 1;
      $posterior = $pag + 1;
      if ($pag>1){
         $tpl->newBlock( "pasoUno" );
         $tpl->assign( "url", $url );
         $tpl->assign( "anterior", $anterior );
      }else{
         $tpl->newBlock( "pasoUnoDos" );
      }
      for ($i=1; $i<$pag; $i++){
         $tpl->newBlock( "pasoDos" );
         $tpl->assign( "url", $url );
         $tpl->assign( "numero", $i );
      }
      $tpl->gotoBlock( "_ROOT" );
      $tpl->assign( "pag", $pag );
      for ($i=$pag+1; $i<=$total_paginas; $i++){
         $tpl->newBlock( "pasoDos" );
         $tpl->assign( "url", $url );
         $tpl->assign( "numero", $i );
      }
      if ($pag<$total_paginas){
         $tpl->newBlock( "pasoTres" );
         $tpl->assign( "url", $url );
         $tpl->assign( "posterior", posterior );
      }else{
         $tpl->newBlock( "pasoTresDos" );
      }
   }


Tomando en cuenta que se encuentra en un archivo llamado funciones.php al cual hago llamado desde otro llamado noticias.php que esta en base a templates.

archivo noticias.php

Código :

<?php 
   ob_start();
   session_start();
    include("conectar_db.php");
   include("login.php");
   $link=Conectarse();
   include_once( "clases/class.TemplatePower.inc.php" );
   $tpl = new TemplatePower( "estilo/estilo.tpl" );
   @$noticia=$_GET['idnoti'];
   if ($noticia){
      $tpl->assignInclude( "contenido", "estilo/noticia_completa.tpl" );
   }else{
      $tpl->assignInclude( "contenido", "estilo/noticia.tpl" );
   }
   include("funciones.php");
   if ($noticia){
      $noti = "select * from noticias where Id = $noticia";
      $noti = mysql_query($noti);
      $noticias = mysql_fetch_array($noti);
      $tpl->gotoBlock( "_ROOT" );
      $tpl->assign( "titulo", $noticias['titulo'] );
      $tpl->assign( "noticia", $noticias['noticia'] );
      $tpl->assign( "autor", $noticias['autor'] );
      $tpl->assign( "fecha", $noticias['fecha'] );
      $comentario = "SELECT * FROM comentarios WHERE id_noticia='$noticia' ORDER BY Id ASC";
      $comentario = mysql_query($comentario);
      while ($comentarios = mysql_fetch_array($comentario)){
         $tpl->newBlock( "comentarios" );
         $tpl->assign( "Nick", $comentarios['Nick'] );
         $tpl->assign( "Comentario", $comentarios['Comentario'] );
      }
      if(@ $nickSession){
         $tpl->newBlock( "formulario" );
         $tpl->assign( "nickSession", $nickSession );
      }else{
         $tpl->newBlock( "mensaje" );
      }
      
   }else{
      @ $pag=$_GET['pag'];
      $url = "noticias.php?";
      if (!isset ($pag)) $pag = 1; 
      $result = mysql_query("SELECT COUNT(*) FROM noticias ORDER BY fecha DESC", $link); 
      list($total) = mysql_fetch_row($result);
      $por_pagina = 10;
      $reg1 = ($pag-1) * $por_pagina;
      $noti = "SELECT * FROM noticias ORDER BY fecha DESC LIMIT $reg1, $por_pagina";
      $noti = mysql_query($noti, $link); 
      while($noticia = mysql_fetch_array($noti)){
         $id_noticia=$noticia["Id"];
         $comentarios = "SELECT COUNT(*) FROM comentarios WHERE Id_noticia = $id_noticia";
         $comentarios = mysql_query($comentarios, $link);
         $tpl->newBlock( "noticias" );
         $tpl->assign( "titulo", $noticia['titulo'] );
         $tpl->assign( "contenido", $noticia['noticia'] );
         $tpl->assign( "autor", $noticia['autor'] );
         $tpl->assign( "fecha", $noticia['fecha'] );
         $tpl->assign( "ide", $noticia['Id'] );
         $tpl->assign( "coment", $totalComentarios);
      }
      paginar($pag, $total, $por_pagina, $url);
   }
   $tpl->printToScreen();
   ob_end_flush();
   ?>


y el archivo del template para la sección de noticias que es donde se incluye el bloque de paginación es el siguiente:

Código :

<center>
   <!-- START BLOCK : noticias -->
    <table border="0" cellpadding="0" cellspacing="0" width="494">
        <tr>
         <td width="492" colspan="2" background="images/bar_satatus.gif" height="25">
            <p align="center" class="titulo_noticia">{titulo}
         </td>
      </tr>
        <tr>
         <td width="74" height="69" align="left" valign="top">
                <p align="center"><img border="0" src="images/taka.gif" width="70" height="70">&nbsp;
         </td>
            <td width="428" height="69" valign="top">
                {contenido}
         </td>
        </tr>
        <tr>
            <td width="492" height="24" colspan="2">
                Publicado por {autor}&nbsp;&nbsp;{fecha}&nbsp;&nbsp;&nbsp;
            <a href="noticias.php?idnoti={ide}">Comentarios</a> (3)
         </td>
        </tr>
    </table><br>
   <!-- END BLOCK : noticias --> 
   <center><!-- INCLUDE BLOCK : paginar --></center>
</center>

Bien, no se si me habre explicado bien, el punto es que al momento de hacer el llamado a la funcion paginar() no muestra nada...

Por Takashi

Claber

105 de clabLevel



Genero:Masculino  

Caracas - Venezuela

firefox
Citar            
MensajeEscrito el 27 Mar 2010 12:04 pm
hola como estas? soy nuevo en esto, pero note que el metodo paginar() al final de todo le esta faltando:
$texto->printToScreen(); es problable que por eso no muestre nada, ya que no esta pasando ningun parametro a tu pagina html.
saludos, Nico.

Por Nico_rafaela

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Mar 2010 12:10 pm
ahora yo tengo un problema, ja, quiero utilizar templatepower para separa codigo php de html, pero no me esta funcionando, probe con un ejemplo muy basico en dreamweaver pero nada, tengo wampserver con php 5.1, la clase templatepower y demas pero nada, lo que hago es lo siguiente:

simple_example.php:
<?php
include( "class.TemplatePower.inc.php");

//make a new TemplatePower object
$tpl = new TemplatePower( "simple.tpl" );

//let TemplatePower do its thing, parsing etc.
$tpl->prepare();

//assign a value to {name}
$tpl->assign("name", "RoVeL");

//print the result
$tpl->printToScreen();
?>
------------------------------------------------------------------
simple.tpl:
<html>
<head>
<title>Simple Template Example</title>
</head>

<body>

<H2>Welcome {name}!</H2>

</body>
</html>
..................................................................
y no me anda nada, no se si me esta faltando algo o estoy haciendo algo mal..si podes explicarme un poco de eso te estaria super agradecido. y como es el tema de las pag .tpl como las uso y demas.
saludos. nico

Por Nico_rafaela

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.