Ver Mensaje Individual
  #12 (permalink)  
Antiguo 19/09/2010, 13:38
fernandozunni
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Te explico, cuando ingresas un nuevo articulo en la base de datos, en la base deberás tener las columnas correspondientes... id titulo copete cuerpo_articulo url_amigable etc.

La columna url_amigable no es otra cosa que el titulo pasado por una funcion que haga que el titulo "Esto es una url amigable" se transforme en "esto-es-una-url-amigable".

Yo utilizo esta:
Código PHP:
Ver original
  1. public function amigar($url) {
  2.  
  3.  
  4.         $a = array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ");
  5.         $b = array("a","e","i","o","u","n","A","É","Í","Ó","U","Ñ");
  6.         $urli= str_replace($a, $b,$url);
  7.         $url=strtolower(trim($urli));
  8.  
  9.     // everything to lower and no spaces begin or end
  10.  
  11.     //replace accent characters, depends your language is needed
  12.     //$url=replace_accents($url);
  13.  
  14.     // decode html maybe needed if there's html I normally don't use this
  15.     //$urli = html_entity_decode($url,ENT_QUOTES,'UTF8');
  16.  
  17.     // adding - for spaces and union characters
  18.     $find = array(' ', '&', '\r\n', '\n', '+',',');
  19.     $url = str_replace ($find, '-', $url);
  20.  
  21.     //delete and replace rest of special chars
  22.     $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
  23.     $repl = array('', '-', '');
  24.     $url = preg_replace ($find, $repl, $url);
  25.  
  26.     //return the friendly url
  27.     return $url;
  28. }

De esta forma podes formar las urls de la siguiente forma:
http://www.miweb.com/editorial/71/es...a-url-amigable
en este caso cuando llamas un articulo a la DB, lo podes llamar por el id o por los dos id y url amigable:

o
www.miweb.com/editorial/esto-es-una-url-amigable
(en este segundo caso buscas en la base por el titulo solo, asi que no podes tener dos titulos iguales)

De manera que cuando clickeas en un link, en la pagina que te mostrara el articulo, tenes:
Código PHP:
Ver original
  1. $id=$_GET['idart'];
  2. $amigable=$_GET['urlamigable'];
  3. ...
  4. y haces la llamada
  5. "select * from ".$this->tabla." where id='$id' and url_amigable='$amigable' ";



Aca te muestro el renglon del .htaccess que hace que la url se convierta en amigable
Código PHP:
Ver original
  1. RewriteRule ^editorial/([0-9]+)/(.+)?$ index.php?modulo=editorial&idart=$1&urlamigable=$2 [NC,L]
Saludos.