Archive

Posts Tagged ‘Programacion’

Manejar Jquery Thickbox desde javascript

April 14th, 2010

Estoy trabajando en un proyecto donde utilizo la clásica Thickbox. Y por vez número mil tuve que averiguar como manejar las ventanitas desde javascript (vaya a saber uno por qué, en la web del plugin no hay ninguna documentación sobre esto). Así que para evitarme esta tarea en el futuro, decidí tirar un minipost y luego venir a buscar la info acá.

Es simplemente utilizar la función:

tb_show(caption, url, imageGroup)

El tercer parametro es opcional, y es basicamente un array de imagenes para mostrar un slideshow.

En la url se pueden pasar los parametros para customizar la venta (height, width, TB_iframe, etc);

Era eso noma’

mstekl

Extendiendo Zend Framework Router

April 13th, 2009

Actualmente estoy desarrollando un sitio no muy grande, donde tengo varias funcionalidades del estilo listado de articulos, buscador, pagina de detalles de un articulo determinado, etc. Lo interesante es que también necesito tener un mini-cms, donde el cliente edite el contenido de una determinada página y la misma quede pública para los visitantes del sitio. El asunto es que las urls que utilizamos para ZF son del estilo sitio.com/modulo/controller/action. En mi caso, si el visitante quisiera acceder a la clásica página “Sobre Nosotros” deberia ir a una url del estilo: www.sitio.com/cms/ver/sobre-nosotros. Pero el cliente me pidió que la url sea algo asi: www.sitio.com/sobre-nosotros, lo cual obviamente iba un poco en contra del routeo estandar de ZF.

Me puse a googlear, e investigando un poco llegué a la siguiente solucion (no investigué mucho, por lo que calculo que capaz que hay alguna solución un poco mejor).

Básicamente lo que hice es extender el Zend_Controller_Router_Rewrite y fijarme si se puede dispatchear la url usando el esquema predefinido de ZF, si no se puede dispatchear seteo un controller y un action por defecto que se va a encargar de procesar el contenido del mini-cms. O sea, si me llega www.sitio.com/sobre-nosotros directamente voy a llamar al action ver del controller cms.

El código del router personalizado sería el siguiente:

class Stekl_Controller_Router_MiRouter extends Zend_Controller_Router_Rewrite

{

public function route(Zend_Controller_Request_Abstract $request)

{

$request = parent::route($request);

$dispatcher = $this->getFrontController()->getDispatcher();

if(!$dispatcher->isDispatchable($request)){

$request->setParam('pagina', $request->getControllerName());

$request->setControllerName('cms');

$request->setActionName('ver');

}

return $request;

}

}

No tiene nada complejo el router, simplemente lo que hago es obtener el request, luego el dispatcher y finalmente fijarme si se puede dispatchear. Si no se puede, creo un parámetro “pagina” con el valor que vino en lugar del nombre del controller. Finalmente seteo el controller y el action donde va a ocurrir la magia de interpretar el “sobre-nosotros” que me vino.

No termine aún, todavía falta decirle al Front Controller que use el router que acabo de escribir en lugar del que viene por defecto con ZF. Para ello en el bootstrap escribo lo siguiente:

$frontController = Zend_Controller_Front::getInstance();

$router = new Stekl_Controller_Router_MiRouter();

$frontController->setRouter($router);

$frontController->dispatch();

Y listo, con esto debería salir funcionando. Obviamente se podrian armar cosas un poco más elaboradas. Pero para lo que necesito me funciona.

mstekl