Mostrando entradas con la etiqueta elements. Mostrar todas las entradas
Mostrando entradas con la etiqueta elements. Mostrar todas las entradas

jueves, 15 de abril de 2010

Valores por defecto para parámetros de un Element

Esta es una técnica sencilla que nos servirá para definir valores por defecto (y también documentarlos) para los parámetros que pasamos a un element.

Como sabrás, los parámetros pasados a los element, están disponibles como variables en el mismo. La idea es definir un array asociativo con los valores por defecto y luego extraer las claves a variables.

El quid de la cuestión es usar el parámetro EXTR_SKIP para que extract no extraiga del array los parámetros que han sido pasados. Es decir, en caso de conflicto, el Element debe quedarse con el parámetro pasado y si no ha sido pasado, toma el valor por defecto.

Esto nos evita una serie de if(isset(...)), y hace muy legible el código y muy fácil documentar los parámetros del Element.

$defaults = array(
    'channel' => false,
    'count' => 1,
    'mode' => 'public',
    'type' => 'full'
    );
  
extract($defaults, EXTR_SKIP);

lunes, 11 de junio de 2007

Cache de elementos

Un tutorial de Tane Piper sobre cache de elementos. Hasta yo lo he entendido. Este otro también explica el uso de la clase cache, para cacheado específico que quieras hacer.

(Lo que no acabo de ver que funcione es el cache de vistas del que habla el manual.)

La cosa es sencilla: cuando quieres incluir un elemento y cachearlo para no volver a pedir los datos, añade un array con la clave 'cache' y el tiempo en segundos (o en un formato apto para strtotime).

echo $this->element ('menu', array ('cache' => '1 day'));

Eso sí, para asegurarte de que el elemento muestra la información actualizada, tendrías que borrar esta cache cuando se haga alguna modificación de los datos implicados.

El artículo propone este método en el afterSave del modelo, implicado (aunque también debería ir en el afterDelete, creo:

@unlink (CACHE.'views'.DS.'element__nombre_del_elemento');

El ahorro de peticiones a la base de datos puede ser brutal.