[RESOLVIDO] Php nas colunas do template

  • brunodyjorge
  • Avatar de brunodyjorge Autor do Tópico
  • Offline
  • JCB! Geek
  • JCB! Geek
Mais
13 anos 9 meses atrás #35415 por brunodyjorge
brunodyjorge created the topic: [RESOLVIDO] Php nas colunas do template
Galera, preciso de uma ajuda com php.

Qual a melhor forma de fazer as colunas se auto-ajustarem do acordo com o conteúdo.

Explicando melhor: estou fazendo um template (na mão mesmo!) e não manjo muito php. Este template tem várias posições personalizadas e tem a parte do conteúdo (digamos que é a div="conteudo"). Dentro deste espaço tem as colunas, left, artigo e right.

Eu já consegui fazer um código que deixa a coluna artigo maior caso não tenha nada publicado no right. Mas eu queria um código, digamos mais "inteligente", que ajustasse o tamanho das três colunas automaticamente quando não tiver nada publicado em qualquer uma delas.

Exemplo 1:
left=100px
artigo=200px
right=50px

Exemplo 2:
left= 0
artigo=300px
right=50px

Exemplo 3:
left=100px
artigo=250px
right= 0

Exemplo 4:
left= 0
artigo=350px
right= 0

[i:3q2wnrvp](estes valores são apenas exemplo!)[/i:3q2wnrvp]

Já tentei ver em alguns templates que fazem isso, mas não consegui entender nada dos códigos!

Aguém pode me ajudar?

Please Entrar ou Registrar to join the conversation.


  • brunodyjorge
  • Avatar de brunodyjorge Autor do Tópico
  • Offline
  • JCB! Geek
  • JCB! Geek
Mais
13 anos 9 meses atrás #35577 por brunodyjorge
brunodyjorge replied the topic: Re: Php nas colunas do template
Galera esse é o meu código que está funcionando para a coluna da direita.

Código Php:
<?php
	if($this->countModules('right') == 0){
	$component = "grid_19";
	}
	else {
	$component = "grid_14";
	}
	if($this->countModules('right') != 0){
	$right = "grid_5";
	}
	else {
	$right = "";
	}
?>

Código dentro da tag <body>:
<div id="component" class="<?php echo $component; ?>">            
        <jdoc:include type="component" />				
</div><!--Fim do div id=conteudo-->

<?php if($this->countModules('right')) : ?>
          <div id="right" class="<?php echo $right; ?>">
                    <jdoc:include type="modules" name="right" style="xhtml" />
          </div><!--Fim do div id=right-->            
<?php endif; ?><!--Fim do div id=right--> 

Desta maneira o template funciona, mas eu queria fazer o mesmo com as três colunas (left, component e right).


Alguém pode me ajudar?

Please Entrar ou Registrar to join the conversation.

  • brunodyjorge
  • Avatar de brunodyjorge Autor do Tópico
  • Offline
  • JCB! Geek
  • JCB! Geek
Mais
13 anos 9 meses atrás #35723 por brunodyjorge
brunodyjorge replied the topic: Re: Php nas colunas do template
Galera, consegui!
Dei uma pesquisa em php e pensei no resultado abaixo. Creio eu que há uma maneira menos trabalhosa de se fazer mas como não sei nada de php, fazer isto funcionar, independente da "redondeza" do código, pra mim já basta!!! huahau

Segue o código que deu certo pra mim:
<!--Função que muda o tamanho do conteudo de acordo com as posições left e rigth-->
<?php
	if($this->countModules('right') == 0 and $this->countModules('left') == 0 and $this->countModules('component') != 0 )  {
	$component = "grid_24 alpha omega";
	$right = "";
	$left = "";
	}
	else if($this->countModules('right') != 0 and $this->countModules('left') == 0 and $this->countModules('component') != 0 ) {
	$component = "grid_19 alpha";
	$right = "grid_5 omega";
	$left = "";	
	}
	else if($this->countModules('right') == 0 and $this->countModules('left') != 0 and $this->countModules('component') != 0 ) {
	$component = "grid_19 omega";
	$right = "";
	$left = "grid_5 alpha";	
	}
	else if($this->countModules('right') != 0 and $this->countModules('left') != 0 and $this->countModules('component') != 0 ) {
	$component = "grid_14";
	$right = "grid_5 omega";
	$left = "grid_5 alpha";	
	}
	else if($this->countModules('right') != 0 and $this->countModules('left') != 0 and $this->countModules('component') == 0 ) {
	$component = "";
	$right = "grid_12 omega";
	$left = "grid_12 alpha";	
	}
?><!--Fim da função que muda o tamanho do conteudo de acordo com as posições left e rigth-->

Explicando:
O comando $this->countModules('component') vai verificar se tem aquele espaço reservado para os artigos do joomla, geralmente é conhecido como o mainbody do template. No meu caso, eu deixei este espaço em uma posição chamada component e criei um mod_custom em branco para definir em que páginas os artigos devem aparecer. Isto me possibilita, por exemplo, entre outras coisas, criar uma página inicial sem apresentar nenhum artigo, apenas módulos e componentes. (Quem quiser saber mais sobre isso, pesquisa aqui no fórum que eu me lembro de já ter explicado isso anteriormente.)

Cada if do código acima, verifica se há algo publicado em cada coluna. Este processo é repetido várias vezes, tornando possível a verificação de todas* as hipóteses de publicação nas três colunas (left-component-right | left-component | component-right | component | left-right)
*exclue a hipótese de publicação somente em left e somente em right, pois, no meu projeto não será utilizado

Nota:
Na construção deste projeto estou utilizando o sistema de grade [url=http://www.960.gs" onclick="window.open(this.href);return false;]http://www.960.gs[/url], por isso os valores grid_xy.

Fui!

Please Entrar ou Registrar to join the conversation.