Full-stack developer Emerson Rocha .::. CMS Joomla!, PHP, JavaScript/NodeJS, Infraestrutura

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.

 $app = JFactory::getApplication();
 $live_site = $app->isAdmin() ? $app->getSiteURL() : JURI::base();
Obrigado ao Chris Davenport pela idéia simples e prática.

Determinar se é a página inicial (frontpage do site)

Baseado na documentação oficial How to determine if the user is viewing the front page.

<?php
// Para conteúdos que possuem a mesma linguagem
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    echo JText::_('Voce esta vendo a pagina inicial do site')
}
?>
<?php
// Para conteúdos de idiomas diferentes
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault( 'en-GB' )) {
    echo 'This is the front page';
}
elseif ($menu->getActive() == $menu->getDefault( 'pt-BR' )) {
    echo 'Página inicial';
}
?>
<?php
// Este código abaixo funcionava até a versão 1.5, e era a recomendação. 
// Se tiver que atualizar extensões, converta seu código antigo para os acima
$menu = JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo JText::_('Voce esta vendo a pagina inicial do site');
}
?>

Determinar se é a página especifica

Baseado no post do nailson_imgn.

<?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 menu de ID 27');
 }

Obrigado ao Fernando Nunes e até ao João Amado Alves da Rosa. Demorei 5 (!) meses, mas atualizei aqui. A antes estava menu do artigo, e não do menu, como é o correto

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

<?php
$user = JFactory::getUser();
if ($user->get('guest')) : ?>
<!--HTML aqui dentro -->
<jdoc:include type="modules" name="top" style="beezDivision" headerLevel="3" />
<?php endif; ?>

Determinar se é um tipo de usuário

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

Visite Accessing the current user object

 $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

Visite Accessing the current user object

 $user = JFactory::getUser();
     if ( $user->get('id') == '62') { //Super Administrator, Administrator, Manager...
      echo JText::_('Você é especificamente o usuário que estou procurando!');
 }

Determinar se o modo de debug está ligado

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');
 }

Outra dica para quem quer debugar em Joomla é usar o JoomlaFox!


fititnt.org is not affiliated with or endorsed by the Joomla Project or Open Source Matters. The Joomla logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries
HTML5 Valid