• Cadastro
  • Fóruns
  • Manual
  • Projetos
  • Seminário
  • Tradução
  • Tutoriais
  • Dicas
Início

Pesquisa

Google

Itens ativos

  • baixar tradução de módulos
  • sobre módulo event
  • Reestruturação total do Pier de Ipanema
  • restrição de acesso em uma página
  • acessibilidade em site feito com drupal
  • Blocktheme não mostra permissões nem configurações
  • Site em Drupal - Edital Concurso
  • Data - Registros mais recentes
  • Listar nodes por idioma, no painel administrativo (i18n)
  • Como instalar e configurar o TinyMCE no Drupal
mais

Posts mais lidos hoje

  • sobre módulo event
  • Manual
  • Tutoriais
  • restrição de acesso em uma página
  • Sobre o Drupal
  • baixar tradução de módulos
  • Site em Drupal - Edital Concurso
  • acessibilidade em site feito com drupal
  • Reestruturação total do Pier de Ipanema
  • Tutorial: Instalando o Drupal 6 em português

Login do usuário

  • Criar nova conta
  • Solicitar uma nova senha

Parceiros

Assine o RSS do Drupal-BR

RSS dos itens mais ativos

RSS do conteúdo

RSS dos comentários

Início » Fóruns » Suporte » Drupal

Image Galleries Theming

Olá Pessoal,

Eu estou precisando mudar a exibição que o Image Gallery (do módulo Image) tem como padrão. Segue a parte do código que faz a exibição atual:

if (!empty($images)) {
        $content .= '<ul class="images">';
                foreach ($images as $image) {
                $content .= theme('image_gallery_img', $image, $size);
        }
        $content .= "</ul>\n";
}
 
function theme_image_gallery_img($image, $size) {
        $width = $size['width'];
        // We'll add height to keep thumbnails lined up.
        $height = $size['height'] + 75;
       
        $content = '<li';
        if ($image->sticky) {
                $content .= ' class="sticky"';
        }
        $content .= " style='height : {$height}px; width : {$width}px;'>\n";
        $content .= l(image_display($image, IMAGE_THUMBNAIL), 'node/'. $image->nid, array(), NULL, NULL, FALSE, TRUE);
        $content .= '<h3>'. l($image->title, 'node/'. $image->nid) .'</h3>';
        if (variable_get('image_gallery_node_info', 0)) {
                $content .= '<div class="author">'. t('Posted by: !name', array('!name' => theme('username', $image))) ."</div>\n";
                if ($image->created > 0) {
                        $content .= '<div class="date">'. format_date($image->created) ."</div>\n";
                }
        }
        $content .= "</li>\n";
        return $content;
}

O resultado desse código é algo parecido com isso:

<ul class="images">
    <li style='height : 150px; width : 100px;'>
        <a href="/gallery/?q=node/4"><img src="http://localhost/gallery/files/images/Dia-dos-pais-2008-008.thumbnail.jpg" alt="Peixinho e Cavalinho 2" title="Peixinho e Cavalinho 2"  class="image image-thumbnail " width="100" height="75" /></a>
        <h3><a href="/frog-gallery/?q=node/4">Peixinho e Cavalinho 2</a></h3></li>
    <li style='height : 150px; width : 100px;'>
</ul>

Eu preciso que a exibição disso seja assim:

<div id="gallery">
        <a href="images/1.jpg">
                <img src="images/1_thumb.jpg" />
        </a>
</div>

Eu tentei usar o Content Template, mas esqueci que ele só serve para Contant Types. Alguem tem alguma ideia de como posso alterar isso?

Agradeço novamente.

Abração!
Thiago Régis

‹ Integração com Flash Criação de menus no drupal ›
Enviado por tregismoreira em seg, 15/09/2008 - 22:46.
  • Drupal
  • 5.x
  • Por favor, se logue ou se registre para poder enviar comentários
  • 193 leituras

Se não me engano, a

Se não me engano, a exibição padrão do Image Gallery é uma view (caminho: /image). Com o theme wizard não será difícil aplicar o que deseja.

Abraço!

Leonardo Silva
Produtor Cultural
www.xulispa.com.br
www.ecultura.com.br

Enviado por Leopoldo em ter, 16/09/2008 - 11:54.
  • Por favor, se logue ou se registre para poder enviar comentários

Resposta:

