sexta-feira, 28 de agosto de 2009

Como criar seu próprio conteúdo (2)

Atenção: Olhe a nota de correção (FIX) ao final do post!

Continuando um post anterior

Quero incrementar as informações da minha revista: quero colocar uma capa para cada uma :)

Vá para /admin/build/modules ou (Administer > Site Building > Modules) e habilite o módulo “Upload”.

Agora vá para a parte de edição do conteúdo da sua revista.
No fieldset “File attachments”, escolhe seu arquivo (o meu eu baixei do mesmo site: SpawnAlley) e clique em “Attach”.

Clique em “Save”, verifique o resultado e…. a imagem aparece listada, mas apenas como um link! Isto se deve à customização que foi feita na apresentação deste conteúdo.
Obs.: Se quiser que o link para o arquivo anexado suma, basta desmarcar a opção “List” correspondente ao arquivo.

Mostrando a imagem

Vá para /admin/content/templates/revista.

Verifique novamente os body variables e procure pela imagem anexada. No meu caso, o caminho para a imagem se encontra em:

$node->files[1]->filepath

Repare que esta variável já nos fornece o caminho certo para acessar a imagem, logo se colocarmos o valor desta variável dentro de um “src” de uma <img >, já teremos uma maneira simples de visualizar a imagem.

No arquivo node-revista.tpl.php, insira a seguinte linha:

<img src="<?php print base_path() . "/" . $node->files[1]->filepath ?>" height="150" >

Salve e verifique o resultado na página da sua revista. O conteúdo, ao seu ver, pode ter ficado meio bagunçado.

Mas a partir daqui é só questão de organizer seu layout no arquivo node-revista.tpl.php. =)

Segue o resultado do meu site:

FireShot capture #49 - 'Drupal Training' - localhost_training

FIX: Ao inserir mais revistas, percebi que o índice "1" usado na linha de código mais acima, só funciona para o primeiro caso (ou seja para a primeira imagem anexada).

O comportamento que ocorre aqui, pelo que eu pude perceber, é: o índice varia de acordo com o contador de arquivos "upados" no site. E se a revista não anexou um arquivo (imagem, etc) este contador não avança.

Logo, deve-se testar se o array está vazio, caso contrário procurar pela primeira posição não nula:

<?php
if ($node->files != null) {
$i = 0;
while ($node->files[$i] == null) $i++;
?>
<img src="<?php print base_path() . "/" . $node->files[$i]->filepath ?>" width="100" >
<?php
}
?>
Com isso, cada "revista" mostrará a imagem correspondente.

Para saber mais sobre Theming, visite o Theming guide.

Nenhum comentário:

Postar um comentário