Enlazar bloques de HTML con CSS

Hola Kumbieros !

Vengo a contaros un truco CSS que aprendí relativamente poco y aunque no es algo explícito de nuestro framework PHP, sí es algo a tener en cuenta a la hora de aplicar buenas prácticas a nuestro código.

Se trata de evitar situaciones en las que rompemos la estructura de nuestro código HTML, evitando hacer cosas como esta:

<a href="/blog/2016/12/01/enlazar-bloques-de-html-con-css">
<div>
<p>"DIV" Y OTRAS ETIQUETAS PESADAS DENTRO DE "A", NO PARECE LA FORMA MÁS CORRECTA</p>
</div>
</a>

Para evitar esto propongo crear una clase CSS con las siguiente propiedas:

<style>
/* ENLAZAR BLOQUES */
.box-link { overflow:hidden; position:relative; }
.box-link a { height:100%; left:0; position:absolute; top:0; width:100%;
</style>

Con la clase box-link le damos solidez a la caja que va a ser enlazada.
Y después le decimos al enlace que ocupe todo el alto y ancho de la caja.

Nuestro ejemplo quedaría ahora de la siguiente manera:

<div class="box-link">
<p>AHORA ESTA CAJA ES UN ENLACE</p>
<a href="/blog/2016/12/01/enlazar-bloques-de-html-con-css"></a>
</div>

Espero que les sea útil.

Gracias por leerme.

Hacer un redireccionamiento de enlaces antiguos

Recientemente he actualizado una web pasándola de un viejo y lento joomla, a un potente y velocísimo kumbiaphp. En el cambio me he visto inmerso en 3 graves problemas:

  1. Base de datos muy grande y algo lenta.
  2. Muchísimas visitas.
  3. Artículos con escritura de la URL “diferente”

El problema 1 y 2 se soluciono muy fácilmente usando la cache (de la cual hablaré próximamente en un post especifico dedicado a ello), pero lo verdaderamente sorprendente por su sencillez y simplicidad es como reconstruir las URL antiguas para que funcione con el nuevo diseño de url/rutas.

Al principio imaginé que la forma más sencilla de hacerlo sería mediante reglas en el htaccess. Después pensé en modificar el router del core para que funcionase como yo quería, pero al final resultó muchísimo más sencillo: redireccionamiento desde la vista 404.

Si estamos con el sitio en PRODUCCION, cuando una URL de nuestro sitio no existe, kumbia lanzará la vista 404.phtml para informarnos del error. Es allí, mediante unas simples validaciones donde podremos comprobar la URL que falla, analizarla y ver si tenemos que redirigirla a la URL correcta mediante un redireccionamiento 301 (Página movida permanentemente) o si por el contrario es un error 404 legítimo.

Ventajas:

  1. Fácil manejo desde PHP
  2. Independiente del servidor
  3. Más velocidad (sólo necesita validar si no existe la URL y no en cada Request)

Os dejo el código que me sirvió a mi, tanto cuando las urls correspondían con un patrón fijo, como para otras URL estáticas que tienen su correspondiente nueva URL. También podéis crear una clase para manejar vuestras redirecciones.

<?php
// views/_shared/errors/404.phtml
$buscar = filter_var(Router::get('route'), FILTER_SANITIZE_STRING);
$correspondecias = array(
"/jprovincia.html" => "provincia",
"/portada.html" => "portada",
"/jopinion.html" => "jopinion",
"/region.html" => "region",
"/local.html" => "local",
"/jsociedad.html" => "sociedadcultura",
"/deportes.html" => "deportes"
);
if(array_key_exists($buscar, $correspondecias)) {
Redirect::to("secciones/".$correspondecias[$buscar], 0, 301);
exit();
}
$articulo = (new Articulos)->find_first("urlantigua = '$buscar'");
if($articulo) {
Redirect::to("articulos/$articulo->slug", 0, 301);
exit();
}
// continuar con la vista 404
?>

KumbiaPHP Essentials

Bienvenido/bienvenida a KumbiaPHP.

Esta semana tenemos un video dedicado a los conceptos básicos de KumbiaPHP. Los videos son parte de una serie para compartir conocimiento y algunas prácticas que tenemos los desarrolladores que usamos este fabuloso framework.

Pueden descargarse los slides aquí: KumbiaPHP Essentials

Próximas semanas:

  • CRUD con KumbiaPHP (Create, Read, Update, Delete)
  • ActiveRecord Essentials
  • Templates (Bootstrap, Picnic, Foundation)
  • Autenticación Simple
  • Autenticación en base de datos
  • Uploads
  • Control de Acceso con ACL

How to create a REST Service with Basic Auth in KumbiaPHP

In the last post, we explained how to create a basic REST service. But everybody can access to it. What do if we want to make it  accessible only for authenticated users? There are a few authentication methods for REST service, and the most used of them is the OAuth, but today we shall speak about another  method more simple called Basic Auth.

Continue reading “How to create a REST Service with Basic Auth in KumbiaPHP”