Blog

En nuestro blog queremos explicar las cosas que nos pasan, los proyectos que realizamos, compartir nuestra experiencia como empresa para aprender de la experiencia de nuestros lectores.

Crear galerías de imágenes con Drupal 6, Views y CCK

Recientemente hemos desarrollado para uno de nuestros clientes un sencillo sistema para crear galerías de imágenes.

Nuestros clientes ya disponían de su propio sistema de galerías pero no estaban satisfechos, crear una nueva era demasiado complejo, requería crear un nodo por cada imagen.

Por este motivo decidimos crear un nuevo tipo de contenido que representara toda la galería donde fuera posible subirlas todas de golpe gracias a CCK y ImageField. También creamos una View necesaria para visualizar las imágenes en los nodos de la mejor forma posible, con paginación y en forma de grid. Y añadimos una plantilla al tema para incluirla.

En este articulo describo cual es el proceso para hacer que todo funcione.

Convenciones

Antes de empezar hago dos puntualizaciones sobre como está escrito este artículo:

  • Cuando hablo de secciones a las que se debe acceder escribiré una dirección dentro del directorio en el que tengáis instalado Drupal. Así, por ejemplo, si escribo "admin/settings" y tenéis Drupal instalado en "google.com" me refiero a que debéis acceder a "google.com/admin/settings"
  • Cuando describo los valores de un formulario solo incluiré los relevantes, los demás no son necesarios para el correcto funcionamiento del sistema

Empezamos desde cero

Empezamos con una instalación limpia de Drupal 6. A la que añadiremos los módulos necesarios:

  • CCK para añadir nuevos campos a los tipos de contenidos. Solo con activar el módulo Content ya tendremos bastante.
  • ImageField y sus requisitos: FileField y ImageAPI para añadir campos del tipo imagen
  • ImageCache para redimensionar las imagenes y adapatarlas a nuestras necesidades.
  • y Views para ponerlo todo en su sitio. Solo debemos activar Views y Views UI

Instalamos Drupal 6 y activamos los módulos anteriores y ya podemos empezar.

El tipo de contenido "Image gallery"

Lo primero que debemos hacer es crear el nuevo tipo de contenido para las galerías. Para ello accedemos a "admin/content/types/add" y completamos el formulario con:

  • Name: Image gallery
  • Type: image_gallery

Aceptamos y ya tenemos el tipo creado. Ahora vamos a añadir el campo imagen. Para ello accedemos a "admin/content/node-type/image-gallery/fields" y en el cuadro "New Field" completamos los datos con:

  • Label: Image
  • Field name: image
  • Type of data to store: File
  • Form element to edit the data: Image

Aceptamos y Drupal nos lleva a un formulario con más detalles del campo, aquí solo debemos cambiar el valor de:

  • Number of values: Multiple

Aceptamos y ya podemos crear nuestra primera galería.

image-gallery-1.png

Como podéis ver no es lo que queremos, las imágenes salen en su tamaño original, una detrás de la otra y todas (si tenéis paciencia podéis probar subiendo unas 120, a ver que pasa). Además salen siempre, tanto en el nodo como en el teaser.

Ocultando las imágenes originales

Primero ocultaremos las imagenes originales para más tarde mostrar la View que solucionará todos estos problemas. Para ello debemos acceder a "admin/content/node-type/image-gallery/display" y marcar las casillas etiquetadas con "Exclude", tanto para el "Teaser" como para el "Full node".

Creando un preset de ImageCache para las imagenes

Para que las imagenes tengan el tamaño que queremos crearemos un preset de ImageCache que más tarde utilizaremos en el View. Para ello accedemos a "admin/build/imagecache/add" y completamos el formulario:

  • Preset namespace: image_gallery_image_thumb

Al aceptar accedemos a un formulario de edición más completo, hacemos clic en "Add Scale And Crop" y completamos el formulario con:

  • Width: 300
  • Height: 300

Y aceptamos.

La View

Creamos una View que mostrará las imágenes con paginación, en una grid y con el tamaño correcto. Más tarde incluiremos esta view en la plantilla de las galerias de imagenes.

Accedemos a "admin/build/views/add" y completamos el formulario:

  • View name: image_gallery_image

Al hacer clic en "Next" aparece la interfaz de edición, respirad varias veces hondo que vamos a por ella.

En el cuadro "Basic Settings":

  • Style: Grid y 3 columnas
  • Use pager: Full pager
  • Items per page: 3 (dejamos el Offset a 0)
  • Access: Permission i seleccionem el permís "access content"

En "Arguments" hacemos clic en el "+" (excelente metáfora para "Añadir") y seleccionamos "Node: nid" y aceptamos. En el formulario que aparecerá seleccionamos:

  • Action to take if argument is not present: Provide default argument
  • Default argument type: Node ID from URL

En "Fields" añadimos el campo "Content: Image (field_image)" y en el formulario que aparece al aceptar:

  • Desmarcamos Group multiple values
  • Label: none
  • Format:image_gallery_image_thumb image linked to image

En "Filters" añadimos:

  • Node: Published como "Yes"
  • Node:Type como "Image gallery"

Y listos, guardamos y pasamos a otra cosa.

