Criando sites

Nós que já fizemos alguns sites na vida sabemos que fazer sites é fácil, difícil é mantê-los. Se publicamos muito texto, temos que enchê-lo de tags marcando negritos, parágrafos e afins. O código em si fica totalmente ilegível. E se pudéssemos digitar todo o conteúdo de nosso site em arquivos de texto com marcação simples plenamente legível, sem quinhentas mil tags? E se toda a parte visual do site se concentrasse em dois únicos arquivos? Poderíamos mudar todo o visual do site mexendo apenas neles! Melhor: e se um shell-script montasse automaticamente as páginas PHP completinhas, com o visual e o conteúdo, prontas para o upload? Vamos aprender a fazer sites “the Linux way” com txt2tags, PHP e shell-script!

TXT2TAGS

Primeiro vamos cuidar do conteúdo. Vamos dar uma olhada num trecho do código fonte desta página do meu site, o LINUX para o Resgate:

<H1>Criando um relatório de hardware – Parte I</H1>
<P>
<I>Por <A HREF=”mailto:robertobech@linuxparaoresgate.com”>Roberto Bechtlufft</A>, 30/03/2007</I>
</P>
<P>
Acredito que muitos de vocês conheçam programas como o <A HREF=”https://www.lavalys.com/”>EVEREST</A>, que gera um relatório completo do hardware do PC: modelo do processador, fabricante do HD, quantidade de memória RAM instalada. O programa é de fato muito bom, mas tem alguns inconvenientes:
</P>
<UL>
<LI>A versão gratuita tem recursos limitados;
<LI>Você precisa comprar uma licença para cada PC em que for rodar o programa. Dá para imaginar uma coisa dessas?
<LI>Você precisa de um PC que boote o windows para rodar o programa (ou seja, se o windows não boota…)

</UL>

<P>
Caso você tenha em mãos um PC que não boota, ou que esteja sem HD, pode ser complicado conseguir informações sobre o hardware. Por isso, é muito importante saber usar as ferramentas do LINUX para essa tarefa, já que você pode bootar o Live-CD até se o micro estiver sem HD. E nem vai precisar do modo gráfico, pode fazer tudo via linha de comando.
</P>
<P>
Vamos usar algumas ferramentas bem básicas do Linux, dessas que vêm instaladas em qualquer distribuição.
</P>

No nosso navegador a página pode ficar muito bonitinha, mas convenhamos, num editor de textos a gente percebe a zona que é esse bando de tags. Pois bem, imaginem que pudéssemos obter o mesmíssimo resultado com este código:

=Criando um relatório de hardware – Parte I=

//Por [Roberto Bechtlufft robertobech@linuxparaoresgate.com], 30/03/2007//

