como reutilizar o template em outras páginas
- elvisvinicius
-
- Offline
- JCB! Hero
-
Pode colocar mais detalhes a respeito do que precisa em seu layout?
( ^ ^)
Please Entrar ou Registrar to join the conversation.
- fititnt
-
- Offline
- JCB! Junior
-
ja_purity ( bonita ), bezz ( joomla acessível, praticamente totalmente tabless, vem tbm com joomla ) e o Afterburner da RocketTheme (MAIS rápida e leve dentre todas)
Enquanto eu não faço um tutorial específico, você pode saber praticamente tudo que precisa olhando esses temas e como eles fazem as coisas.
[b:1w9fcbig]Screencasts e tutoriais do básico ao avançado sobre Joomla![/b:1w9fcbig]: <!-- m --><a class="postlink" href=" fititnt.org/joomla.html " onclick="window.open(this.href);return false;"> fititnt.org/joomla.html </a><!-- m -->
[b:1w9fcbig]Consultoria e treinamento avançado[/b:1w9fcbig]: <!-- m --><a class="postlink"...
Please Entrar ou Registrar to join the conversation.
- rogerioag
-
Autor do Tópico
- Offline
- JCB! Colaborador
-
- Postagens: 25
- Obrigados Recebidos: 0
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/estilo.css" type="text/css" />
Depois de ler alguns tutoriais (e apanhar um pouco), consegui criar o layout desejado, quebrando-o em fragmentos PHP. Respondendo sua pergunta elvisvinicius, meu arquivo index.php ficou com os includes (ver arquivo no primeiro email desta sequência), apenas adicionando o trecho que insere os componentes na área central da página.
Como disse, meu layout ficou pronto, o que eu queria era poder reaproveitá-lo nas outras páginas, sem ter que alterar cada uma a cada alteração no layout. Pensei que os fragmentos criados no template pudessem me ajudar nisso.
Se eu tivesse que fazer tudo em função de uma página inicial eu já estaria neste ponto. Não ficou claro para mim como eu poderia escrever outras páginas que reutilizam o layout criado.
Please Entrar ou Registrar to join the conversation.
- elvisvinicius
-
- Offline
- JCB! Hero
-
Não entendi quando você disse sobre o arquivo teste.php.rogerioag escreveu: Respondendo sua pergunta elvisvinicius, meu arquivo index.php ficou com os includes (ver arquivo no primeiro email desta sequência), apenas adicionando o trecho que insere os componentes na área central da página.
Isso que não consigo entender. Porque o index.php na pasta do template é válido para todas as páginas.Como disse, meu layout ficou pronto, o que eu queria era poder reaproveitá-lo nas outras páginas, sem ter que alterar cada uma a cada alteração no layout. Pensei que os fragmentos criados no template pudessem me ajudar nisso.
Se eu tivesse que fazer tudo em função de uma página inicial eu já estaria neste ponto. Não ficou claro para mim como eu poderia escrever outras páginas que reutilizam o layout criado.
Olha, vou tentar ajudar, mas me desculpa se eu escrever algo que você já saiba ou que não tiver nada a ver com o que você quer.

