WordPress: funcionalidad para listar páginas hijas

Os dejo un pequeño código de una función para listar páginas hijas dentro de una página cualquiera. De este modo nos ahorraremos tener que instalar ningún otro plugin o addon que nos ayude a hacerlo.

Simplemente deberéis copiar este código en vuestro fichero functions.php y comenzar a usarlo:

function my_list_child_pages() { 
	global $post; 
	
	$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
	
	if ( $childpages ) {
		$string = '<ul>' . $childpages . '</ul>';
	}

	return $string;
}

Explicación por líneas:

  • 2 : invocación de la variable global $post, que nos aporta el contexto de la página (o post) en el que se llama la función
  • 4 : llamada a la función wp_list_pages de WordPress, pasando como parámetros:
    • sort_column => menu_order (basado en el orden de cada una de las páginas indicado explícitamente)
    • title_li = por si quedemos dar mas información al tipo listado
    • child_of = indicamos el ID del post actual, para que solo se listen las hijas del mismo
    • echo = 0, para no obtener un retorno del título
  • 6 : si existen páginas, obtenemos su enlace y lo encapsulamos dentro de una lista no ordenada (<ul>)
  • 10 : devolvemos el contenido de la función, imprimible en nuestra PHP

Ahora podemos llamar a esta nueva función desde cualqueira de nuestros ficheros PHP del tema, y obtendremos un listado de las páginas hijas a la actual. Para poder modificar su funcionalidad podéis retocar los parámetros de la función wp_list_pages, que también podéis definir como array.

<?php echo my_list_child_pages(); ?>

Encontraréis mas info en la url: https://developer.wordpress.org/reference/functions/wp_list_pages/

 

Un saludo!

 

Share Button

WordPress: cómo crear shortcodes

Recientemente estoy muy metido en la modificación de un tema basado en Bootstrap 4, y me he metido en crear algunas mejoras adaptadas a mis necesidades. Algunas de ellas han sido la necesidad de crear una funcionalidad, por ejemplo listar páginas hijas, y poder usarlo desde diversos sitios.

Para ello he pensado que lo mejor es crear un shortcode, o código corto, a esa nueva funcionalidad.

Es tan sencillo como crear tu función en el fichero functions.php, por ejemplo, y declarar el shortcode:

function my_list_child_pages() { 
	global $post; 
	
	$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
	
	if ( $childpages ) {
		$string = '<ul>' . $childpages . '</ul>';
	}

	return $string;
}
add_shortcode('my_childpages', 'my_list_child_pages');

Ahora que ya lo tenemos declarado, sólo es necesario llamarlo desde una página cualquiera de nuestro WordPress, y nos presentará el listado de páginas hijas: [my_childpages]

Para más información, como por ejemplo, usar parámetros de configuración, podéis visitar la web de la documentación relacionada: https://codex.wordpress.org/Shortcode_API

 

Fácil y sencillo!

 

Un saludo.

Share Button

Festa del Trenet 2016

Muy buenas amigos, os dejo un pequeño vídeo de lo que hoy ha sido la Festa del Trenet, en Cornellà de Llobregat.

Espero que os guste!

 

Share Button

RasPi: instalar Nodejs por fin es fácil y sencillo…

Muy buenas, hoy me ha tocado reinstalar todo el soft de la Pi, incluso he actualizado firm e imagen. Me he pasado a la “lite”, con lo que hay algunas cosillas que hay que actualizar y bajar de cero.

El Nodejs no es el caso, pero me he visto obligado a tener que instalarlo de nuevo, y ya me temía estar un buen rato con ello.

Por suerte he dado con una cosilla qu enos facilitará enormemente la vida. Por fin han actualizado el repositorio para RaspberryPi y podemos descargarlo directamente con apt-get. Incluso podemos hacerlo online, sin más…

Os dejo los sencillos pasos para conseguirlo, veréis que esto ahora es coser y cantar, no como en versiones anteriores (véase algún post mío anterior):

