Posted by scarvajal on April 18, 2011 at 4:33pm
Recurro a los experimentados con Drupal porque no encuentro esta info en la web...
Tengo un bloque que tiene en la opciones de visibilidad código PHP que hace que solo muestre el bloque cuando me visitan desde el exterior.
En el site tengo cache de página y cache de bloques habilitado.
Hoy veo que el bloque es visible para mi aunque no debiese. El código estoy seguro que es correcto...
Significa que el modo cache hace que el código puesto en la opciones de visibilidad del bloque se ignore una vez que la cache ya fue creada?

Comments
2 sugerencias A) usar
2 sugerencias
A) usar Views.
B) usar http://drupal.org/project/blockcache_alter
A)
1) si no lo es, hace el bloque como un display de una view
2) En la definición de la view (en la solapa del display de bloque, en "Block settings"), declaras el modo de caching "Per user".
Si funciona, no tenés que codificar nada. Puede que no funcione, porque "user" me suena a usuario, y el usuario 0 será el mismo independiente del IP (del cual asumo que detectás la localización).
Supongo que lograrías el mismo resultado con algo de código, quizá más elegante.
B) Se me ocurre que deshabilites el cache para este bloque, y este módulo parece proveer esa funcionalidad (lo usé solo en un proyecto, a requerimiento de otro módulo por lo que recuerdo).
Dps contanos que tal te va
Gracias Mariano. Probé
Gracias Mariano.
Probé blockcache_alter y no funciona. O sea funciona si desactivo page caching pero dejo activado block cache y desactivo con este modulo el cache del bloque con contenido dinámico.
O sea tal parece que no es posible tener contenido dinámico si tengo page caching activo. Acá hablan del tema http://drupal.org/node/309394#comment-1161546
Page caching se ejecuta al final por encima de todos los cache anteriores. Y cachea la pagina íntegra.
Me pregunto como afectará la perfomance del site si desactivo page caching...
Sebastián Carvajal
Sugiero :
Sugiero : http://drupal.org/project/block_instances - que es una masa. Block instances es como una muy liviano context module pero re facil de configurar y anda bien con el core block cache.
Gracias Mojah pero por lo que
Gracias Mojah pero por lo que vi no sirve ese modulo para resolver este tema.
Ese módulo no funciona con el core block cache, en su issue queue hay un feature request pidiendo que implemente algun tipo de cache.
Además es igualmente afectado por page caching.
Gracias igual.
Sebastián Carvajal
tambien podrias poner boost y
tambien podrias poner boost y excluir el url de esa pagina?
Si, esa sería una
Si, esa sería una posibilidad.
Tendría que resignar a idea de hacer page-caching en la frontpage.
Pero en mi caso me va a convenir poner el bloque visible a todos y olvidarme de esta funcionalidad.
Gracias por ayudarme a esclarecer mis opciones.
Sebastián Carvajal
la pagina era justamente la
la pagina era justamente la front-page? Habría que ver si todo el mundo ingresa por ahí, a lo mejor no y no tenés tanto impacto.
Yo creo que podrías probar poner algún mecanismo de caching para anonimos (boost), exceptuando la front-page quevasé, pero usar la funcionalidad por la cual iniciaste el hilo... Por que? Porque por más que sea justo la front-page, igual tendrías todo el resto del sitio "blindado" por boost lo cual reduce muchísimo el nivel de carga del servidor y de la BD, y te permitiría tener la front-page "dinámica" digamos.
suerte :-)
Una solución fea y rápida
Una solución fea y rápida sería dejar tus settings de cache como están, desactivar el bloque y cargarlo por AJAX. Harías un nuevo menu callback que simplemente escupiría el html del bloque, con algo tipo:
PHP:
<?php$block = module_invoke('user', 'block', 'view', 3); // Por ej, el bloque de "Who's online"
echo $block['content'];
?>
JS:
$(function () {$.get('/mi_callback', function (data) {
$('#mi-right-sidebar').append(data);
});
});
Pero tendrías que hacerte un módulo custom para poner este menu callback y su respectivo drupal_add_js(), y quizás el feature no valga la pena.
Gracias Alexander. Por todo
Gracias Alexander.
Por todo lo que leí por ahí concluyo que tu propuesta es el modo de tener contenido dinámico con page caching habilitado.
Sebastián Carvajal
Promovido al grupo Spanish
Todas las consultas técnicas se deben realizar en el grupo Spanish y opcionalmente en algún grupo geográfico de interés.
Gracias por su colaboración.
--
[develCuy](http://steemit.com/@develcuy) on steemit