Última atualização em Sex, 04 de Dezembro de 2009 17:59
Sex, 27 de Novembro de 2009 16:05
Esta lista ainda não é definitiva. Resolvi publicar ela mesmo não tendo muito conteúdo por já estar adiando a tempos isso. Caso você tenha sugestões, ou tenha dúvida de algum IF que possa ser util para você, pode entrar em contato ou deixar um comentário no final desta página.
Prefácio - O que saber antes de começar
Em primeiro lugar, você deve ter em mente que um if de PHP pode ser organizado de diversas formas, inclusive usando as condicionais se verdadeiras ou falsas em outros casos. Tome esta página como conhecimento para algumas dúvidas comuns no dia-a-dia de um programador de extensões ou em um desenvolvedor de templates. E lembre-se que você pode fazer sugestões.
"If tipo 1" - Grandes Blocos de HTML (templates e afins)
Se você é designer, certamente vai usar muito esse tipo.
<?php if (CONDICAO) : ?>
<!--Olá! :D Eu sou um HTML feliz -->
<!--Caso a CONDICAO seja verdadeira, eu aparecerei na página! -->
<jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
<?php endif; ?>
"If tipo 2.1" - Melhor quando trabalha com PHP e pouco HTML
<?php if (CONDICAO) {
echo JText::_('Oi! A condição é verdadeira!\');
}?>
"If tipo 2.2" - Melhor quando trabalha com PHP e pouco HTML
<?php if (CONDICAO1) {
echo JText::_('Oi! A CONDICAO1 é verdadeira!');
} elseif (CONDICAO2) {necho JText::_('Oi! A CONDICAO1 é falsa! Mas a CONDICAO2 verdadeira!');
} else {
necho JText::_('Oi! A CONDICAO1 e CONDICAO2 São Falsas!');
}?>
Dica: de como especificar apenas excessões!
Neste caso é simples. em todas as condicionais que você quiser dizer o contrário, basta adicionar exclamação (!) antes da condição:
if (!CONDICAO) {
echo JText::_('Minha condição NÂO é verdadeira!');
}
Determinar se é frontend ou backend
$app = JFactory::getApplication();
if ($app->isAdmin()) {
echo JText::_('Estou na área administrativa do Joomla!');
} else {
echo JText::_('Não estou na área administrativa do Joomla!');
}
Exemplo: Retornar URL base independente de ser frontend ou backend
Se você não sabe, o modo de como retornar a URL base do Joomla é diferente no frontend do backend. O código mais curto para evitar ter que pensar muito ou mesmo usar um mesmo arquivo nas duas áreas é o seguinte.
<?php
$paginaatual = JURI::current();
if( $paginaAtual == 'link/da/pagina/de/noticias.html' ){
echo JText::_('Voce esta vendo a página link/da/pagina/de/noticias.html desde site');
}
?>
Determinar se é um componente específico (option)
$option = JRequest::GetWord('option'); //com_content, com_user, com_contact...
if ($option == 'com_content') {
echo JText::_('Esta página é do componente com_content ');
}
Determinar se é uma view especifica (view)
$view = JRequest::GetWord('view'); //frontpage, default, form, ...
if ($view == 'frontpage') {
echo JText::_('Esta página é exibida com a view frontpage');
}
Determinar se é um formato específico (format)
$format = JRequest::GetWord('format'); //html, pdf, raw,...
if ($format == 'html') {
echo JText::_('Esta página é exibida com o format html');
}
Determinar se é uma página especifica (Itemid)
$ItemId = JRequest::GetInt('Itemid'); //Numero do artigo
if ($ItemId == '27') {
echo JText::_('Esta página é especifica do artigo de ID 27');
}
Determinar se é visitante ou usuário logado
$user =& JFactory::getUser();
if ( $user->get('guest') ) { //$user->get('guest') retorna '1' caso seja visitante
echo JText::_('Você é um visitante!');
} else {
echo JText::_('Você é um usuario autenticado!');
}
Exemplo: Exibir posição de módulo apenas para visitantes
Dois parametros podem ser usados do JUser neste caso: grid e usertype. Grid é o equivalente numérico do usertype ao qual você já deve estar acostumado, e o usertipe é o nome com o qual o grupo do usuário é salvo no banco de dados
$user =& JFactory::getUser();
if ( $user->get('usertype') == 'Super Administrator') { //Super Administrator, Administrator, Manager...
echo JText::_('Você é um Super Administrador do sistema!');
}
Determinar se é um usuário específico
Neste exemplo, ao usar somente o '$user =& JFactory::getUser()' estamos carregando o usuário atualmente logado no sistema. Se por exemplo quer pegar os dados de qualquer usuário específico, independente de quem esteja logado no sistema, deve especificar o id do respectivo usuáio ou o username, no caso $user =& JFactory::getUser(62) / $user =& JFactory::getUser('admin') para o administrador padrão do Joomla.
Neste exemplo, vamos pegar somente o usuário atualmente logado e procurar saber se o id dele é igua o id de usuário que queremos. Mas lembre-se que você pode usar qualquer outro dos parâmetros, como username ou nome de usuário
Quando estiver desenvolvendo uma extensão, é comum usar certos códigos para ver como as coisas estão indo. Não obstante, ao entregar para o cliente final ficar apagando, ou com sorte só comentando, pode encomodar um pouco, em especial se o projeto em questão não foi 'finalizado para todo o sempre' ou mesmo ainda está em constante desenvolvimento. Neste caso você tem pelo menos duas boas alternativas são voce usar para debugar sua extensão: extender o modo debug padrão do joomla, ou setar sua própria variavel no arquivo principal de sua extensão, fazendo com que o resto do código execute se tal código estiver definido. Neste exemplo, você tem como base como executar um ploco de ações somente quando o Modo debug padrão do Joomla estiver ligado
if (JDEBUG) { //JDEBUG é uma constante definida pelo sistema com Debug = ON
echo JText::_('O debug do sistema está on! Posso dar uns print_r() a vontade :D');
}