Instalamos el repositorio de nodejs en su versión 6.x (la última en el momento de redactar este post)

pi@raspberrypi:~/ $ curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -

Descargamos e instalamos node con apt-get

pi@raspberrypi:~/ $ sudo apt-get install nodejs

A continuación ya tendremos Nodejs instalado según la versión que hayamos seleccionado anteriormente…

Como decía, fácil y sencillo!

 

Jordi

Share Button

Related Images:

SEAT600: TraveSEAT600 y la Aventura 2 Mares en SEAT 600, ya son realidad

Llevo mucho tiempo sin escribir en mi propio blog, llevo mucho tiempo sin interactuar, demasiado para mi gusto. Pero todo tiene una explicación…

Llevo varios meses trabajando en algo muy grande, algo que ya ha nacido y ha ido creciendo poco a poco durante los últimos meses… Y hoy ya podemos decir que es una realidad…

Es para mi todo un orgullo presentaros TraveSEAT600.com, nuestro pequeño gran proyecto en el mundo del SEAT 600. Y es que en los próximos días 22 a 25 de junio vera la luz con todo su gran esplendor nuestra primera travesía oficial, la Aventura 2 Mares en SEAT 600!

Más de 750km de carreteras nacionales, uniendo las ciudades de Barcelona, Andorra y San Sebastián. Más de 125 participantes, 54 SEAT 600 de diversos puntos de España, y mas de 60 vehículos circulando en lo que será, sin duda, el evento del año del SEAT 600.

No os perdáis toda la información en www.traveseat600.com.

El próximo día 22 de junio tenemos planificada la salida desde la fábrica de SEAT España en la Zona Franca de Barcelona. Será toda una fiesta, y estáis invitados a venir a acompañarnos en esta salida…

Es todo un orgullo haber trabajado duro en este proyecto con mis increíbles compañeros Francesc, Marc, Xavi E., Xavi U., Jordi O. y Oscar.

¿Te lo vas a perder? 😉

Share Button

PHP: CORS en PHP

Recientemente me he visto en la necesidad de crear un pequeño servidor REST para una aplicación en AngularJS que necesitaba explotar los datos de una MySQL. El problema era el maldito CORS (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) que tantos males de cabeza nos da en Angular se puede solventar de manera sencilla desde un fichero PHP, símplemente añadiendo un header:

 <?php
 header("Access-Control-Allow-Origin: *");

Ahora nuestro servidor REST (fichero php) ya es CORS Compilant…

Espero que os sirva de ayuda!

Jordi

Share Button

SEAT600: Manual de Uso y Entretenimiento – SEAT 600 E – El azul!

Buscando buscando, y tras mucho buscar… al final he conseguido un manual del SEAT 600 E, en bastantes buenas condiciones. Pero lo mejor de todo, es que se trata de la última versión publicada por SEAT, edición de Marzo de 1973. Una de las 10000 copias publicadas.

Todo un orgullo!!! 🙂

 

IMG-20160216-WA0000

IMG-20160216-WA0002

Share Button

PHP: contruir un Rest Server en sólo 65 líneas de código

Recientemente he necesitado crear un rest server para un aplicación web con AngularJS, que me hiciera de interfaz con respuesta JSON. Mi problema es que no la puedo desplegar en un servidor propio y por lo tanto no dispongo de Node para crear un buen servidor rest con Express. Por ello, lo que me he planteado es desplegar esta aplicación sobre mi servidor actual, que acepta PHP y, por lo tanto, HTML. Entonces, lo mas sencillo es intentar crear un servidor rest con las tecnologías disponibles. Y eso me ha llevado a hacerlo en PHP.

Cómo no, Google para estos casos es la mejor herramienta, y para no reinventar la rueda, me he decidido a utilizar una solución ya existente. Por lo tanto, lo que voy a hacer en esta ocasión es ofreceros el enlace al increíble artículo de LeaseWeb labs: Creating a simple REST API in PHP.

