Condicional para determinar se o componente é o frontend

Moderator: ariadneduvessa

Locked
campiteli1
Joomla! Intern
Joomla! Intern
Posts: 81
Joined: Mon Sep 21, 2009 7:32 pm

Condicional para determinar se o componente é o frontend

Post by campiteli1 » Thu Sep 24, 2009 7:19 pm

Galera,

gostaria de saber se existe algum teste com php pra saber qual a pagina ativa....
Preciso fazer com que uma parte do layout que eu fiz apareça somente na homepage, e queria saber alguma rotina em php para testar se a pagina atual é a home.

Se alguem puder me ajudar eu agradeceria muito :D

titulo editado para facilitar pesquisas
Last edited by campiteli1 on Thu Sep 24, 2009 8:46 pm, edited 1 time in total.
Pedro Campiteli
Joomla! ...sofrendo e aprendendo...
Carpe Diem!

User avatar
fititnt
Joomla! Hero
Joomla! Hero
Posts: 2350
Joined: Sat Jul 15, 2006 1:41 am
Location: Porto Alegre - RS - Brazil
Contact:

Condicional para determinar se o componente é o frontend

Post by fititnt » Thu Sep 24, 2009 8:24 pm

Code: Select all

<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'This is the front page';
}
?>
http://docs.joomla.org/How_to_determine_if_the_user_is_viewing_the_front_page


bem que voce poderia editar colocar um titulo mais amigavel como 'Condicional para determinar se o componente é o frontend'. Isso ajuda pesquisas ;>
Emerson da Rocha Luiz
Moderador aposentado, 2008-2014 | Membro do JUGRS
http://www.fititnt.org

campiteli1
Joomla! Intern
Joomla! Intern
Posts: 81
Joined: Mon Sep 21, 2009 7:32 pm

Re: Condicional para determinar se o componente é o frontend

Post by campiteli1 » Thu Sep 24, 2009 8:48 pm

Valeu a ajuda cara.

Editei o nome do tópico, realmente vc tem razão....desculpa a "pisada na bola" ;)

Procurei bastante e encontrei também um outro teste que determina qnd vc está na página home, que estou postando pra ajudar o proximo com o mesmo problema
:D

Code: Select all

<?php
$uri = $_SERVER['REQUEST_URI'];
if ($uri == "/") {
      echo "You're on the homepage";
} else {
     echo "You're on an internal page";
}
?>


Valeu...
Pedro Campiteli
Joomla! ...sofrendo e aprendendo...
Carpe Diem!

User avatar
fititnt
Joomla! Hero
Joomla! Hero
Posts: 2350
Joined: Sat Jul 15, 2006 1:41 am
Location: Porto Alegre - RS - Brazil
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by fititnt » Thu Sep 24, 2009 9:14 pm

Que nada, so dei uma dica de como fazer titulos melhores. Sempre ajudam a ter resposta mais rapida e a facilitar a vida do google.

O seu jeito de resolver também funciona para qualquer site e não só joomla. mas eu nao me lembro se ele vai acular que esta numa pagina interna se estiver em site.com.br/index.html, que ainda assim seria o frontend.
Emerson da Rocha Luiz
Moderador aposentado, 2008-2014 | Membro do JUGRS
http://www.fititnt.org

User avatar
marcoscanova
Joomla! Explorer
Joomla! Explorer
Posts: 255
Joined: Wed Jan 30, 2008 12:05 am
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by marcoscanova » Fri Sep 25, 2009 5:08 am

Olá,

E para links quaisquer, como ficaria? Se a url é "tal" então o módulo não aparece.

Obrigado.

[]s

User avatar
nailson_imgn
Joomla! Guru
Joomla! Guru
Posts: 729
Joined: Wed Apr 15, 2009 5:33 pm
Location: Fortaleza, CE - Brasil

Re: Condicional para determinar se o componente é o frontend

Post by nailson_imgn » Wed Sep 30, 2009 11:06 pm

O Joomla! permite por padrão que você defina a quais itens de menu os seus módulos estão associados, o que com certeza já atende às necessidades da maioria. Contudo, em casos especiais, você pode fazer assim:

Code: Select all

