gentoo linux, java, software libre y otras hierbas
ago, 08 2008 - 5:13 pm

Dividir una entrada en varias páginas [WordPress]

Al momento de crear una entrada muy larga, como un tutorial por ejemplo, es posible dividir el post en varias páginas de una manera muy sencilla utilizando las etiquetas <!--nextpage-->. Funciona de manera similar a <!--more-->, pero dividiendo completamente el post. Y usándola podríamos obtener resultados como este:

dividir post

¿Cómo incluir esta característica en nuestra plantilla?

La mayoría de los themes deberían incluir esta importante característica, pero en algunos casos no es así. Por tanto, si la tuya no la posee, tendrás que incluir la función wp_link_pages dentro del archivo single.php (si tu plantilla utiliza ese archivo para mostrar las entradas) o index.php (si se muestran directamente con ese archivo). Los parámetros que podemos pasarle a wp_link_pages son:

  • before (string): Texto que va antes de los links. Por defecto <p>.
  • after (string): Texto que va antes de los links. Por defecto </p>.
  • next_or_number (string): Indica se deben usar los números (number) para las páginas o las palabras Previous y Next (next).
  • nextpagelink (string): Texto del enlace siguiente. Por defecto Next page.
  • previouspagelink (string): Texto del enlace anterior. Por defecto Previous.
  • pagelink (string): Formato para las páginas con número.  Si pones % en el string, será reemplazado con el número de la página.

Por ejemplo:

<?php
wp_link_pages('before=<div class="estilo">Páginas:&after=</div>&pagelink=page %');
?>

Mostraría algo como:

Páginas: Página 1 Página 2 Página 3 Página 4

Todo dentro de etiquetas <div class=”estilo”>, lo que haría muy fácil el proceso de aplicarle un estilo visual con CSS.

También existe una función llamada link_pages, que hace exactamente lo mismo que wp_link_pages. La diferencia es que link_pages, recibe los parámetros por separado, mientras que wp_link_pages los recibe todos en una cadena. IMPORTANTE: la función link_pages se encuentra en estado deprecated, lo que significa que NO se debe usar; siempre utiliza wp_link_pages.

Hacks en la función wp_link_pages()

Si deseas aplicar algún tipo de comportamiento especial a la función wp_link_pages, puedes hacerlo editando el archivo post-template.php, que se encuentra en wp-includes. Debes estar seguro de lo que haces, porque de lo contrario te puedes llevar un susto ;)

En mi caso, por ejemplo, edite dicha función de tal manera que añadiera las etiquetas <span class=”current”> y </span>, para poder aplicar un estilo visual a la “página actual”.

dividir post

Lo complicado aquí es que debes tener en cuenta el cambio, cuando hagas una actualización de la versión de WordPress. Por tanto es más seguro escribir un plugin, o algo más elaborado. Está en ti decidir qué hacer: un hack rápido y peligroso, o un plugin demorado pero seguro.

Happy hack!

12 Comentarios | deja el tuyo

ago, 02 2008 - 3:37 am

La mediocridad de los ingenieros (¿reir o llorar?)

Nota: este artículo te podría interesar si deseas saber cómo solucionar problemas de seguridad de manera “profesional“.

De pequeño siempre quise ser Ingeniero de Sistemas… ahora, con 19 años ya llevo 6 semestres (de 10 aquí en Colombia), aún cuando no he estudiado por 2 años falta de dinero, ya no se que quiero hacer.

Con algo que llevo de experiencia mezclándome con “ingenieros” me da algo de tristeza ver cómo de cada 20 hay 1 que vale la pena. Los demás son personas que no tienen puta idea de lo que hacen, estudiaron esto no por vocación sino porque piensan que se van a forrar en dinero, y además se creen Dioses que todo lo saben (aún cuando dedican la mayor parte de su tiempo laboral chateando con el MSN, volviéndose maestros en el uso del Facebook, o perdiendo el tiempo de cualquier otra manera).

La verdad es que hace tiempo quería escribir algo sobre esto, pero no lo hacía simplemente porque muy seguramente los lectores asiduos de este humilde blog no tienen nada de mediocres, y los ingenieros (a quienes iría dirigida la entrada) ni siquiera saben lo que es un puto lector de feeds, o me leerían usando IE 6.0 (no saben que existen “otros”) que a veces no carga bien esta página.

La historia… (aprende a solucionar problemas de seguridad)

Hace una semana entré a la página web del sistema de transportes colombiano Transmilenio, y descubrí que el sistema de búsquedas era vulnerable a ataques XSS y al famoso SQL Injection, por lo cual procedí (después de jugar un par de horas y descubrir ciertos datos interesantes) a avisar del fallo.

La cosa iba así para un XSS:

hola%' or title like '%hola> <script>alert(/POWNED/)</script><a

Y así para un SQL Injection:

hola%' UNION select * from NOMBRE_TABLA where 1=1 or 1 like '%1