https://www.leaseweb.com/labs/2015/10/creating-a-simple-rest-api-in-php/

Os lo recomiendo, funcionando a la primera y sin ningún tipo de problema. Todo un aporte excelente!

Si seguís interesados en su proyecto, ofrecen la suite completa para crear un interfaz CRUD en este repositorio GIT: https://github.com/mevdschee/php-crud-api

Espero que os sea de ayuda, tanto o mas como me lo ha sido a mi.

Gracias por leerme!

Jordi

Share Button

El M40 cumple 43 años

Hoy 4 de enero de 2016 mi Seat 600 cumple 43 años desde el día de su salida de la cadena de montaje de la planta de la Zona Franca de Barcelona. Seguramente fue un gran regalo de reyes para aún español de la época. Hoy puedo decir que soy yo su orgulloso propietario.

Una vez más, me veo obligado a haceros llegar mi reconocimiento a este increíble vehículo, toda una hazaña de la historia de nuestro país.

Sirva esta gran foto para homenajear su larga y aún durarera trayectoria por la carreteras españolas.

Felicidades!

El M40 cumple 43 añitos

El M40 cumple 43 añitos

 

Saludos,

Jordi

Share Button

Java: El problema del órden de las classes en Eclipse

Recientemente he tenido que implementar un proyecto Maven con su plugin de overlays. En concreto, lo que he tenido que hacer ha sido extender un proyecto web maven que ya existía, para poder sobreescribir solo algunos de los fuentes que lo forman, como etsilos visuales y algún pequeño cambio a nivel de código fuente.

Antes de seguir, si no conocéis el tema de overlays de Maven, os recomiendo encarecidamente profundizar un poco en el tema, merece la pena: https://maven.apache.org/plugins/maven-war-plugin/overlays.html

Siguiendo con lo que os quería comentar, mi problema es que cuando ejecutaba el proyecto hijo, el que sobreescribe el original, todo parecía funcionar correctamente: overlays estaba haciendo su trabajo sin problemas, y mis estilos estaban siendo sobreescritos sin mayores incidencias. Pero, siempre hay un pero, a la hora de debuggar sobre Eclipse, el tema se complica, y en vez de trabajar sobre las classes java sobreescritas, se utilizaban las originales.

Menudo dolor de cabeza! Por mucho que buscaba no daba con el tema. Claramente era un problema de preferencias de órden de los fuentes: Eclipse no se entera de que el proyecto es un overlay (es la idea) e intenta debuggar las classes originales, no es la idea…

Bien, aquí está la solución, y esto sirve para cualquier proyecto, ya sea con empaquetado jar o war. En mi caso utilizo un servidor de aplicaciones Tomcat 7. Si nos vamos a Debug configurations… y buscamos nuestro servidor, expandimos sus propiedades, y en la pestaña Source, tenemos:

tomcat_debug_preferences

Mi proyecto es el que aparece en primer lugar, el segundo es el sobre el que realizo el overlay (el original) y los otros son dos proyectos importados, de Sentilo. En condiciones normales, vuestro proyecto no aparecerá, solo de los que depende. Esta lista es de órden preferencia. Es decir, a la hora de compilar y debuggar, Eclipse buscará los fuentes en ese órden. Vemos claramente el problema: nuestras classes sobreescritas no aparecen! Solución simple: añadimos nuestro propio proyecto y lo colo camos en primer lugar (botón Add…).

Una vez echo esto, al arrancar Tomcat en modo debug, cargará por preferencia nuestras classes, y luego las de los proyectos restantes. Por tanto, todas aquellas classes que hayamos sobreescrito las obtendrá del primer proyecto de la lista, que es el nuestro. Si las encuentra, seguirá en órden de preferencia con los proyectos restantes.

Ahora ya podemos debuggar, sea cual sea la naturaleza de nuestro proyecto, decidiendo nuestro órden de preferencia en los fuentes.

Espero haberos ayudado!

Jordi

 

 

Share Button