Foros del Web » Programando para Internet » PHP »

Portal posts

Estas en el tema de Portal posts en el foro de PHP en Foros del Web. Buenas les explico mi objetivo xD necesito hacer un portal para un foro, en el cual tengo foros especializados para noticias, los cuales irán claramente ...
  #1 (permalink)  
Antiguo 06/01/2011, 08:00
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Portal posts

Buenas les explico mi objetivo xD
necesito hacer un portal para un foro, en el cual tengo foros especializados para noticias, los cuales irán claramente a mi portal.

el asunto es que en el portal no quiero que aparezca la publicación completa, sino que más bien solo una parte de esta y que tenga el tipico "leer mas..." para ver la publicación completa.

ya!, la cuestión es que quiero conocer una manera eficiente de obtener parte del texto de esta noticia, por ejemplo el primer parrafo etc.

Pero además quiero que si al publicar esta noticia esta tuviera una imagen que me genere un thumb de esta y me la muestre, bueno eso creoq ue sería bueno hacerlo con GD.

bueno yo quiero saber cual es la manera más eficiente ya que se me han ocurrido algunas pero prefiero la opinión de ustedes tambien xD

gracias y saludos.

PD: el texto no es solo un substr ya que hay que recordar que entremedio puede haber texto con formato etc.

saludos
  #2 (permalink)  
Antiguo 06/01/2011, 08:04
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Portal posts

www.php.net/strip_tags
+
www.php.net/substr


..
o como lo hago yo.. al momento de guardar el post.. guardo en otra columna un vista_previa..
prefiero cargar procesos al momento de guardar lo cual es solo 1 ves.. que al mostrar.. que pueden ser cientos

saludos.
  #3 (permalink)  
Antiguo 06/01/2011, 09:03
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

See lo segundo es muy cierto, pero creo que mientras lo haré con lo primero.
ahora

como obtengo la imagen? :3
si me pueden ayudar
gracias Hideki ^^
  #4 (permalink)  
Antiguo 06/01/2011, 10:56
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

¿y como haces al vista previa hidek?, eso me interesa, a ver si me puedes pasar algun ejemplo, funcion, idea, etc. lo que sea es bueno. perdón por la metida :X

Edito:

Ya te entendi, guardas una especie de copia en la base de datos OH ya.
  #5 (permalink)  
Antiguo 06/01/2011, 11:12
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