1. Pra fazer templates pra Joomla, o básico do básico do básico de PHP já dá pra fazer miséria. Como você já programa em java, ótimo, PHP possui praticamente a mesma sintaxe de linguagens como Java, C, etc. O PHP5 então, está cada vez mais parecido com python. Usando apenas estruturas de controle, já dá pra fazer muita coisa.
2. Estou fazendo um template em que a lógica pode ser a mesma que você esteja querendo.
Ex:
Um template basicão pra Joomla, coluna esquerda, coluna conteúdo, coluna direita, segue assim:
<?php defined('_JEXEC') || die('Restricted access'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="ltr">
<head>
<jdoc:include type="head" />
</head>
<body>
<?php if ($this->countModules('left')): ?>
<jdoc:include type="modules" name="left" style="hxtml" />
<?php endif; ?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php if ($this->countModules('right')): ?>
<jdoc:include type="modules" name="right" style="hxtml" />
<?php endif; ?>
</body>
</html>
Com o método $this->countModules('left') você pode contar se existem publicados e visíveis na posição indicicada (você atribui onde os módulos devem aparecer pelo admin do Joomla, associando-os aos itens de menu) e assim mostrar a posição somente se VERDADEIRO.
Só isso é seu layout já pode varias entre ter ou não coluna esquerda ou direita ou não ter coluna alguma.
O mesmo vale para posições que você queira como "header", "footer", etc.
Até agora não precisa de nenhum include().
Para utilizar includes, como por exemplo para layout bem complexos onde você prefere colocar a lógica dos layouts em arquivos separados, pode usar o método $this->countModules('left') e incluir arquivos como desejado.
Ou pode fazer isso também baseado nas variáveis da URL.
Veja este outro exemplo combinando SWITCH e IF:
<?php defined('_JEXEC') || die('Restricted access'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="ltr">
<head>
<jdoc:include type="head" />
</head>
<body>
<?php
// Variáveis do template:
$ColunaDireita = true;
$ColunaEsquerda = true;
$ColunaDestaque = false;
$tpl_path = JPATH_THEMES . DS . $this->template . DS;
// Pegando variáveis da URL:
$tpl_itemID = (int) $_GET['Itemid'];
$tpl_component = (string) $_GET['option'];
$tpl_view = (string) $_GET['view'];
// Regras de acordo com componente atual
switch ($tpl_component)
{
case "com_content":
if ($tpl_view == 'frontpage') {
$ColunaDestaque = true; // ativar posição destaque
} elseif ($tpl_itemID == 12) {
$ColunaDireita = false; // desativar coluna da direita
}
break;
case "com_search":
$ColunaEsquerda = false; // Desativar coluna da esquerda
break;
default:
break;
}
if ($ColunaDestaque === true) {
include $tpl_path . 'coluna-destaque.php';
include ;
}
if ($ColunaEsquerda === true) {
include $tpl_path . 'coluna-esquerda.php';
include ;
}
?>
<jdoc:include type="message" />
<jdoc:include type="component" />
<?php
if ($ColunaDireita === true) {
include $tpl_path . 'coluna-direita.php';
}
?>
</body>
</html>
Outra variação, e é a que estou usando em um template que estou desenvolvendo, é ter layouts completamente diferentes. Para isso, tudo o que tem entre as tags BODY coloco em arquivos separados e uso um parâmetro no XML do template que escolhe qual layout carregar para determinado componente, view ou itemid, seguindo a mesma lógica anterior.
Para pegar os parâmetros configurados no XML do template (e que ficam gravados no arquivo params.ini na pasta do template:
...
<body>
<?php
// Se nenhum layout foi definido, o 'layout-3-colunas' será definido como padrão.
$tpl_layout = $params->get('layout', 'layout-3-colunas');
include $tpl_path . $tpl_layout . '.php';
?>
</body>
Espero ter ajudado.
( ^ ^)
Please Entrar ou Registrar to join the conversation.
- rogerioag
-
Autor do Tópico
- Offline
- JCB! Colaborador
-
- Postagens: 25
- Obrigados Recebidos: 0
Bem, quanto ao teste.php foi o que achei que seria a solução inicial para o meu problema. Eu criei os fragmentos de código na pasta do meu template, e o arquivo index.php utiliza estes fragmentos para exibir o conteúdo na página inicial. Em seguida eu criei outra página (teste.php, no raiz do htdocs) e fiz referência aos fragmentos criados, apontando para o caminho dos arquivos na pasta do template. Só que não deu certo. Pelo que entendi, o que eu não consegui foi fazer com que esta outra página seja vista pelo Joomla.
Por exemplo, criei uma outra página assim (no raiz do htdocs):
<html>
<head>
<jdoc:include type="head" />
</head>
<body>
<jdoc:include type='component' style='xhtml' />
</body>
</html>
Já descobri que não funciona, pois pelo que entendo falta alguma coisa para o Joomla funcionar. Talvez se eu descobrisse o que falta para fazer uma página simples assim funcionar eu entenderia o que realmente me falta aprender do Joomla pra prosseguir.
Foi aí que decidi recorrer aos nobres colegas.

Please Entrar ou Registrar to join the conversation.