// Isso é só um exemplo
$paginaAtual = JURI::current();
if( $paginaAtual == 'link/da/pagina/de/noticias.html' ){
   // Chame o jdoc include da posição dos módulos de notícias
}
elseif( $paginaAtual == 'link/da/pagina/de/outra-coisa.html' ){
   // Chame o jdoc include da posição dos módulos de uma outra coisa
}
else{
   // E assim vai...
}
Você pode utilizar verificações desse tipo para criar ou não determinadas posições na index.php do TEMPLATE. Aí, basta associar os módulos que você quiser a estas POSIÇÕES. Isso deve ser o suficiente pra atender às necessidades de todos.
.
Nailson Oliveira
Técnico de Tecnologia da Informação - Desenvolvedor Joomla!
-----------------------------------------------------------------------------------------

mamura
Joomla! Apprentice
Joomla! Apprentice
Posts: 23
Joined: Thu Nov 13, 2008 9:23 pm
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by mamura » Thu Oct 01, 2009 4:28 am

Bem, se você quer apresentar algum código, módulo, etc apenas na home você pode fazer o seguinte teste:

if( JRequest::getCmd( 'view' ) == "frontpage" ){
/*
* Escreva aqui o código que irá aparecer na home
*/
}

Esse teste deve ser feito na index do template.

User avatar
ronildo
Joomla! Virtuoso
Joomla! Virtuoso
Posts: 4021
Joined: Thu Aug 18, 2005 12:39 pm
Location: São Paulo - Brazil
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by ronildo » Thu Oct 01, 2009 10:49 am

Vejam se isso ajuda:
http://docs.joomla.org/How_to_determine ... front_page

ps: dica do julio (joomila)
http://www.ronildo.com.br/blog/ pt-br | twitter: twitter.com/ronildo
http://forum.joomla.org/viewtopic.php?f=23&t=144443 - FAQ Joomla [pt]
Pessoal por favor não tiro dúvidas por e-mail nem mensagem privada, por favor não insistam.

User avatar
fititnt
Joomla! Hero
Joomla! Hero
Posts: 2350
Joined: Sat Jul 15, 2006 1:41 am
Location: Porto Alegre - RS - Brazil
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by fititnt » Thu Oct 01, 2009 3:22 pm

A sugestão do mamura é a com menos linhas de código de todas. Interessante certamente


Ela so erraria se tivesse algum componente que tivesse uma view com nome frontpage, mas seria um erro muito especifico.


A sugetão do nailson_imgn se me lembro diteiro, faz diferenciação conforme a url e se pode ter mais de uma URL ( URL com e sem SEF) e poderia ser um problema.
Emerson da Rocha Luiz
Moderador aposentado, 2008-2014 | Membro do JUGRS
http://www.fititnt.org

User avatar
nailson_imgn
Joomla! Guru
Joomla! Guru
Posts: 729
Joined: Wed Apr 15, 2009 5:33 pm
Location: Fortaleza, CE - Brasil

Re: Condicional para determinar se o componente é o frontend

Post by nailson_imgn » Thu Oct 01, 2009 3:47 pm

marcoscanova wrote:Olá,

E para links quaisquer, como ficaria? Se a url é "tal" então o módulo não aparece.

Obrigado.

[]s
O exemplo que eu dei é para caso como o da pergunta acima, em que a pessoa já sabe a quais módulos só devem aparecer em quais links. Não levei em consideração a diferença entre o SEF, mas basta fazer as comparações de $paginaAtual e JRoute::_( 'link/especifico/que/voce/ja_sabe' ) e tudo continua funcionando perfeitamente. Mas lógico, esta solução é para o caso citado acima e não para identificar se a página atual é a home, apesar de que também funciona para a home.
.
Nailson Oliveira
Técnico de Tecnologia da Informação - Desenvolvedor Joomla!
-----------------------------------------------------------------------------------------

User avatar
marcoscanova
Joomla! Explorer
Joomla! Explorer
Posts: 255
Joined: Wed Jan 30, 2008 12:05 am
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by marcoscanova » Thu Oct 01, 2009 5:51 pm

Olá,

Como o caso era não exibir certos módulos (banner, menu subcategorias, etc) em certas url´s do VirtueMart que não convinham (checkout, carrinho, manutenção de conta, etc), usei esta solução:

Code: Select all

if ((JRequest::getVar('page') != 'shop.browse')) {
} else { ?>
    <jdoc:include... />
<?php } ?>
Abraços e obrigado pela resposta.

nailson_imgn wrote:
marcoscanova wrote:Olá,

