Si quieres ayudar en el rediseño de Drupal.org en disambiguity.com ha puesto como
Y para no hacer el post tan corto pongo también un enlace a un resumen de la presentación que hizo Mark Boulton en la DrupalCon
Drupal es finalista en dos categorías de los premios que convoca packtpub.com: El Mejor CMS Open Source y el mejor CMS Open Source en PHP
El año pasado Drupal ya ganó en el mejor CMS de software libre y si quieres que vuelva a ganar tu voto tendrás que dar. Yo, Carlos, ya he votado.
Visto en Cambrico
El sucesor de workflow-ng para Drupal 6 se llama Rules y acaban de publicar la primera beta. Es un módulo del que dependen bastantes otros módulos además de ser realmente muy potente.
Es un pequeño paso para Rules pero un gran paso para Drupal 6.
En una de las webs que estamos desarrollando tenemos un archivo de css para corregir los errores de IE usando comentarios condicionales (como en todas las otras webs). Resulta que de repente no funciona y pongas lo que pongas no hace caso. Es más, luego veo que en algunas páginas funciona y en otras no.
Pues el problema estaba en que IE6 (por lo menos, IE7 ahora no lo sé) tiene un límite en en número de ficheros css que le puedes añadir y resulta que el fichero que arreglaba los bugs de IE6 estaba fuera de él. En un issue de Drupal ponen que el límite está en 31 aunque yo he contado los mios y llegan a 27. En esa página hacen mención al método createStyleSheet que tal vez sea el que use Explorer internamente para añadir los ficheros css externos aunque no lo tengo muy claro. Tal vez haya contado mal yo y si tengo más de 31 ficheros.
Supongo que algunos pensaréis que son una burrada de ficheros css pero cuando desarrollas en Drupal no son tantos. Hay muchos módulos que añaden los suyos y luego siempre va bien separarlos según sus funciones. Y cómo Drupal te permite juntarlos todos en uno luego no hay problema de rendimiento pero eso se hace con la web en producción, en desarrollo no se puede por que hay problemas de cache y no ves los cambios inmediatamente por lo que se desconecta hasta estar listos.
Se han encontrado varias vulnerabilidades en Drupal 5 y Drupal 6 por lo que es altamente recomendado actualizar.
Como es habitual además de corregir los agujeros de seguridad también se han corregido algunos bugs menores para Drupal 6 y para Drupal 5.
Esto últimamente ya parece Wordpress....
Lokiyo en un comentario de "el rediseño de Drupal.org" nos informa que ya ha sido escogida la empresa que se encargará de hacer el rediseño de Drupal.org: será Mark Boulton Design.
Entre los trabajos más destacables están Coolspotters y Noozz.com. Puedes ver más trabajos en su portfolio. Personalmente me gusta bastante el diseño de Coolspotters, a ver si Drupal.org por fin tiene el aspecto que se merece.
Ged de Drupalweb me lanza el reto de explicar un poco cómo funciona el cron en Drupal. En realidad lo hizo hace unos días pero no lo vi hasta ayer, pero bueno, supongo que más vale tarde que nunca.
Realmente pide saber más sobre el cron y sobre el ping, pero yo he escogido el cron. El ping se lo dejo a Pedro o a Daniel o a quien quiera.
Cómo introducción estaría bien saber que es el cron (de la wikipedia):
En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta programas a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab.
Cron se podría definir como el "equivalente" a Tareas Programadas de Windows. Los usuarios habilitados para crear su archivo crontab se especifican en el archivo cron.allow. De manera análoga, los que no lo tienen permitido figuran en /etc/cron.d/cron.deny, o /etc/cron.deny, dependiendo de la versión de unix.
Es decir, que es un programa que ejecutará en los intervalos que le digamos un determinado programa. Esto se hace usando el comando crontab -e o desde el panel de control de tu hosting. Lo siguiente es una linea del cron:
30 * * * * /home/carlos/mi_script
Esto hará que cuando lo minutos sean igual a 30, las horas cualquiera, el día cualquiera y el mes cualquiera se ejecuta /home/carlos/mi_script. Es decir, que el primer número indica los minutos, el segundo las horas, el tercero los días, el cuarto los meses y el quinto el día de la semana (me olvidé de este, gracias FeKuLa). Un asterisco vale de comodín o podemos poner más de un valor usando un coma cómo separador. Por ejemplo el siguiente código que ejecutará mi_script cuando los minutos sean 0, 15, 30 o 45, es decir, cada cuarto de hora:
0,15,30,45 * * * * /home/carlos/mi_script
Vale, ¿y ahora cómo unimos esto al cron de Drupal? Es fácil, en Drupal hay un archivo llamado cron.php (curioso el nombre) que es el que hemos de configurar para que el cron lo ejecute, por lo que añadiremos algo así:
0 * * * * wget -O - -q -t 1 http://www.midominio.com/cron.php
Con esto se ejecutará cada hora. Si estás en un hosting compartido es mejor poner un minuto diferente de 0, uno que no sea normal, así cuando se ejecute no habrá otros programas ejecutados por el cron e irá más rápido (o por lo menos no ayudará a sobrecargarse el servidor, algo más habitual de lo normal). Dependiendo de nuestra web tal vez sea necesario que se ejecute más o menos veces. También es posible que wget no esté en el path por lo que habrá que poner la ruta completa, normalmente suele ser /usr/bin/wget.
Recuerda que esta linea no se añade en el cron.php de Drupal, se ha de añadir usando el comando crontab -e (sólo para expertos) o usando tu panel de control de hosting.
Ahora sólo falta por saber que hace el fichero cron.php aunque primero hay que saber lo que es un hook en drupal. En la documentación de Drupal pone (traducido más o menos por mi):
Permite a los módulos interactuar con el núcleo de Drupal.
El sistema de módulos de Drupal esta basado en el concepto de "hooks". Un hook es una función de PHP a la que llamamos foo_bar(), donde "foo" es el nombre del módulo (cuyo nombre de archivo es también foo.module) y "bar" es el nombre del hook. Cada hook tiene una serie de parámetros predefinidos y el tipo de variable que devuelve.
Para ampliar Drupal, un módulo simplemente implementa un hook. Cuando Drupal desea permitir la intervención desde los módulos determina que módulos implementan un hook y ejecuta ese hook en los módulos habilitados que lo implementen.
Ummm, creo que no está demasiado bien explicado o lo he traducido mal. Intentaré explicarlo con mis propias palabras. Un hook no es más que una función de un módulo pero que se llama de una manera especial. Por ejemplo, si estoy haciendo un módulo que se llama carlosrincon y quiero que ese módulo tenga un bloque con mi foto tendré que usar el hook_block por lo que llamaré a mi función carlosrincon_block.
Entonces cuando Drupal quiera ver todos los bloques disponibles mirará de entre todos los módulos habilitados las funciones que se llamen nombremodulo_block y encontrará el mio.
Pues todo esto venía por que existe el hook_cron que cuando el fichero cron.php se ejecuta Drupal busca en todos los módulos que hayan implementado el hook_cron y ejecuta el hook. Así por ejemplo la búsqueda indexa el contenido cada vez que se ejecuta el cron.php por que tiene una función que se llama search_cron()
<?php
function search_cron() {
// We register a shutdown function to ensure that search_total is always up
// to date.
register_shutdown_function('search_update_totals');
// Update word index
foreach (module_list() as $module) {
module_invoke($module, 'update_index');
}
}
?>
Bueno, espero poder haber aclarado las dudas pero si hay alguna más para eso están los comentarios.
Dries está estudiando la empresa que hará el rediseño de Drupal.org de entre todas las que se presentaron para realizar el trabajo ya que la Asociación de Drupal la escogerá en breve (si no lo ha hecho ya). El rediseño era una de las mejoras que la gente había pedido en la última encuesta.
Además Dries también comenta que el proceso de migrar drupal.org a Drupal 6 está en marcha y por buen camino y que fue un error publicar Drupal 6 sin haber migrado antes Drupal.org.
Son dos buenas noticias ya que desde hace tiempo que drupal.org necesita un rediseño y un nuevo enfoque (por ejemplo tener subdominios por temáticas: downloads.drupal.org. developers.drupal.org.. y que la portada sea menos técnica y explique de manera fácil que es Drupal para usuarios inexpertos)
Si actualizaste tu Drupal 5 a la 5.8 tendrás que volver a hacerlo por que se olvidaron de un agujero de seguridad en la 5.8.
Más info en la página de Drupal.org
Anuncian en Drupal.org que acaban de publicar las "release candidates" de los módulos más esperados para Drupal 6, CCK, Views y Organic Groups (aunque esté último no tanto).
A continuación traduzco las principales novedades de cada uno:
Views 2 Nuevas características para usuarios finalesTodo el código html que "escupen" las vistas se hace a través de plantillas mejorando dramáticamente la facilidad de personalización del código; ya no es necesario el viejo wizard de las vistas para los temas.
La información para personalizar las vistas a través de plantillas se muestra directamente en la interfaz de usuario
Como siempre, CCK tiene una integración automática para todos los campos CCK. Hay dos nuevas características en Views 2:
Comparado con Views y CCK, Organic groups ha recibido menos adelantos para Drupal 6. La mayoría de los campos son mejoras que obtienen de las nuevas características en el core y en Views. Las más destacables son:
Aviso, está mal traducido además de que hay cosas que todavía no las conozco lo que hacía más complicado su traducción, a los que sepáis inglés es mejor que lo leáis sin traducir.
Existe en Drupal un tipo de input tipo texto que mientras escribes te sugiere "coincidencias". Por ejemplo, si usas tags en un tipo de contenido mientras escribes te va sugiriendo coincidencias; si escribo dru me sugiere drupal ya que es uno de los tags que ya existen que empiezan con dru. Usando los cursores puedo seleccionar las sugerencias y con el enter las pongo en el input. Podéis ver un ejemplo en la API de Drupal.
El problema viene cuando lo normal es sólo introducir un término y sólo hay un input ya que has de apretar dos veces el enter, una vez para seleccionar el término sugerido y otra vez para hacer el submit del formulario. Esto no pasa en el primer ejemplo que he puesto (en los tags de un contenido) pero sí que pasa en el API de Drupal y lo mismo ocurre si tenemos una búsqueda con autocomplete. Es más usable si sólo es necesario un enter, dos confunde a la gente, lo sé por experiencia propia y ajena.
Pero existe una solución, bueno, seguro que existen muchas soluciones pero yo pondré una que hemos usando en uno de nuestros últimos proyectos, una tienda online que tiene un buscador con autocomplete (si me dejan pondré el enlace para que la veáis aunque está en beta).
Creamos un archivo .js y lo ponemos en nuestro tema. En mi caso lo he llamado mod_autocomplete.js y lo he puesto en el directorio js dentro de mi tema. En ese archivo ponemos lo siguiente:
if (Drupal.jsEnabled) { $(document).ready(function() { /** Prueba para el return del buscar **/ $('#block-search-0 input.form-autocomplete').bind('keyup',function(e){ if (!e) { e = window.event; } //alert(e.keyCode); switch (e.keyCode) { case 13: // enter this.form.submit(); return true; } }); }); }
Has de tener en cuenta que #block-search-0 input.form-autocomplete es el input que se comporta como autocomplete. Cómo en mi caso era el de la búsqueda he añadido #block-search-0 para que sólo se comporte así ahí. Si quieres que se comporte con sólo un enter en todos los sitio pon sólo .input.form-autocomplete aunque no creo que sea lo normal.
El código que he puesto es en realidad en parte copia del código del autocomplete.js de Drupal pero al modificarlo desde un archivo externo no modificamos el Core.
Por último hay que incluir el js y para eso pondremos el siguiente código en el template.php de nuestro tema (siempre en caso de usar phptemplate como engine de templates)
<?php
drupal_add_js(path_to_theme() . '/js/mod_autocomplete.js','theme','header');
?>
Así, si usamos la opción de optimizar javascript Drupal podrá incluir este archivo. Por cierto, todo esto está probado sólo para Drupa 5.
A veces queremos poner un bloque justo después de un nodo es la versión de página pero antes de los comentarios. Por defecto Drupal pone siempre los comentarios después del contenido y no permite poner ningún bloque entre ambos.
He encontrado una solución de Drupal.org pero se ha de modificar Core, lo cual, está en casi todos los casos desaconsejado.
Una solución más práctica y rápida es definir una nueva región, meter los bloques que necesitemos en esa región y luego imprimir esa región en el node-tpl.php (o en el template que te interese)
Por ejemplo, en mi caso quiero poner el bloque de contenido relacionado justo después del contenido y antes que los comentarios.
Primero defino las regiones añadiendo una nueva que la llamaré 'just_after_content' (el nombre es lo de menos, puedes poner el que quieras pero es recomendable que sea identificativo). En drupal 5 esto se hace poniendo en el template.php de tu theme lo siguiente:
<?php
function mytheme_regions() {
return array(
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer'),
'floater' => t('floater'),
'just_after_content' => t('Justo depués del contenido'),
);
}
?>
y el Drupal 6 se pone en el .info de tu theme
<?php
regions[sidebar_right] = Right sidebar
regions[sidebar_left] = Left sidebar
regions[sidebar_right_sec] = Secondary right sidebar
regions[pre_content] = Before content
regions[content] = Content
regions[featured] = Featured
regions[content_bottom] = Bottom content
regions[header] = Header
regions[footer_region] = Footer
regions[just_after_content] = Justo después del contenido
?>
Una vez definida la región abrimos node.tpl.php y ponemos al final:
<?php
print theme('blocks','just_after_content');
?>
y sólo queda asignar el bloque a la región "just_after_content" desde la página de administración de bloques (/admin/build/block). Por cierto, en mi blog ahora mismo no me va con el block cache activado, tendré que mirarmelo mejor. Si has hecho todo esto y no te sale la región que has definido intenta limpiando la cache (admin/settings/performance)
John Forsythe de Blamcast publica en su blog la lista que ofrece google trends de webs a las que la gente también visita drupal.org.
Google Trends permite discriminar por país, así que por curiosidad lo filtré por España y sorpresa, mi blog sale en la 4 posición. En teoría, eso quiere decir una parte de la gente de España que va a drupal.org también acaba yendo a carlos.rinconsanchez.com.
El top 8 según Google trends del "also visited" con drupal.org y con filtro España son:
La verdad es que creo que google trends no es del todo fiable pero mira, me hace ilusión salir ahí :)