viernes, 5 de noviembre de 2010

Referencias a tokens de expresiones regulares en Notepad++

En vez de $1 hay que poner \1.

$1,$2,... es el formato estándar para hacer referencia a un token de la expresión regular con el que se ha encontrado la coincidencia.

Pero en el editor notepad++, si queremos buscar/reemplazar, usando expresiones regulares, debemos usar el formato \1,\2,... en vez de $1,$2,...

Por ejemplo, tengo las siguientes cadenas:

aaa342
bbb545

y me quiero quedar sólo con la parte de los números de cada cadena.
Entonces invoco el menú buscar/reemplazar de notepad++ (ctrl+h directamente, o bien, ctrl+f y pestaña 'reemplazar' o 'replace'):

buscar: [a-z]*([0-9]*)
reemplazar: \1

Y obtengo:

342
545

Al coincidir la expresión regular, las partes rodeadas por (), se pueden referenciar por identificadores, cuyo índice va en el orden de ocurrencia de dichos bloques, de izquierda a derecha y en los anidamientos de fuera hacia dentro.

Buenas herramientas para probar expresiones regulares online y offline.

Online:

(Aplicaciones web)

Offline:

(Aplicaciones para descargar)

jueves, 16 de septiembre de 2010

Widget "archivos" de Wordpress mostrando títulos de entradas

Problema: Quiero que el widget "archivos" de Wordpress (3.0.1) muestre la lista con los títulos de todas las entradas, en vez de una lista de meses y números de entradas en cada mes.


Como es un widget básico incluido en el núcleo de wordpress, la llamada a la función (wp_get_archives) que obtiene el listado final que muestra este widget, se encuentra en el fichero:


DirectorioSitioWordpress\wp-includes\default-widgets.php



Como vemos ahí.. a la función que obtiene el listado que muestra el widget Archivo, que es wp_get_archives, se le pasa el resultado de aplicar filtros suscritos al tópico "widget_archives_args".


wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c)));


Esto nos permite enganchar un filtro (ni más ni menos que una función) que se encargará de modificar el parámetro "type" del array que recibe como argumento la función "wp_get_archives", de "monthly", que es el valor que tiene aquí por defecto, al valor que nosotros queramos. En este caso concreto, "postbypost", para que se muestren los títulos de todas las entradas obtenidas. Además, esa función interceptora, la vamos a colocar en el fichero functions.php del tema que tenemos activado. De esta forma, aunque se actualice la base de wordpress, como no se toca nuestro tema, nuestra modificación seguirá funcionando.

Así que, no tocamos nada en el fichero "default-widgets.php" y añadimos al fichero rutaDeNuestroTema/functions.php de nuestro tema el siguiente fragmento de código.:



/**
* Archive widget showing post names instead of monthly links.
*
*/

add_filter('widget_archives_args','showArchivePostByPost', 1, 1);



function showArchivePostByPost($wp_get_archives_args){
$wp_get_archives_args['type'] = 'postbypost';
return $wp_get_archives_args;
}


Lo ideal es que nuestro tema tambien sea una extensión de uno existente, de esta forma, las actualizaciones de temas tampoco nos afectarán negativamente.


Otros parámetros para obtener otros tipos de listado se pueden consultar en la página de documentación de la función wp_get_archives.

jueves, 9 de septiembre de 2010

URL legibles - Permanent Links in WordPress 3.0.1

Esta entrada pretende aclarar y guiar, un poco, la configuración necesaria para activar la generación y uso de enlaces permanentes (comprensibles para el ser humano y más aprovechables para ser indexados por los motores de búsqueda de los buscadores) en Wordpress 3.0.1:


Un enlace permanente es por ejemplo "www.miblog.com/inicio/", en vez de "www.miblog.com/?p=1".


Configuración en Wordpress


En el gestor del blog vamos a "Ajustes"->"Enlaces permanentes".


