quinta-feira, 27 de agosto de 2009

Como criar seu próprio conteúdo

Por padrão, o Drupal traz tipos de conteúdo bem simples e genéricos (Page e Story). É possível se criar um site inteiro usando somente estes dois tipos de conteúdo, porém não é o mais adequado.

Vamos supor que eu queira criar um catálogo de revistas de histórias em quadrinhos. Para mim, o mais adequado não seria simplesmente organizar minha informação por Título e Corpo. Eu quero poder separar as informações relativas a: Título, Editora, Ano, Número, Capa (uma imagem), Gênero, etc…

Para isso, vou criar o meu próprio tipo de conteúdo: revistas.

Antes de mais nada, precisaremos dos seguintes módulos:

  • CCK: possibilita a criação de diversos tipos de campos de dados;
  • Contemplate: nos ajudará na customização da apresentação do conteúdo.

Obs. Caso não saiba como instalar módulos em seu site Drupal, veja este post. (breve)

O processo se divide em três etapas: criar content type, popular, theming.

1. Criar Content Type (CT)

Vá para /admin/content/types (ou Administer > Content Management > Content Types) e clique em Add content type.

Preencha os campos de acordo com o CT:

  • Name: Revista
    Aqui vai o nome que você vai usar para identificar
  • Type: revista
    Este valor é usado pelo próprio drupal
  • Description: Ficha cadastral de uma revista.
    Uma pequena descrição para entender o CT criado. Não é necessário, mas pode vir a ser útil quando se tem muitos CTs.

Clique em Save e na próxima tela, clique em manage fields.

Nesta tela que iremos inserir os campos para o nosso CT:

  • Editora – field_editora – Text – Text field

Clique em Save e em Save field settings na página seguinte. Esta segunda página serve para configurar o campo.

  • Sinopse – field_sinopse – Text – Text area
  • Ano – filed_ano – Integer – Text field
    Minimum: 1900; Maximum: 2100; =D
  • Número – field_numero – Integer – Text field
    Minimum: 0;
  • Gênero – field_genero – Text – Text field

Com isso já temos um CT basicão :)

2. Populando

Na verdade por enquanto só iremos inserir uma revista para exemplificar :)

Vá para /node/add (ou Create Content) e clique em Revista. Nesta tela vemos um formulário para criar nossa revista.

  • Title: Spawn
  • Editora: image
  • Sinopse: A contagem regressiva para Spawn $200 começa aqui! O maior e mais ameaçador vilão de Spawn se junta ao elenco de vilões nesta edição. Jim descobre que ele não era o único paciente com segredos no Hospital St. Anthony e descobre respostas sobre a sua verdadeira identidade no último lugar em que esperaria encontrar.
  • Ano: 2009
  • Número: 198
  • Gênero: ação

* Infos explicitamente copiadas de: http://spawnalley.blogspot.com/

Clique em Save para ver como ficou o primeiro registro de uma revista…. bonito, né? É, eu também não achei ehehe Por isso que vem a terceira etapa.

3. Theming

Não gostei do jeito padrão que o Drupal apresenta as informações, então resolvi customizar esse página. Este processo de customização da apresentação de conteúdo se chama Theming.

Quero que as informações sejam mostradas da seguinte maneira:

< Título > #<Número>
Sinopse: <Sinopse>
Editora: <Editora>; Ano: <Ano>; Gênero: <Gênero>

Para criar este “layout” diferente, crie uma cópia do arquivo:

\meudrupal\sites\all\themes\meutema\node.tpl.php

com o nome de:

node-revista.tpl.php

Obs. Esta é a forma que o Drupal usa para reconhecer um arquivo de template: revista é o nome especificado em Type, quando criamos o nosso content type.

Vá para /admin/content/types (ou Administer > Content Management > Content Types) e clique em Templates. Clique em Create template correspondente ao CT (Revista).

Este módulo nos permite ver quais variáveis php devemos usar para exibir os campos desejados.
Clicando em Body –> BodyVariables, podemos ver os campos desejados:

  • $node->title
  • $node->field_editora[0]['view']
  • $node->field_ano[0]['view']
  • $node->field_numero[0]['view']
  • $node->field_genero[0]['view']
  • $node->content['body']['#value']

Agora vamos editar o arquivo recém criado para que este possa exibir as variáveis acima à nossa maneira.
Substitua a linha:

<div class="content"><?php print $content?></div>

Pelo seguinte código:

<div>
<?php print $node->title . " #" . $node->field_numero[0]['view']; ?><br />
Sinopse: <?php print $node->field_sinopse[0]['view']; ?><br />
Editora: <?php print $node->field_editora[0]['view']; ?>; Ano: <?php print $node->field_ano[0]['view']; ?>; G&ecirc;nero: <?php print $node->field_genero[0]['view']; ?>
</div>

Salve o arquivo e confira a mudança dando um Refresh na sua página.

Esta é uma forma simples de alterar a apresentação de conteúdo, mas que nos dá margem a uma customização mais organizada, modularizada, sem ter que fazer gambiarras no arquivo node.tpl.php. =)

Obs. A partir deste método, eu costumo acrescenter várias classes CSS’s e usar Javascript (jQuery) para enfeitar eheh

4 comentários:

  1. Olá Daniel, seu post sobre como estilizar as views é o melhor e mais completo que achei até hoje na web.

    Só na parte de Theming, indo em Administer > Content Management > Content Types eu não tenho a opção Templates, à partir daí já não posso mais seguir.

    Foi algum módulo que vc usou? Qual sua versão do drupal?

    ResponderExcluir
  2. olá Edenilson!

    Obrigado pelo elogio!

    Apesar de estar afastado do Drupal há uns meses, tentarei te ajudar :)

    Você instalou o módulo "contemplates"? Esta opção templates só fica disponível com o módulo instalado e habilitado ;)

    ResponderExcluir
  3. Agradeço muito mais uma vez Daniel! Sua ajuda foi fantástica.

    Obrigado!

    ResponderExcluir
  4. Olá! Sou novo no Drupal. Instalei o 7, e me pareceu uma ferramenta bem poderosa! No 7 já vem alguma ferramenta como esse CCK ou preciso baixar e instalar? Mais uma coisa, esse CCK permite o controle de versões?
    Obrigado e parabéns pelo tutorial! Excelente!

    ResponderExcluir