Acredito que muitos de vocês conheçam programas como o [EVEREST https://www.lavalys.com/], que gera um relatório completo do hardware do PC: modelo do processador, fabricante do HD, quantidade de memória RAM instalada. O programa é de fato muito bom, mas tem alguns inconvenientes:

– A versão gratuita tem recursos limitados;
– Você precisa comprar uma licença para cada PC em que for rodar o programa. Dá para imaginar uma coisa dessas?
– Você precisa de um PC que boote o windows para rodar o programa (ou seja, se o windows não boota…)

Caso você tenha em mãos um PC que não boota, ou que esteja sem HD, pode ser complicado conseguir informações sobre o hardware. Por isso, é muito importante saber usar as ferramentas do LINUX para essa tarefa, já que você pode bootar o Live-CD até se o micro estiver sem HD. E nem vai precisar do modo gráfico, pode fazer tudo via linha de comando.

Vamos usar algumas ferramentas bem básicas do Linux, dessas que vêm instaladas em qualquer distribuição.

As vantagens são óbvias, mas vamos listá-las mesmo assim:

  • Trocamos as trocentas tags de parágrafos por linhas em branco – bem mais natural;
  • Para fazermos listas nem precisamos mais de tags: só colocamos um “-” antes de cada item;
  • Nossos headers não são mais marcados por tags <h1> ou <h2>. Usamos sinais de igual em seu lugar, =assim= para <h1> ou ==assim== para <h2>. O código ficou bem mais legível, não é?
  • Negrito e itálico: para o negrito usaríamos **dois asteriscos** e para o //texto em itálico// usaríamos… bom, vocês entenderam a idéia.
  • O primeiro código tem 1228 caracters. O segundo 1132. O conteúdo não mudou: esses 100 caracteres de diferença são todos TAGS que eliminamos. Nosso código ficou bem mais legível com 100 caracteres de tags a menos.

Para fazermos essa mágica toda só precisamos de um programa chamado txt2tags. Ele é desenvolvido por um brasileiro muito conhecido na comunidade Linux, o Aurélio, e tem pacotes para Ubuntu, Debian, Fedora, Slackware, FreeBSD e até mesmo Windows.

Usar o programa é muito simples: nós escrevemos um arquivo de texto com a formatação do txt2tags (como vimos no exemplo acima), tomando o cuidado de deixar a primeira linha em branco. Suponhamos que nosso arquivo se chame “teste.txt”. Para transformar esse arquivo de texto em um arquivo html basta abrirmos um terminal e digitarmos:

txt2tags -t html teste.txt

A flag -t indica o tipo de arquivo, já que o txt2tags também pode converter seu arquivo para os formatos XHTML, SGML, LaTeX, Lout, Man page, MoinMoin, MagicPoint e PageMaker. Uau 🙂

Se tudo correu bem, podemos abrir nosso arquivo html em nosso browser favorito e nos desmancharmos de prazer 🙂 Depois podemos aprender todas as marcações do txt2tags rapidamente nesta página do site oficial.

O txt2tags também é utilizado na confecção do site Dicas-L. O Rubens, editor do site, explicou todo o processo que ele utiliza em https://www.dicas-l.com.br/dicas-l/20040109.php, recomendo a leitura.

Recomendo um dia inteiro de diversão com o txt2tags, se familiarizando com nossa nova maneira de criar páginas html, antes de irmos para o próximo passo, o TEMPLATE PHP.

Template PHP

Agora que o conteúdo não é mais problema, vamos cuidar do visual do site. O primeiro site que eu fiz se chamava “A Gazeta de Algol”, era sobre um velho jogo de videogame chamado Phantasy Star. O site era uma bagunça. Cada página continha, além do conteúdo, toda a formatação visual. Eu nem imaginava que quando meu site tivesse algumas dezenas de páginas e eu decidisse mudar o visual dele eu teria que mudar página por página…

Claro que o uso de CSS resolve parte do problema: mudando o arquivo de CSS podemos mudar o tipo e o tamanho das fontes, a cor de fundo das páginas, mas… e se eu decidisse encaixar um menu no topo, e um rodapé em todas as páginas? Aí eu teria que fazer a mudança em cada página do site, uma por uma… trabalhoso, não?

Da maneira como faço as coisas agora, toda a parte visual do site fica em dois arquivos: header.html e footer.html. No header.html eu coloco o visual da parte superior do site, como o logotipo, o menu e coisas do gênero. No footer.html eu coloco o rodapé do site. Como nós mexemos com PHP estamos familiarizados com o conceito de includes, não é mesmo? Vocês já devem ter sacado que vou encaixar um include(‘header.html’) e um include(‘footer.html’) em cada página que eu fizer, não é mesmo?

Tá. Vamos supor que eu pegue cada página de conteúdo – que deveria ter apenas CONTEÚDO – e encaixe um “include” no início e outro no fim. Temos dois problemas:

  • A página de conteúdo agora também tem uma informação sobre o visual. Isso não é legal 🙁
  • Se no futuro decidirmos criar um barra lateral com um menu à esquerda do conteúdo, teremos que ir página por página encaixar o nosso ‘include(‘sidebar.html’)… trabalhoso e entediante.

Pois vamos fazer melhor. Vamos criar um arquivo ‘template.php’:

<?php

require($_SERVER[‘DOCUMENT_ROOT’] . “/header.html”);

include “__CONTEUDO__”; # inclui a página

require($_SERVER[‘DOCUMENT_ROOT’] . “/footer.html”);

?>

ATENÇÃO: uso a variável DOCUMENT_ROOT para o o PHP saber onde é o raiz do site. É importante se referenciar ao raiz do webserver porque, quando você fizer o upload das páginas, os links funcionarão corretamente, desde que seu host de hospedagem tenha definido esta variável corretamente. No entanto, alguns hosts não têm essa variável definida, e nesse caso você vai precisar dar outro jeito de se referir à raiz de seu site!

Supondo que tenhamos uma página de conteúdo (teste.html) só precisaríamos criar uma cópia deste template.php, renomear este arquivo template.php para teste.php, substituir a linha include "__CONTEUDO__" por include "teste.html", e pronto, teríamos o seguinte arquivo teste.php:

<?php

require($_SERVER[‘DOCUMENT_ROOT’] . “/header.html”);

include “teste.html”; # inclui a página

require($_SERVER[‘DOCUMENT_ROOT’] . “/footer.html”);

?>

O arquivo de template teste.php iria incluir automaticamente não só nossas páginas header.html e footer.html como também nossa página de conteúdo teste.html, que continuaria purinha, só com conteúdo, plenamente legível e facilmente editável. Desta forma, para cada página de nosso site teríamos três páginas, desta maneira:

O arquivo teste.txt, o único no qual você teria que mexer para fazer alterações (lembre-se: deixe a primeira linha em branco!):

=Teste=

Este é um arquivo de **testes** para ilustrar como tudo funciona.

O arquivo teste.html, com o conteúdo formatado em HTML, gerado automaticamente pelo txt2tags, no qual você não precisa nem tocar:

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<HEAD>
<META NAME=”generator” CONTENT=”https://txt2tags.sf.net”>
<META HTTP-EQUIV=”Content-Type” CONTENT=”text/html; charset=utf-8″>
</HEAD><BODY BGCOLOR=”white” TEXT=”black”>
<FONT SIZE=”4″>
<P>
Este é um arquivo de <B>testes</B> para ilustrar como tudo funciona.
</P>
</FONT>
</BODY></HTML>

Note que o txt2tags cria até o preâmbulo do HTML sozinho 🙂 Teríamos ainda o arquivo teste.php, que junta o html acima com os dois arquivos header.html e footer.html, que contém os elementos visuais do do nosso site. Ele é uma cópia do arquivo template.php, bastando alterar, no entanto, a referência à página html que queremos. Veja como ficou:

<?php

require($_SERVER[‘DOCUMENT_ROOT’] . “/header.html”);

include “teste.html”; # inclui a página

require($_SERVER[‘DOCUMENT_ROOT’] . “/footer.html”);

?>

Pronto. Agora basta fazermos o upload dos arquivos teste.html e teste.php. Se quisermos, podemos até subir o teste.txt para que nossos visitantes tenham acesso ao código-fonte do site 🙂

“Mas Roberto”, vocês dizem, “é impossível fazer tantas cópias e alterações do arquivo template.php quando você tem centenas de páginas!” Meus caros, nada é impossível quando contamos com o shell-script.

Shell-script

Essa é a parte mais divertida: vamos criar um script chamado montapagina.sh:

#!/bin/bash
# Vamos supor que estamos desenvolvendo este site no Apache.
# Ajustamos o valor da variável BASEDIR para o diretório raiz de
# documentos do nosso Apache. Geralmente é /var/www. No meu
# Fedora 7 é /var/www/html
BASEDIR=/var/www/html

# Busca todos os subdiretórios
DIRS=$(find . -type d);

# Entra em cada subdiretório para realizar as operações.
# Se configuramos direitinho a variável BASEDIR aí em cima
# nem precisamos mexer em mais nada.
for DIRECTORY in $DIRS; do
echo;
echo “>>> Entrando no diretório $BASEDIR/$DIRECTORY”;
cd $BASEDIR/$DIRECTORY;
for FILE in *.txt; do
HTMLFILE=$(echo $FILE | sed “s/.txt/.html/g”);
PHPFILE=$(echo $FILE | sed “s/.txt/.php/g”);
txt2tags -t html $FILE &> /dev/null;
sed “s/__CONTEUDO__/$HTMLFILE/g” $BASEDIR/template.php > $PHPFILE;
echo “$PHPFILE criado com sucesso!”;
done;
done;

O que este script faz:

  • Busca por todos os subdiretórios do site;
  • Entra em cada um deles e, ao encontrar um arquivo .txt, executa o txt2tags nele, transformando-o em html;
  • Vai ao arquivo template.php, substitui a linha include "__CONTEUDO__" por include "nomedoarquivo.html" e gera o arquivo nomedoarquivo.php.

Veja que estou partindo do princípio que nosso site está sendo feito no raiz do servidor apache, e que o scipt também se encontra neste mesmo diretório. Ao fim da operação, o script vai ter montado TODO o nosso site em questão de segundos! Nossos diretórios estarão populados de arquivos html e php prontos para serem upados! Se um dia decidirmos mudar o visual do site, só precisamos mudar os arquivos header.html e footer.html. A idéia é mudar toda a estrutura, alterando o template.php? Então é só mudar e rodar novamente nosso script montapagina, e todo nosso site será reconstruído com o novo template!

Roberto M Bechtlufft é administrador de sistemas Linux e editor do site Linux Para o Resgate (https://www.linuxparaoresgate.com), que publica dicas para administradores de sistemas em apuros. Iniciou na informática com os velhos micros MSX, e até hoje se diverte com games da era dos 8 e 16 bits. Arrisca um pouco de Shell-script, Python e PHP. Pode ser contactado através do “robertobech em linuxparaoresgate.com

Postado por
Siga em:
Compartilhe
Deixe seu comentário
Assine nossa Newsletter
Assine nossa newsletter e receba nossa seleção de conteúdo sobre tecnologia, games, IA e internet em seu email.
Veja também
Publicações Relacionadas
Img de rastreio
Localize algo no site!