Vamos lá então caro Thiago.
Pelo que vejo você quer ter acesso direto à imagem para alguma aplicação externa tal como Javascript ou CSS, e não está querendo utilizar o caminho origial criado pelo sistema.
Para realizar suas alterações primeiramente vamos criar um arquivo template.php, caso não tenha criando ainda, dentro da pasta de seu template.
Em seguida, vamos então copiar as duas funções usadas pelo theme() que queremos alterar:
theme_image_gallery() e theme_image_gallery_img().
Dentro do arquivo template.php que você deve criar dentro da pasta do seu tema em questão, TROQUE as INICIAIS das funções acima pelo nome do seu tema e você ficará com o seguinte código:
OBS.: Não feche as tags do PHP deixe em aberto!

<?php
/**
 * Alterações para a exibição do tema original
 */

function SEU_TEMA_AQUI_image_gallery($galleries, $images) {
  drupal_add_css(drupal_get_path('module', 'image_gallery') .'/image_gallery.css');

  $size = image_get_sizes(IMAGE_THUMBNAIL);

  $content = '';
  if (count($galleries)) {
    $content .= '<ul class="galleries">';
    foreach ($galleries as $gallery) {
      $content .= '<li class="clear-block">';
      if ($gallery->count) {
        $content .= l(image_display($gallery->latest, IMAGE_THUMBNAIL), 'image/tid/'. $gallery->tid, array(), NULL, NULL, FALSE, TRUE);
      }
      $content .= "<h3>". l($gallery->name, 'image/tid/'. $gallery->tid) ."</h3>\n";
      $content .= '<div class="description">'. check_markup($gallery->description) ."</div>\n";
      $content .= '<p class="count">'. format_plural($gallery->count, 'Há 1 imagem nesta galeria', 'Há @count imagens nesta galeria') ."</p>\n";
      if ($gallery->latest->changed) {
        $content .= '<p class="last">'. t('Última atualização: %date', array('%date' => format_date($gallery->latest->changed))) ."</p>\n";
      }
      $content .= "</li>\n";
    }
    $content .= "</ul>\n";
  }

  if (!empty($images)) {
        $content .=     '<div id="gallery"">';
    foreach ($images as $image) {
      $content .= theme('image_gallery_img', $image, $size);
    }
        $content .= "</div>\n";
  }

  if ($pager = theme('pager', NULL, variable_get('image_images_per_page', 6), 0)) {
    $content .= $pager;
  }

  If (count($images) + count($galleries) == 0) {
      $content .= '<p class="count">'. format_plural(0, 'Há 1 uma imagem nesta galeria', 'Há @count imagens nesta galeria') ."</p>\n";
  }

  return $content;
}

function SEU_TEMA_AQUI_image_gallery_img($image, $size) {
  $width = $size['width'];
  $height = $size['height'] + 75;
  $content = '<a href="'.$image->images['_original'].'"';
  $content .= '<img src="'.$image->images['thumbnail'].'"/>';
  $content .= "</a>\n";
  return $content;
}

Espero ter ajudado! (y)

Enviado por gilbertoalbino em sex, 26/09/2008 - 16:09.
  • Por favor, se logue ou se registre para poder enviar comentários

Revisão:

Ali no post acima eu esqueci de colocar algumas explicações:
Eu simplesmente retirei as saídas exibidas pelo PHP na variável $content e troquei pelas desejadas.
Finalmente, então eu precisei obter os valores para acessar as informações da imagem.
Paral tal, fiz uso da função print_r() da seguinte forma, caso contrário nao exibirá nada caso você coloque em outro lugar do script:

function SEU_TEMA_AQUI_image_gallery_img($image, $size) {
  print_r($imagem) // QUE É O OBJETO RESPONSAVEL POR TODA A MANIPULAÇÂO DA IMAGEM
  $width = $size['width'];
  $height = $size['height'] + 75;
  $content = '<a href="'.$image->images['_original'].'"';
  $content .= '<img src="'.$image->images['thumbnail'].'"/>';
  $content .= "</a>\n";
  return $content;
}

Então, como $imagem é um objeto, e contem um Array $images, ficou assim:
$image->images['_original'];
$image->images['thumbnail'];

Enviado por gilbertoalbino em sex, 26/09/2008 - 16:26.
  • Por favor, se logue ou se registre para poder enviar comentários
Designimage

Este site é feito, orgulhosamente, com Drupal.