Lo cierto es que esto es algo que se puede solucionar fácilmente, haciendo una limpieza a las variables antes de realizar una búsqueda en la base de datos, pero nuestros super ingenieros (que ni siquiera dieron las gracias) encontraron una mejor solución (la más óptima): deshabilitar las búsquedas.

Y aquí es donde no sé si reir o llorar. Poca vergüenza tiene esta gente, y lo peor es que los hay por montones. Muy triste…

También te podría interesar este artículo: Devolver el orgullo al nombre de “programador” para solucionar el déficit de programadores publicado en Punto de partida

Bonus…

P.d. esta es una entrada programada escrita el Viernes 1 de Agosto de 2008. Solo para dejar terminar la semana y ver si lo solucionan.

32 Comentarios | deja el tuyo

jul, 25 2008 - 2:05 pm

10 maneras de acelerar el arranque en Linux

  • Deshabilitar servicios innecesarios. Dependiendo del uso que le des a tu sistema, algunos servicios no son necesarios. ¿Usas Linux para el escritorio? Entonces no necesitas servicios como sendmail, httpd, etc. Por ejemplo, Ubuntu viene con los servicios para manipular dispositivos Bluetooth, pero personalmente no utilizo dispositivos de ese tipo; así que si es tu caso, puedes ir al menú Administración, seleccionar Servicios, y deshabilitar todos aquellos que no uses.
  • Deshabilitar módulos del kernel innecesarios. Si tu computador solamente se conectar a internet usando una conexión cableada Ethernet, no necesitas tener cargado el módulo Wireless del kernel. Claro, esto ya es un poco más difícil puesto que es necesario recompilar el kernel, seleccionando sólo los módulos que necesitas.
    La mejor manera de saber cuales son los módulos que actualmente están siendo cargados en tu sistema es instalar Bootchart. Este programa genera información acerca de lo que pasa cuando inicia tu sistema, los módulos que se cargan, con gráficos y todo XD.
  • Usar un entorno de escritorio liviano en vez de GNOME o KDE. Sobre todo si tenemos máquinas viejas o lentas; Además, en vez de esperar 30 o 60 segundos extra mientras inician GNOME o KDE, ¿porqué no esperar 10 segundos por Enlightenment o XFCE? No solo te ahorrará tiempo al inciar el sistema, sino mientras lo estás usando.
  • Usar un sistema de logueo basado en texto en vez de uno gráfico. La mayoría de mis máquinas Linux inician en el run level 3 en vez del run level 5. Esto hará que se detenga en el sistema de logueo basado en texto, donde solo tengo que poner mi usuario y password y ejecutar startx para iniciar mi entorno de escritorio. Los sistemas gráficos de logins son bonitos, pero incrementan el tiempo de carga y producen dolores de cabeza intentando recuperarse en caso de un fallo con las X.
  • Usa una distribución ligera. En vez de cargar una pesada Fedora, Ubuntu o openSuse, ¿porqué no intentar Gentoo, Arch o Puppy Linux? El tiempo de inicio es considerablemente menor con éstas.
  • Usar un OpenBIOS. Si eres lo suficientemente experto como para actualizar tu firmware, podrías considerar migrar a una BIOS open source. Una de las cosas por las que es recomendable usar un firmware open source es que permite a Linux inicializar el hardware una vez encendido el PC (en vez de que lo haga la BIOS). Aún así, si no te aventuras a hacer tal cosa, podrías considerar configurar tu BIOS para que, por ejemplo, no busque una unidad de disquete que no existe o que bootee directamente del disco duro (en vez de buscar en la unidad de CD primero).
  • Evitar el DHCP. Si estás en una red casera o empresa pequeña, las direcciones IPs no suelen dar muchos problemas. Considera entonces poner una IP fija a tu PC. Esto hará que al inciar no sea necesario conectarse al servidor DHCP para obtener una IP. Si haces esto, asegúrate de configurar el archivo /etc/resolve.conf para que seleccione adecuadamente los servidores DNS.
  • Si es posible, deshaste de hotplug. Hotplug es el sistema que te permite conectar nuevos dispositivos y usarlos inmediatamente. Si no necesitas esta característica, bórralo. Esto reducirá el tiempo de carga de tu sistema. En muchos sistemas, hotplug consume muchos recuersos al momento de iniciar el sistema. NOTA: udev ha reemplazado a hotplug en su mayoría; pero si usas una distribución antigua te podría resultar muy útil hacerlo.
  • Si eres realmente osado, podrías intentar initng. El sistema initng sirve como reemplazo para el sistema sysvinit y promete ser decrementar el tiempo de carga de sistemas basados en UNIX. Si quieres ver a initng en acción, puedes probar el LiveCD Pingwinek.
  • Usar un hack en Debian. Si usas Debian, existe un hack muy simple que puedes usar para inciar tus startup scripts en paralelo. Si le echas un vistazo al script /etc/init.d/rc, verás algo como CONCURRENCY=none más o menos en la línea 24. Cambia esto por CONCURRENCY=shell y deberías ver una reducción en el tiempo que tarda el sistema en iniciar.

13 Comentarios | deja el tuyo

« Entradas anteriores
Entradas recientes »