como reutilizar o template em outras páginas

Mais
15 anos 10 meses atrás #20203 por elvisvinicius
elvisvinicius replied the topic: Re: como reutilizar o template em outras páginas
Rogério, você precisa colocar toda a lógica no arquivo [color=#FF8000:1cuvxz4s]/templates/SEU-TEMPLATE/index.php[/color:1cuvxz4s]. Se vai fazer includes, eles precisam ser feitos nesse arquivo, por que é ele que o framework do Joomla! vai processar.

Pode colocar mais detalhes a respeito do que precisa em seu layout?

( ^ ^)

Please Entrar ou Registrar to join the conversation.

Mais
15 anos 10 meses atrás #20204 por fititnt
fititnt replied the topic: Re: como reutilizar o template em outras páginas
Só pra citar, na minha opinião, se você já tem uma noção de lógica de programação em Java e uma noção básica de html, procure estudar estes templates:

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
  • Avatar de rogerioag Autor do Tópico
  • Offline
  • JCB! Colaborador
  • JCB! Colaborador
Mais
15 anos 10 meses atrás #20219 por rogerioag
rogerioag replied the topic: Re: como reutilizar o template em outras páginas
O que eu fiz para criar o meu template foi exatamente copiar e colar o template system, adicionando o arquivo templateDetails.xml e as pastas como eu queria organizar o site, como por exemplo as figuras e scripts que eu queria que aparecessem em todas as páginas. No meu arquivo /templates/MEU-TEMPLATE/index.php eu inseri todo o HTML para criar a página como eu queria, inserindo trechos em PHP, como por exemplo:
<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.

Mais
15 anos 10 meses atrás #20256 por elvisvinicius
elvisvinicius replied the topic: Re: como reutilizar o template em outras páginas

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.

Não entendi quando você disse sobre o arquivo teste.php.

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.

Isso que não consigo entender. Porque o index.php na pasta do template é válido para todas as páginas.

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&#91;'Itemid'&#93;;
$tpl_component = (string) $_GET&#91;'option'&#93;;
$tpl_view = (string) $_GET&#91;'view'&#93;;

// 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
  • Avatar de rogerioag Autor do Tópico
  • Offline
  • JCB! Colaborador
  • JCB! Colaborador
Mais
15 anos 10 meses atrás #20267 por rogerioag
rogerioag replied the topic: Re: como reutilizar o template em outras páginas
Independendte do que escrevi abaixo, vou "digerir" com calma suas colocações para ver se entendo como prosseguir.

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.