Olá pessoal. Eu gostaria de apresentar outra bicicleta escrita em PHP usando Objeto de Documento Modelo. Como é diferente de outros representantes de três rodas da mesma espécie? Na verdade, não existem tantas diferenças, ele combina o melhor de muitos. Por exemplo:
1. Separação completa de html e php.
2. Sem rótulos adicionais em modelos como
3. Capacidade de incorporar o conteúdo de outros arquivos de modelo no layout, tanto do php quanto usando uma tag especial no layout.
4. Capacidade de criar qualquer tag html na hora.
5. Capacidade de salvar em arquivo html tudo o que foi gerado e coletado.
6. Verificar a existência do arquivo html da página solicitada antes de gerar o template.
Para deixar imediatamente claro para todos como é conveniente e fácil de usar, contarei e mostrarei como o usei para criar um de meus projetos (suspeito que reescreverei todos os meus projetos para ele).
A primeira coisa que geralmente faço é obter todas as informações do banco de dados sobre a página ( palavras-chave, descrição da página, nome do modelo e endereços de arquivo css e js). Tudo isso eu armazeno no array $ head. Então eu pego o conteúdo do banco de dados e salvo no array $ page. E começo a trabalhar com a turma.
Portanto, primeiro chamo o construtor da classe e passo todos os parâmetros necessários para ele:
$ tpl = novo modelo; $ tpl -> ext = TPL_EXTENSION; # extensão de arquivos no diretório de modelo $ tpl -> htm = CACHE_EXTENSION; # extensão para páginas já geradas $ tpl -> skin_dir = DIR_TEMPLATES; # diretório contendo todos os modelos de site (por exemplo, modelos) $ tpl -> js_dir = DIR_JS; # diretório onde você precisa procurar os arquivos JS $ tpl -> css_dir = DIR_CSS; # diretório onde o CSS está localizado $ tpl -> img_dir = DIR_IMG; # diretório onde pictures $ tpl -> skin = $ _SESSION ["skin"]; # o nome do modelo que desejo usar $ tpl -> cache = DIR_CACHE; # onde salvar o html finalizado $ tpl -> log = FILE_T_LOGS; # onde escrever os logs $ tpl -> tag_start = SYMBOL_START_TAG; # O caractere que as variáveis no modelo começam com $ tpl -> tag_end = SYMBOL_END_TAG; # O caractere que finaliza as variáveis no modelo $ tpl -> dir_delimeter = DIRECTORY_SEPARATOR; $ tpl -> espaço = SYMBOL_SPACE; # caractere substituindo um espaço.
Fuf, parece que todas as variáveis foram passadas, vamos em frente.
Para não forçar a turma a fazer trabalhos desnecessários, primeiro verificamos se já temos um arquivo Html pronto da página solicitada.
if ($ tpl -> TestPageStatus () === TRUE) (require $ tpl -> cacheFileName;) else ($ tpl -> page ("index"); # passar o nome do arquivo de template, a propósito, você pode passar vários deles, separados por vírgulas $ tpl -> assign ("HEAD", $ head); $ tpl -> assign ("CONTENT", $ page); $ tpl -> build (); # dê o comando para construir o modelo $ tpl -> ShowPage (); # output.)
Aqui estão todos os métodos que você precisa usar para exibir a página.
Agora, vamos dar uma olhada em alguns métodos úteis dessa classe. Digamos que já passamos tudo o que precisamos para a classe, mas ainda não demos um comando para a saída, porque de repente lembramos que precisamos criar várias tags Html no modelo. Isso também é muito fácil de fazer. Primeiro, precisamos encontrar o bloco ao qual queremos adicionar algo. Você pode encontrá-lo de 2 maneiras:
$ tpl -> findById ("findMe"); $ tpl -> findByTagName ("div");
O método findById logicamente assume que todos os ids de tag no modelo são únicos. E o método findByTagName retornará o primeiro que corresponder.
Devemos passar o resultado que obtivemos ao pesquisar o método $ tpl -> createChild () para poder criar tags filho no elemento encontrado. O método createChild, aliás, após criar um novo elemento, o retorna para nós, para que possamos usar o elemento recém-criado em outro lugar.
Pesquisando e experimentando, encontrei 3 maneiras de criar tags em um modelo, então vou mostrar a você 3 exemplos de uma vez. Exemplo 1:
Precisamos criar
dentro$ parent = $ tpl -> findById ("parent"); $ tpl -> createChild ($ parent, "div", "id = child, class = test");
Nós temos:
Exemplo 2:
Precisamos criar
$ parent = $ tpl -> findById ("parent"); $ tpl -> createChild ($ parent, "div", "id = child, class = test", "Some text");
Nós temos:
Exemplo 3:
Precisamos criar
$ parent = $ tpl -> findByTagName ("span"); # (1) $ tpl -> createChild ($ parent, "div", "New Element"); # (2)
(1) Pesquisar um pai não por id, mas por tag, encontrará o primeiro correspondente
(2) Se não precisarmos de atributos, mas apenas do valor do novo elemento, eles podem ser omitidos.
Nós temos:
E depois dessas manipulações, já chamo ShowPage. E aqui chegamos suavemente a mais 2 pontos interessantes.
Imagine uma situação em que temos um modelo, suponha que seja um modelo list.tpl com uma lista de, digamos, telefones celulares:
(CONTEÚDO. Marca)
(CONTEÚDO.Modelo)
(CONTENT.Info)Se transmitirmos as informações apenas por meio de 1 telefone, as variáveis serão simplesmente substituídas por seus valores, e se transmitirmos as informações por vários telefones ao mesmo tempo, a classe irá copiar esta seção quantas vezes forem as variantes de valores isto. E ele mesmo fará isso, ao contrário, por exemplo, da classe xTemplate, que tinha atribuir e analisar para cada valor
É verdade que há um momento não muito conveniente, se após este bloco houver outros, por exemplo:
(CONTEÚDO. Marca)
(CONTEÚDO.Modelo)
(CONTENT.Info)Então, em tal situação, teremos que usar um pequeno truque para embalar nosso telefone celular
(CONTEÚDO. Marca)
(CONTEÚDO.Modelo)
(CONTENT.Info)Nesse caso, todos os telefones celulares aparecerão um após o outro, dentro , e "Algum outro bloco" permanecerá abaixo.
E, se não esqueci nada, o último momento é adicionar o conteúdo de outros modelos ao modelo atual.
Apelo novamente à sua imaginação.
Imagine que o designer de layout deseja que o conteúdo do arquivo page.html seja adicionado ao bloco de arquivos list.html, para isso ele adiciona no lugar certo no arquivo list.html
O número dessas inserções não é limitado e sua localização não é absolutamente crítica, portanto, você pode inseri-las como quiser e em qualquer quantidade.
Provavelmente é tudo, se eu me lembrar de algo, informarei adicionalmente. Obrigado por ler até o fim.
Tags: php, classe, template, template engine, parser
Após a criação informação-arquivo, em princípio, o tópico já foi definido. Isso significa que você pode ir para a seção de gerenciamento de temas http://mysite.ru/admin/build/themes e inclua seu tema lá. Naturalmente, após ligá-lo, você não verá nenhum desenho - a página adquirirá o estilo "preto sobre branco" - texto preto sobre fundo branco.
No entanto, quero observar que, apesar do fato de que em nosso tema não há arquivos, exceto mytheme.info não mentir, o site funcionará da mesma maneira que antes - exibir todo o conteúdo, adicionar blocos às regiões ( http://mysite.ru/admin/build/block) etc. Isso se deve ao fato de que o núcleo do Drupal inclui módulos requeridos, que, mesmo na ausência de quaisquer arquivos em seu tema (com exceção do arquivo info), permitem que você continue trabalhando com o Drupal.
Em princípio, toda a criação de modelo é reduzida a arquivos de modelo sobrepostos (eles têm a extensão .tpl.php) módulos padrão de nosso CMS.
O arquivo tpl mais importante (tpl é a abreviação de modelo, padrão) é page.tpl.php... Ele é o responsável pela construção de cada página do site. Vamos ver em que consiste o arquivo de modelo:
- Código HTML
- código php
- código javascript(não é necessário)
O Drupal transfere dados do site para cada arquivo de modelo na forma de variáveis padrão. Existem 2 tipos de variáveis para cada arquivo de modelo:
- variáveis que são passadas apenas para este arquivo
- variáveis que são passadas para todos os arquivos
Aqui está uma lista de todas as variáveis para page.tpl.php:
Variáveis comuns (para todos os arquivos):
- $ base_path- caminho de base onde o drupal foi instalado
- $ css- uma série de arquivos css conectados ao arquivo de modelo atual
- $ diretório- caminho para a pasta onde o tema está instalado
- $ is_front- retorna TRUE se você estiver na página principal
- $ logging_in- retorna TRUE se você estiver logado
- $ is_admin- retorna TRUE se você tiver acesso ao painel de administração
Metadados da página
- $ idioma- (um objeto) Idioma atual que é exibido no site
- $ idioma-> idioma- contém sua representação textual
- $ idioma-> dir- contém a direção do idioma. Será "ltr" (da esquerda para a direita) ou "rtl" (da direita para a esquerda)
- $ head_title- versão modificada do título da página, para uso entre as tags
- $ cabeça- inserido entre tags ... Contém meta tags, palavras-chave, etc.
- $ styles- serve para baixar todos css-arquivos para a página atual
- $ scripts- serve para baixar todos javascript "s para a página atual
- $ body_classes- um conjunto de classes css para tag ... Ele contém informações sobre a localização atual das colunas no site, seu número, url "e" atual, etc.
Informações sobre o site
- $ front_page- o endereço da página principal do site. Melhor usar esta variável para se referir a pagina inicial Desde a inclui o idioma e o prefixo do domínio
- $ logo- caminho para o logotipo do site, se estiver incluído no site
- $ site_name- nome do site. Ele pode ficar vazio se você desativá-lo nos recursos do arquivo de informações. Configurável em mysite.ru/admin/settings/site-information
- $ site_slogan- o slogan do site. Ele pode ficar vazio se você desativá-lo nos recursos do arquivo de informações. Configurável em mysite.ru/admin/settings/site-information
- $ missão- a missão do site. Ele pode ficar vazio se você desativá-lo nos recursos do arquivo de informações. Configurável em mysite.ru/admin/settings/site-information
Navegação
- $ search_box- contém o código html que exibe a string de pesquisa. Pode estar vazio se você desligá-lo no arquivo de informações
- $ primary_links
- $ secondary_links- uma matriz contendo links de navegação para o site, se forem permitidos nos recursos do arquivo de informações
Conteúdo da página padrão
- $ restantes- região. Contém o código html para a coluna esquerda. Se você especificar qualquer região no arquivo de informações, ele desaparecerá
- $ breadcrumb - "Migalhas de pão" por pagina atual
- $ title- título da página
- $ help- dicas dinâmicas, principalmente mostradas no painel de administração
- $ mensagens- exibe mensagens sobre erros e avisos no site
- $ tabs- links (guias) conectando a página atual com suas subpáginas (por exemplo, para um artigo - com sua página de edição)
- $ content- conteúdo da página atual
- $ certo- região. Contém o código html para a coluna certa. Se você especificar qualquer região no arquivo de informações, ele desaparecerá
Área inferior / dados de cobertura
- $ feed_icon- linha com todos os ícones comentários para a página atual
- $ footer_message- mensagem na parte inferior da página. Configurável em mysite.ru/admin/settings/site-information
- $ footer- região. Contém o código html da parte inferior da página. Se você especificar qualquer região no arquivo de informações, ele desaparecerá
- $ fechamento- etiqueta de fechamento para todos os módulos que mudaram a página. Esta variável deve ser exibida após todo o conteúdo dinâmico. Melhor antes de fechar a tag BODY
Todos estão listados aqui variáveis padrão... Mas você pode adicionar suas variáveis aqui como regiões por meio de informação-file, ou em qualquer outra função via arquivo template.php(sobre ele um pouco mais tarde).
Agora vou mostrar qual código deve estar em page.tpl.php e em que código é então interpretado pelos navegadores. Aqui está um trecho de código de page.tpl.php:
A primeira linha verifica se a página atual tem um título. Se não estiver lá, o depurador simplesmente ignorará esse código e não o inserirá. Se o título existir, a tag será adicionada ao código html da página
, depois disso será impresso o título da página, e tudo isso será fechado com a tag
... Se você olhar o código desta página em um navegador, será assim:
Lição 4. Arquivos necessários para criar um modelo. Page.tpl.php
Quase todas as variáveis do site são agrupadas dessa maneira. Isso é feito para que possamos estilizar o conteúdo sem saber com antecedência qual será.
Isto é o que parece arquivo padrão page.tpl.php que vem com o Drupal. Mude o nome das classes, reorganize as variáveis - e veja o que acontece. Isso é necessário para "sentir" como funciona e o que é exibido como resultado.
"- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/1999/xhtml" xml: lang = "idioma?> " lang = "idioma?> " dir = "dir?> ">
"title =" (! LANG:"rel =" home ">imprimir $ site_name; ?>
Separar a lógica de recebimento de dados da lógica de sua exibição é uma parte muito importante do desenvolvimento web.
Qualquer programador que tenha subido um pouco acima do nível "Olá, mundo" começa a sentir a necessidade de tal separação. Mas nem todo mundo chega às conclusões e decisões certas.
Portanto, aqui estão as regras mais importantes:
1. O código de recebimento e o código de exibição de dados devem ser separados.
2. Qualquer saída deve começar somente depois que todos os dados estiverem prontos para ela.
3. Como consequência, qualquer script deve lidar apenas com processamento de dados. Depois disso, ele pode enviar algum tipo de cabeçalho HTTP, ou chamar o modelo, passando os dados preparados, ou ambos juntos.
4. Qual mecanismo de template usar é a décima coisa. O mais simples e acessível é o próprio PHP, então exemplos serão dados nele.
Delírios
Provavelmente, não há nenhum tópico na programação da web que seja tão óbvio quanto incompreensível quanto os modelos. Todos, mais cedo ou mais tarde, chegam à conclusão de que é necessário usar templates. Mas isso vem, por algum motivo, por meio de alguns delírios e fantasias mais selvagens.
O equívoco mais simples e óbvio é que os iniciantes chamam um arquivo de "design", que é um html comum para todas as páginas de um site, como um modelo. E com isso eles se acalmam. Informação dinâmica, nada hesitante, exibindo o bom e velho eco :-)
Na verdade, o mecanismo de template se preocupa principalmente em exibir o conteúdo mutável das páginas do site. E a conclusão do "design" é uma tarefa secundária.
Existem duas fantasias principais:
1. O "designer" precisa de templates para poder editá-los sem ter que entender PHP.
2. Conseqüentemente, os modelos servem para separar o PHP do HTML.
Vamos tentar pensar sobre a primeira afirmação. O que é um designer? Essa é uma pessoa que trabalha no Photoshop. Na maioria das vezes, ele não conhece HTML de todo. E um designer de layout especial ou - na maioria das vezes ... o próprio programador - trabalha no modelo! Engraçado, não é?
Agora, o corolário, sobre a separação do PHP do HTML. Multar. Temos diante de nós o sagrado objetivo de separação. Portanto, criamos o Smarty e escrevemos:
(chave foreach = item cid = con de = $ contatos)
($ con.name) - ($ con.nick)
(/ para cada)
Ainda mais engraçado.
O "designer" para quem tudo começou desmaia de felicidade.
Teoria
Acontece que nossas razões pelas quais decidimos usar modelos não valem um centavo. E agora - eles não são necessários, ao que parece, modelos em geral? Precisava. Mas primeiro você precisa responder à pergunta - "por quê?" Para que precisa de modelos. E verifique a resposta com prática. Eu fiz essa pergunta às pessoas muitas vezes. Mas quase ninguém pode responder. Por que ele precisa de modelos. Acontece que as pessoas fazem algo sem saber por quê.
Isso é a coisa mais engraçada.
Durante minha gestão como programador da Web, formulei para mim mesmo três razões pelas quais eu pessoalmente preciso de modelos. Na verdade, existem dois deles. E no final das contas se resumem a uma coisa:
Um código - múltiplas visualizações.
Muitas vezes acontece que em vez de uma informação, você precisa mostrar outra. Por exemplo, o código para trabalhar com o banco de dados recebe uma mensagem de erro em vez do texto da notícia. Nesse caso, em vez de uma página de notícias, você precisa mostrar uma completamente diferente - com um pedido de desculpas e um pedido para voltar mais tarde. É muito fácil fazer isso com modelos.
Freqüentemente, as mesmas informações precisam ser mostradas de várias formas. Por exemplo, uma página normal e uma página impressa. As informações são as mesmas, o código de recuperação é o mesmo e o código de saída é diferente. Diante de tal situação, você pode rapidamente dividir seu código em duas partes, uma das quais é responsável pela saída e a segunda não é responsável. Outro exemplo: digamos que desejamos produzir informações não diretamente em HTML, mas por meio de uma solicitação AJAX, no formato JSON. Se usarmos um template engine, então mudaremos exatamente uma linha em nosso código - chamando o template engine para chamar json_encode (). E se nossa saída foi misturada com o código para receber dados, então todo o código teria que ser reescrito!
A situação é um tanto semelhante: digamos que nosso script esteja em dois sites. Mais uma cópia em nossa casa. E então encontramos um grande bug em casa. Feche isso. Agora precisamos atualizar o código nos sites. E aqui está - o momento da verdade: se os templates foram usados corretamente, então simplesmente carregamos o código para os dois sites, e tudo continua funcionando, como se nada tivesse acontecido! Essa situação, em minha opinião, é um teste ideal da abordagem escolhida para modelagem.
Outro ponto importante que muitas pessoas perdem (em seu raciocínio teórico, enquanto constantemente o encontram na prática!) - a ordem de execução do script nem sempre corresponde à ordem de saída no modelo... Exemplo de livro didático - exibindo o título de um artigo em uma tag
Também deve ser lembrado que, além do texto PHP, os scripts também exibem cabeçalhos HTTP. Que deve ser mostrado antes de qualquer texto, ou mesmo no lugar do texto em geral (se, por exemplo, quisermos redirecionar o usuário para outra página). Se primeiro implementarmos a lógica do aplicativo, sem exibir nada ao mesmo tempo, a emissão do cabeçalho HTTP necessário não representará nenhum problema para nós.
Você pode ter seus próprios motivos para usar modelos. Mas com apenas uma condição - essas razões devem ser causadas por uma necessidade real e vital, e não por "considerações superiores" e preocupação com algumas pessoas desconhecidas.
Prática
Agora, vamos passar da teoria à prática.
No caso mais simples, na exibição de qualquer página, sempre teremos dois modelos: um modelo geral de site e um modelo de conteúdo para uma página específica.
Digamos que queremos fazer uma página com links para sites de amigos.
Nesse caso, o código simplificado ficará assim:
O próprio arquivo links.php. Não produz NADA. Ele apenas prepara os dados e, em seguida, chama o modelo.
// habilita as configurações.
incluir "settings.php";
// obter dados do banco de dados, definir variáveis
$ pagetitle = "(! LANG: Links"
;!}
$ DATA = $ db -> getAll ("SELECT * FROM links");
// definir o modelo de página e chamar o modelo geral de site
$ tpl = "tpl_links.php";
inclua "tpl_main.php";
Modelo geral (tpl_main.php):
include $tpl ?>
No lugar certo, o modelo da nossa página (tpl_links.php) está incluído nela:
=$pagetitle?>
- "target =" _blank ">=$row [ "name" ] ?>
foreach($DATA as $row ): ?>
endforeach ?>
A maneira mais fácil é criar modelos baseados em páginas estáticas já dispostas em HTML. Vamos considerar a criação e conexão de um modelo usando um exemplo. Digamos que você já tenha um arquivo HTML com o seguinte conteúdo:
<html> <cabeça> <meta nome = "Descrição"content = /> <meta nome = "palavras-chave"content = /> <título>título> <link href = "style.css" rel = "folha de estilo" tipo = "text / css" /> cabeça> <corpo>// menu Iniciar<borda da mesa = "1" > <tr> <td><a href = "/" > <b> casab>a>td> tr> <tr> <td><a href = "/ cerca de /"> Sobre mima>td> tr> <tr> <td><a href = "/ eu e eu /"> Eu e a dominação mundiala>td> tr> <tr> <td><a href = "/ Contatos /"> Contatosa>td> tr> mesa>// fim do menu<h1> Pagina inicialh1> <p> p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> corpo> html>Para adicionar um modelo ao CMS, você precisa criar um arquivo no diretório tpls / content, por exemplo, test.tpl, e inserir seu código HTML lá. O arquivo CSS deve ser colocado na pasta css / cms e nomeado style.css. É desejável colocar as imagens na pasta de imagens. Não se esqueça de alterar os caminhos de todas as imagens e arquivos CSS.
Comente
Letras russas não podem ser usadas no nome do arquivo de modelo!
Para que o sistema "veja" o novo modelo e comece a usá-lo para exibir páginas, o modelo deve ser adicionado ao sistema. Para fazer isso, vá até as configurações do módulo "Estrutura", na guia "Modelos" ( http://yourdomain.ru/admin/content/config/ ) Você verá uma lista de modelos já instalados em cada domínio existente na versão do idioma selecionado.
Para conectar um novo arquivo de modelo, preencha a última linha livre dos campos “ Nome do modelo"(Dê a ele algum nome significativo, por exemplo" Meu padrão de teste") E" Nome do arquivo "(no nosso caso, test.tpl) e clique no botão" Salvar ".
Se você deseja que este modelo seja usado como o modelo padrão, marque a caixa de seleção "Principal" ao lado dele. Este modelo agora será selecionado por padrão na lista suspensa de seleção de modelos. Ele também será usado para exibir páginas do sistema que usam o modelo padrão (registro, recuperação de senha, mapa do site).
Os modelos ficarão visíveis na lista suspensa ao editar cada página:
Assim, em um site, você pode usar vários modelos ao mesmo tempo, escolhendo o modelo apropriado para uma única página e um grupo de páginas.
Tente criar uma nova página (certifique-se de selecionar um novo template na opção Design Template) e veja o que acontece no site.
Seu modelo HTML deve aparecer no site. Mas agora está estático. Agora você precisa torná-lo dinâmico.
Primeiro, você precisa determinar quais partes do código HTML serão alteradas. Em nosso caso, o seguinte mudará:
título da janela
meta tags palavras-chave e descrição;
título do texto
;
o texto real;
menu do site.
Isso significa que temos que trabalhar um pouco com o template HTML e colocar as macros correspondentes ao invés das seções de mudança.
Por exemplo, no início do arquivo HTML, existem metatags e um título:
<meta nome = "Descrição"content = "descrição do site de Vasily Pupkin" /> <meta nome = "palavras-chave"content = "Site oficial do Vasya Vasily Pupkin" /> <título> Site de Vasya Pupkin: página principaltítulo>Nós as substituímos pelas macros correspondentes (a lista de macros é fornecida no apêndice):
<meta nome = "Descrição"content = "% descrição%" /> <meta nome = "palavras-chave" content = "% palavras-chave%" /> <título>% título%título>Agora, ao gerar as páginas, o sistema pegará as metatags e o título, prescritos para cada página individualmente, e os substituirá em vez das macros correspondentes. É muito fácil lembrar os nomes das macros.
Façamos o mesmo com o título do texto. Era assim:
<h1> Pagina inicialh1>E assim será. O cabeçalho do texto é exibido pela macro% header%:
<h1>% header%h1>O texto principal da página também muda:
<p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p> <p> Texto sobre mim: Texto sobre mim: Texto sobre mim: Texto sobre mim:p>Existe uma macro para mostrar o texto principal da página % contente% :
% contente%Para o início do arquivo entre as tags
e insira a macro:Esta linha permite a edição rápida e outros recursos úteis. Com ele você pode pressionando Mudança +D, vá rapidamente para editar a página atual do site ou qualquer um de seus fragmentos.
Como resultado, você deve obter o seguinte:
<html> <cabeça> <meta nome = "Descrição"content = "% descrição%" /> <meta nome = "palavras-chave" content = "% palavras-chave%" /> <título>% título%título> <link href = "style.css" rel = "folha de estilo" tipo = "text / css" /> % system includeQuickEditJs ()%cabeça> <corpo>// menu Iniciar<borda da mesa = "1" > <tr> <td><a href = "/" > <b> casab>a>td> tr> <tr> <td><a href = "/ cerca de /"> Sobre companhiaa>td> tr> <tr> <td><a href = "/ projetos /"> Projetosa>td> tr> <tr> <td><a href = "/ Contatos /"> Contatosa>td> tr> mesa>// fim do menu<h1>% header%h1>% contente%corpo> html>Então, salvamos o arquivo de modelo e olhamos o resultado. A página agora é quase completamente dinâmica, com exceção do menu. É necessário "reviver" o cardápio do site. Vamos ver como o menu é organizado:
// menu Iniciar<borda da mesa = "1" > <tr> <td><a href = "/" > <b> casab>a>td> tr> <tr> <td><a href = "/ cerca de /"> Sobre mima>td> tr> <tr> <td><a href = "/ eu e eu /"> Eu e a dominação mundiala>td> tr> <tr> <td><a href = "/ Contatos /"> Contatosa>td> tr> mesa>// fim do menuO menu consiste em itens. O menu em si é decorado de alguma forma, e os itens também têm um design. Por exemplo, todo o menu pode ter algum tipo de moldura ou fundo, o item de menu atual pode ser destacado em negrito, etc. Além disso, pode haver níveis diferentes no mesmo menu.
Selecione o quadro do menu:
// menu Iniciar<borda da mesa = "1" > mesa>// fim do menuO item de menu é projetado assim:
<tr> <td><a href = "/ Contatos /"> Contatosa>td> tr>O item de menu atual tem um estilo diferente:
<tr> <td><a href = "/" > <b> casab>a>td> tr>O modelo de menu original está localizado no arquivo /tpls/content/menu/default.tpl e tem a seguinte aparência:
% texto%