E para links quaisquer, como ficaria? Se a url é "tal" então o módulo não aparece.

Obrigado.

[]s
O exemplo que eu dei é para caso como o da pergunta acima, em que a pessoa já sabe a quais módulos só devem aparecer em quais links. Não levei em consideração a diferença entre o SEF, mas basta fazer as comparações de $paginaAtual e JRoute::_( 'link/especifico/que/voce/ja_sabe' ) e tudo continua funcionando perfeitamente. Mas lógico, esta solução é para o caso citado acima e não para identificar se a página atual é a home, apesar de que também funciona para a home.

User avatar
fititnt
Joomla! Hero
Joomla! Hero
Posts: 2350
Joined: Sat Jul 15, 2006 1:41 am
Location: Porto Alegre - RS - Brazil
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by fititnt » Fri Dec 04, 2009 6:00 pm

Emerson da Rocha Luiz
Moderador aposentado, 2008-2014 | Membro do JUGRS
http://www.fititnt.org

User avatar
marcoscanova
Joomla! Explorer
Joomla! Explorer
Posts: 255
Joined: Wed Jan 30, 2008 12:05 am
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by marcoscanova » Fri Dec 04, 2009 6:12 pm

Olá,

Ótimo artigo fititnt, já está nos favoritos, parabéns! Roubou minha idéia para um artigo, mas tudo bem. :D

[]s

User avatar
fititnt
Joomla! Hero
Joomla! Hero
Posts: 2350
Joined: Sat Jul 15, 2006 1:41 am
Location: Porto Alegre - RS - Brazil
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by fititnt » Fri Dec 04, 2009 6:49 pm

humm, nem sabia que você estava querendo escrever algo desse tipo. Eu tava a tempos por juntar esses códigos e só empurrando até que um dia juntei tudo.
Emerson da Rocha Luiz
Moderador aposentado, 2008-2014 | Membro do JUGRS
http://www.fititnt.org

User avatar
nailson_imgn
Joomla! Guru
Joomla! Guru
Posts: 729
Joined: Wed Apr 15, 2009 5:33 pm
Location: Fortaleza, CE - Brasil

Re: Condicional para determinar se o componente é o frontend

Post by nailson_imgn » Fri Dec 04, 2009 6:59 pm

marcoscanova wrote:Olá,

Ótimo artigo fititnt, já está nos favoritos, parabéns! Roubou minha idéia para um artigo, mas tudo bem. :D

[]s
Valeu pelo reconhecimento @fitnit

Nota: seu tutorial agrega algumas coisas interessantes, mas você deveria fazer uma revisão mais detalhada dele. Tem algumas falhas que você deixou passar:

"Determinar se é um usuário específico": os comentários indicam que o condicional revela o tipo de usuário ao invés de um usuário específico

"Determinar se é uma página especifica (Itemid)" está longe de ensinar o que o título sugere. A variável Itemid se refere ao id do item de menu que está atualmente selecionado. Como componentes podem ser executados sem a necessidade de um menu, a chamada pode resultar em 0 e isso não indica nem de longe em qual página se está.
Além disso, o comentário desse trecho diz "Esta página é especifica do artigo de ID 27" o que não tem nenhuma obrigação de ser, uma vez que você pode escolher qualquer artigo para ser exibido em um dado menu( não há relação direta "id_menu <==> id_artigo" ).

Corrigindo isso, acho que fica tudo OK. Você já pensou em adicionar esse tipo de tutorial à wiki?
http://docs.joomla.org/Category:Tips_and_tricks_1.5

Boa sorte

Nota[2]: @marcoscanova se há interesse mútuo em publicar tutoriais similares talvez fosse interessante mantê-los na wiki oficial onde todos podem colaborar, não acha?
.
Nailson Oliveira
Técnico de Tecnologia da Informação - Desenvolvedor Joomla!
-----------------------------------------------------------------------------------------

User avatar
marcoscanova
Joomla! Explorer
Joomla! Explorer
Posts: 255
Joined: Wed Jan 30, 2008 12:05 am
Contact:

Re: Condicional para determinar se o componente é o frontend

Post by marcoscanova » Sat Dec 05, 2009 1:38 pm

Olá,

Estava apenas brincando fititnt e sim nailson_imgn, é uma ótima dica.

[]s


Locked

Return to “Programação e desenvolvimento”