Elegimos "Estructura personalizada" y definimos la estructura de los enlaces permanentes, por ejemplo como:


/%year%/%monthnum%/%postname%/


En el sitio construido con Wordpress, podemos tener páginas estáticas y páginas que albergan las entradas del blog. Para cada uno de esos tipos de páginas, la regla de reescritura para generar el enlace permanente es distinta.


Páginas estáticas


En el menú de "enlaces permanentes", si seleccionamos cualquier opción distinta de "predeterminado", las páginas estáticas tomarán la URI de la siguiente forma: "http://www.miblog.com/titulo_pagina/". Si la página está anidada dentro de otra, por ejemplo la página 2 tiene como superior a la página 1, la URI refleja este anidamiento:


http://www.miblog.com/titulo_pagina1/titulo_pagina2/


Páginas de una entrada del blog


Y las páginas que contienen entradas concretas del blog, tomarán el patrón definido en el menú "Enlaces permanentes", del apartado "Ajustes", del gestor del sitio de Wordpress. Supongamos que en la página 3 es donde se muestra el listado de las entradas(posts) del blog. Y a su vez la página 3, está anidada en la página 1, que no tiene a ninugna por encima (es por ejemplo la de inicio). Y supongamos que tenemos una entrada con el título "hoy no me puedo levantar", y la fecha de esa entrada es 30-02-2010. Para la entrada anterior se generaría la siguiente URI:


http://www.miblog.com/2010/02/hoy-no-me-puedo-levantar/


Como se puede apreciar, se ha aplicado el patrón de renombrado ("/%year%/%monthnum%/%postname%/") definido en el menú de "Enlaces permanentes" y no se ha tenido, para nada, en cuenta la página donde se muestra el listado de las entradas.


Algunas reglas y sugerencias para los patrones de renombrado


Hay que asegurarse de que cada enlace persistente apunta a una única entrada, para se debe terminar la estructura con %post_id% (identificador de la entrada) o %postname% (titulo de la entrada).


Por razones de rendimiento, para que a Wordpress le cueste menos diferenciar la URI de una página de la de una entrada(post), es preferible no iniciar la estructura del patrón para enlaces permanentes con campos %category%, %tag%, %author% o %postname%.


Lo común es iniciarlo con algún campo relativo a fecha. Por ejemplo:


/%year%/%monthnum%/%day%/%postname%/


Configuraciones necesarias en Apache


Si usamos Apache como servidor web, debemos activar la carga del módulo de escritura. Para ello, en el fichero de configuración del servidor "httpd.conf", debemos descomentar la línea:


#LoadModule rewrite_module modules/mod_rewrite.so


Descomentar, es borrar en este caso, el símbol "#", dejandolo así:


LoadModule rewrite_module modules/mod_rewrite.so


Reiniciamos el servidor para que se cargue el módulo y voilá, ya tenemos enlaces permanentes para las páginas de nuestra web construida con Wordpress.

domingo, 30 de mayo de 2010

Hack CSS exclusivo del IE8

Con éste hack, o truco, conseguimos que la propiedad de estilo sólo se aplique en el internet explorer 8. Ni Firefox, ni versiones inferiores de explorer detectarán las propiedades definidas de esta manera.

selector {propiedad: valor\0/;}

La clave del truco es "\0/", que se pone tras el valor de la propiedad del estilo.

Un ejemplo:

<!-- Definición del estilo en alguna parte -->

<style type="text/css">

p.textoRojoEnIE8 {color: #ff0000\0/;}

</style>

...

<!-- Código html dentro del tag body -->

<p class="textoRojoEnIE8">

El texto de éste párrafo se verá rojo, sólo en Internet Explorer 8.

</p>

<!-- O definiendo el estilo directamente en el tag. -->

<p style="color: #ff0000\0/;">

Éste párrafo también se verá en rojo, sólo en IE8.

</p>

Fuente: Internet Explorer 8 only CSS hack