lunes, 1 de noviembre de 2010

Sidebars dinamicos segun categoria

Primer Paso:

Primero tenemos que conseguir un listado de las ID de las categorias que tenemos en la base de datos (esto lo hacemos entrando al menu Categorias y pasando el mouse sobre cada una de ellas, y vamos a ver en la barra de estado una url que finaliza con
&tag_ID=
y el numero que le sigue es el ID que buscamos.

Por cada una de las categorias que queramos con sidebars propios, tenemos que crear un archivo sidebar-$ID.php en la carpeta del tema que tengamos activado actualmente. ( para la categoria 3 seria el archivo sidebar-3.php ).

Por ultimo cada archivo debe tener el siguiente contenido:
<?php if ( function_exists ( dynamic_sidebar($ID) ) ) : ?>
// Contenido HTML
<?php dynamic_sidebar ($ID); ?>
// Mas Contenido HTML
<?php endif; ?>
Nota: Otra vez reemplazando los $ID con el numero del id de la categoria, por ejemplo: 3

Segundo Paso:

En el archivo functions.php tenemos que incluir la siguiente funcion:
function obtenerIDCategoria()
{
$categoria = get_the_category();
return $categoria[0]->cat_ID;
}

Luego insertamos el siguiente codigo:
if(function_exists('register_sidebar')){ 
 
  foreach(get_categories() as $categoria){
   register_sidebar(array(
    'name' => $categoria->name,
    'id' => 'sidebar-'.$categoria->cat_ID
   )); 
  }  
 } 
Este codigo recorre todas las categorias creadas y las registra con su nombre e id para que sean mostradas en el menu Widgets.

Bueno ya tenemos creados los archivos donde se van a renderizar los sidebars y tambien los tenemos registrados en el wordpress para enlazar el sistema de wordpress con nuestros sidebars "customizados".

Ahora falta indicar a wordpress en que archivos queremos que se muestren los sidebars (archive.php, site.php, category.php, etc)

Ultimo Paso:

Yo unicamente modifique el archivo category.php pero pueden cambiar el que quieran. El codigo que hace falta para mostrar el sidebar de la categoria en la que estamos parados actualmente es:

get_sidebar( obtenerIDCategoria() );

Simplemente se esta mostrando el sidebar con el id obtenido con esa funcion, que devuelve el id de la categoria sobre la que estamos navegando.

A continuacion les dejo links a la referencia de las funciones que usamos.

register_sidebar
get_sidebar

Bueno eso es todo cualquier duda comenten!

viernes, 27 de agosto de 2010

Convertir discos de VirtualBox a VmWare

Para convertir los discos .vdi a .vmdk es necesario instalar el paquete Qemu y ejecutar el comando

qemu-img convert -O vmdk .vdi .vmdk

Conexion SSH sin contraseña

Yo lo uso generalmente en scripts donde tengo que hacer backup de un servidor a otro mediante scp o rsync utilizando ssh como medio de transporte. El tema es que con ssh siempre tenemos que ingresar la contraseña, asique ahora explico como hacer para que los equipos se autentiquen mediante llaves RSA.

Primero revisar que en el servidor (la maquina a la que nos vamos a conectar) este habilitado el demonio ssh (sshd), y que este activada la autenticacion RSA. Esto lo hacemos revisando el siguiente archivo :
nano /etc/ssh/sshd_config

#tiene que tener las siguientes lineas
RSAAuthentication yes
PubkeyAuthentication yes

Ahora en el cliente (la maquina que se conecta al servidor), tenemos que generar la llave RSA con el comando:
ssh-keygen -t rsa


nos va a pedir contraseña, simplemente presionamos Enter. Esto va a generar 1 set de archivos en la ruta //.ssh/
id_rsa y id_rsa.pub

ahora debemos copiar los 2 archivos terminados en .pub con el siguiente comando

scp  @:.ssh/

Un ejemplo:
scp id_rsa.pub rsync@192.168.1.200:.ssh/id_rsa.pub # con este comando copio el archivo id_rsa.pub dentro de la carpeta /home/rsync/.ssh

Una vez que tenemos estos archivos dentro del home del usuario en el servidor tenemos que agregar esas llaves publicas a un archivo llamado authorized_keys con el siguiente comando
cat id_rsa.pub >> authorized_keys

Cerramos la sesion en el servidor y listo! la proxima vez que querramos entrar al servidor por ssh desde el cliente no nos va a pedir mas la contraseña (siempre que querramos entrar con el usuario que tenga las llaves autorizadas, en mi ejemplo es el usuario rsync)