Bueno yo creo las imagenes con esta clase mira

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Creación de thumbnails ( creación de imágenes en miniatura )
  4.  *
  5. */
  6. class Imagenes
  7. {
  8.     //Propiedades de la clase
  9.     private $_imagen;
  10.     private $_formato = 'jpg';
  11.     private $_nuevaImagen;
  12.     private $_compresion = 90;
  13.     private $_nombre;
  14.  
  15.     /**
  16.      * Verificar si la libreria GD esta instalada.
  17.      */
  18.     public function __construct()
  19.     {      
  20.         $gd=gd_info();
  21.  
  22.         foreach ($gd as $key => $valor)
  23.         {
  24.             if(!$valor) {
  25.                 return 'La libreria GD no esta disponible.';
  26.             }
  27.         }
  28.     }
  29.  
  30.     /**
  31.      * Indicar a la clase con que imagen vamos a trabajar, es decir, a que
  32.      * imagen le vamos a crear un thumbnails.
  33.      */
  34.     public function setImagen($urlImagen)
  35.     {
  36.         $this->_imagen = $urlImagen;
  37.     }
  38.  
  39.     /*
  40.      * Indicar el formato de que tiene la imagen. La indicada en el
  41.      * método "setImagen".
  42.      */
  43.     public function setFormato($ext)
  44.     {
  45.         switch($ext)
  46.         {              
  47.             case "jpeg":
  48.                 $this->_imagen = imagecreatefromjpeg($this->_imagen);
  49.                 $this->_formato = $ext;
  50.                 break;
  51.  
  52.             case "jpg":
  53.                 $this->_imagen = imagecreatefromjpeg($this->_imagen);
  54.                 $this->_formato = $ext;
  55.                 break;
  56.  
  57.             case "png":
  58.                 $this->_imagen = imagecreatefrompng($this->_imagen);
  59.                 $this->_formato = $ext;
  60.                 break;
  61.  
  62.             default : return "Formato de imagen NO soportado.[jpeg|jpg|png]";
  63.         }      
  64.     }  
  65.  
  66.     /**
  67.      * Obtener el ancho (width) de la imagen.
  68.      */
  69.     public function getImagenX()
  70.     {
  71.         return imagesx($this->_imagen);
  72.     }
  73.  
  74.     /**
  75.      * Obtener el alto (height) de la imagen.
  76.      */
  77.     public function getImagenY()
  78.     {
  79.         return imagesy($this->_imagen);
  80.     }
  81.  
  82.     /**
  83.      * Nivel de compresión de la nueva imagen.
  84.      * Máximo 100.
  85.      * Cuanto mayor sea este valor mejor sera la calidad,
  86.      * pero tambien aumentara el tamaño.
  87.      */
  88.     public function setCompresion($compresion)
  89.     {
  90.         $this->_compresion = $compresion;
  91.     }
  92.  
  93.     /**
  94.      * Idicar nombre y ruta para la nueva imagen.
  95.      */
  96.     public function setNombre($nombre)
  97.     {
  98.         $this->_nombre = $nombre;
  99.     }
  100.  
  101.     /**
  102.      * Redimensionar imagen.
  103.      * Este método recibe el ancho (x) y el alto (y) que tendra
  104.      * la nueva imagen.
  105.      * Si $y no se indica, este se añadira con un ancho proporcinal.
  106.      */
  107.     public function reducir($x, $y = 0)
  108.     {      
  109.         if($y == 0) {
  110.             //Obtener el alto proporcionalmente.
  111.             $y = imagesy($this->_imagen) * $x;
  112.             $y = $y / imagesx($this->_imagen);
  113.         }
  114.  
  115.         $this->_nuevaImagen = imagecreatetruecolor($x, $y);
  116.  
  117.         imagecopyresampled($this->_nuevaImagen,
  118.                    $this->_imagen,
  119.                    0,
  120.                    0,
  121.                    0,
  122.                        0,
  123.                    $x,
  124.                        $y,
  125.                    imagesx($this->_imagen),
  126.                    imagesy($this->_imagen));
  127.  
  128.         switch($this->_formato)
  129.         {              
  130.             case "jpeg": imagejpeg($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  131.                 break;
  132.  
  133.             case "jpg": imagejpeg($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  134.                 break;
  135.  
  136.             case "png": imagepng($this->_nuevaImagen,$this->_nombre,$this->_compresion);
  137.                 break;
  138.  
  139.             default : return "Formato de imagen NO soportado.[jpeg|jpg|png]";
  140.                 break;
  141.         }              
  142.     }
  143. }
  144. ?>

con esta clase solo lo haces asi:

Código PHP:
Ver original
  1. //thumb
  2.     include("image.php");
  3. //imagen origen
  4.         $imagen = "carpeta/nombre de la imagen";
  5.  
  6. //crear objeto
  7.         $thumbnails = new Imagenes();
  8.  
  9. //indicar la imagen origen
  10.         $thumbnails->setImagen($imagen);
  11.  
  12. //indicar el formato de la imagen origen
  13.         $thumbnails->setFormato("jpg");
  14.  
  15. /*indicar el nivel de compresión. Segun este nivel la imagen
  16. tendra mayor o menos calidad.*/
  17.         $thumbnails->setCompresion(90);
  18.                    
  19. //indicar donde se creará y con que nombre el thumbnails
  20.         $thumbnails->setNombre("thumb/nuevo_nombre");
  21.  
  22. //indicar el tamaño del thumbnails (250)
  23.         $thumbnails->reducir(150);

como ves solo funciona con jpg, pero se puede arreglar para png y gif, además hay que saber la ruta de la imagen suerte.

otra cosa más facil es que extraigas la ruta de la imagen y la redimensiones con javascript o con el mismo php para no crear la imagen de nuevo en fin eso es cosa tuya.
  #6 (permalink)  
Antiguo 06/01/2011, 11:22
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

claro, lo que hace es almacenar en la base de datos

substr(strip_tags($post_completo),0,$largo_vista_p revia);

ahora, para sacar la primera imagen se me ocurrio que antes de parsear el mensaje del foro las imagenes aparecen usando el tag [img]

usando

$img = explode("[img]",$post_sin_parse);
$img = explode("[/img]",$img[0]);
$img = $img[0];

eso funciona para extraer el enlace de la primera imagen pero veo que el codigo es un pcoo feo xD
hay alguna otra manera en la qu pueda hacerlo?
  #7 (permalink)  
Antiguo 06/01/2011, 11:26
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

feo? jojo solo necesitas el segundo para trabajar, y pasarle los parametros el primero es para que funcione el segundo solo eso digamos que ya tienes tu ruta en $img entonces

Código PHP:
Ver original
  1. //thumb
  2.     include("image.php");
  3. //imagen origen
  4.         $imagen = $img;
  5.  
  6. //crear objeto
  7.         $thumbnails = new Imagenes();
  8.  
  9. //indicar la imagen origen
  10.         $thumbnails->setImagen($imagen);
  11.  
  12. //indicar el formato de la imagen origen
  13.         $thumbnails->setFormato("jpg");
  14.  
  15. /*indicar el nivel de compresión. Segun este nivel la imagen
  16. tendra mayor o menos calidad.*/
  17.         $thumbnails->setCompresion(90);
  18.                    
  19. //indicar donde se creará y con que nombre el thumbnails
  20.         $thumbnails->setNombre("nueva_carpeta/nuevo_nombre.jpg");
  21.  
  22. //indicar el tamaño del thumbnails (250)
  23.         $thumbnails->reducir(150);

ya ves no esta tan feo.
  #8 (permalink)  
Antiguo 06/01/2011, 11:32
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

Noo, yo me refería a que era feo mi método para obtener la ruta de la imagen es que cuando estaba escribiendo el mensaje tu todavia no posteabas la clase xD

ahora con respecto a tu codigo, como se el formato de la imagen si por ejemplo la imagen viene de sitios como imageshack, tinypic etc D:

eso me complica tambien

saludos
  #9 (permalink)  
Antiguo 06/01/2011, 11:34
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

Bueno también vi que si le agrego el tercer parámetro al explode le aliviano un poco la carga al servidor xD
pues yo solo necesito la primera imgen me da lo mismo cuantas más hayan xD

Código PHP:
Ver original
  1. $img = explode("[img]",$post_sin_parse,1);
  2. $img = explode("[/img]",$img[1],1);
  3. $img = $img[0];
  #10 (permalink)  
Antiguo 06/01/2011, 11:41
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

mira este post http://www.forosdelweb.com/f18/subir...xterna-846270/

curiososo como da vueltas la vida
  #11 (permalink)  
Antiguo 06/01/2011, 12:11
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

No, yo no quiero subir la imagen a mi servidor xD
lo que yo quiero es obtener por ejemplo el mime type de la imagen para saber que formato tiene xD para así poder abrirla con GD xD

por cierto, casi muero con la imagen que usaron como ejemplo en tu post xD
  #12 (permalink)  
Antiguo 06/01/2011, 12:21
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Portal posts

para obtener el mime type de una imagen externa tienes que copiarla a tu server ¬¬¡ otra cosa es la extension, que es diferente, de todos modos el post explica como copiar esa imagen externa a tu server, si lo que quieres es redimensionarla tambien lo explica y hace el script, y obvio la tienes que copiar, si no quieres hacer ese trabajo de copiado, solo obten $img y en el portal posts pones
<img src="<?php echo $img;?>" width="200"/>

más facil no?
  #13 (permalink)  
Antiguo 06/01/2011, 12:46
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 2 meses
Puntos: 91
Respuesta: Portal posts

Claro es más fácil pero si la imagen es muy grande demorará en cargar
aunque bueno es hecho de tener que achicar la imagen con GD ya hace que se demore más y si lo achico con estilos ps será el servidor de la imagen el que se tenga que hacer cargo de eso xD

así que yo creo que lo mejor es hacerlo así xD

igual todavía no se si mi método de obtener la URL de la imagen es lo suficientemente bueno xD

Etiquetas: portal, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:41.