El tema

Para que se pueda visualizar esta view en los nodos modificaremos el tema para que así sea. En este ejemplo hemos quedado un tema derivado de Garland y allí hemos añadido una template llamada "node-image_gallery.tpl.php". Este es una copia de la plantilla "node.tpl.php" del tema original, pero incluyendo una nueva linea, concretamente:


  <div class="content clear-block">
    <?php print $content ?>
    
    <?php if (!$teaser) print views_embed_view('image_gallery_image', 
      'default', $node->nid); ?>
  </div>

El resultado final

Si después de todo esto accedemos a nuestra primera galería podemos ver como las imágenes aparecen una tras la otra, como su tamaño es el correcto y como es posible paginar.

image-gallery-2.png

Espero que os sea de ayuda!

Comentarios

Hola!! Necesitaría ayuda.

Hola!! Necesitaría ayuda. Porque he realizado todos vuestros pasos. Y me sale el nodo galeria pero no se ven las imagenes. Se ve el texto solo.

Me podeis ayudar?????

Hola Gustavo, La verdad es

Hola Gustavo,

La verdad es que con la información que me das no puedo hacer mucho! :)

Pasanos algo de info!

PD: Por probar: para que Drupal coja la plantilla node-....tpl.php ha de tener en la misma carpeta node.tpl.php. Está ahí?

HOla, ya he conseguido

HOla, ya he conseguido ajustar el template y lo lee correctamente. Ahora solo me sale una palabra en vez de las imagenes. pone Array nada más.

[...] Crear galerías de

[...] Crear galerías de imágenes usando Views y CCK, en el blog de Atenea tech. [...]

hola, he seguido todos los

hola, he seguido todos los pasos y en el view me aparece un mensaje debajo del preview con: Query ... No query was, y no se visualiza la página de la galeria.

bueno, es una forma de

bueno, es una forma de trabajo, pero si quiero subir todas de unas vez pueden usar el progallery, con el existe un tipo de contenido progallery y ahí se adjuntan todas las imágenes, se les puede incluso poner comentarios y el tema de la presentación ya está resuelto, gestiona las cosas con ajax incluso

Buenas maikel! Creo que la

Buenas maikel!

Creo que la tendencia en Drupal se separa cada vez más de módulos como proggallery, que crean todo lo necesario pero son poco flexibles.

Es mucho más potente utilizar convinaciones de estos módulos que se están convirtiendo en un estándar: views y cck, para crear soluciones que se adapten mejor a las necesidades de cada página.

De todas formas, si proggallery se adapta a las necesidades de tu página, es una muy buena opción!

Saludos,

Luis

Interesante tutorial. Me

Interesante tutorial.

Me sido de mucha utilidad, pero a mi me ha funcionado con esta pequeña modificación del código:

nid;
if (!$teaser) print views_embed_view($viewName, $display_id, $myNodes);
?>

En el mensaje anterio Me ha

En el mensaje anterio Me ha filtrado parte del código y no se ve todo, pero la diferencia básicamente es asignarle los parámetros como variables inicializándo cada una con el valor correspondiente.

Como se aplica en el tema Zen

Como se aplica en el tema Zen / Zen Classic ?

Hola !!! tengo un problema

Hola !!! tengo un problema instale Drupal 6 pero si trato de instalar el module de Image, cuando trato de acceder a la sección de modules como administrador, me encuetro que no puedo acceder, en su lugar me aparece una pagina en blanco. !!!!! :( Ayudaaa

no funciona!

no funciona!

Seguir todos los pasos pero

Seguir todos los pasos pero lo que no entiendo es lo de la template como la hago ahi fue donde me quede votado...

Ese codigo que esta ahi donde lo meto?

Hola!! Segui todos los pasos

Hola!!

Segui todos los pasos del tutorial pero al final, cuando voy a cargar mi página se muestra (X) en donde debe mostrar las imágenes... Que puedo tener mal??? Que me falta??? Gracias!!

Muy bueno, incluiría el

Muy bueno, incluiría el módulo ligthbox2 para pasar de los thumb a las imágenes ampliadas.

Pienso, que el tutorial esta

Pienso, que el tutorial esta bien elaborado, lo que pasa es que Drupal no es tan Plug an Play, hay que entender un poquito el funcionamiento de las plantillas y de cck y views.Suerte

Por cierto, ya sé de donde

Por cierto, ya sé de donde sacastes la info de esa galeria :P

hola no me sale las imagenes

hola
no me sale las imagenes paginadas.
donde esta el error , uso el theme acquia_slate solo modifique en el archivo node.tpl.php y añadi el codigo que mencionas arriba. algo mas que tenga que hacer?

saludos

Hola. Seguí todos los pasos y

Hola. Seguí todos los pasos y no funcionó. Inspeccioné el código que se genera y encontré que el camino de las imágenes de la vista no coincide con el camino real. Se supone que las imágenes se creen en sites/default/files/imagecache/image_gallery_image_thumb y en realidad se están creando en sites/default/files/imagefield_thumbs. Supongo se algún bug del módulo imagecache. Alguna idea al respecto?

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Al enviar éste formulario, usted acepta la política de privacidad de Mollom.