Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 

Aqui você vai encontrar uma coletânea de códigos que usei em algum momento nos arquivos do Joomla.
Um exemplo de onde usar isso: em substituições do tema (template overrides).

Para pegar a categoria ou a categoria pai atual:

$category = JTable::getInstance('category');
$category->load($catid);
echo $category->parent_id;

Para pegar os parâmetros do plugin dentro do plugin

$param = $this->params->get('paramName', defaultValue);

Para pegar os parâmetros do plugin fora do plugin

$plugin =JPluginHelper::getPlugin('editors','codemirror');
$pluginParams =newJRegistry();
$pluginParams->loadString($plugin->params);
$param = $pluginParams->get('paramName','defaultValue');

Para pegar os parâmetros do módulo dentro do módulo

$param = $params->get('paramName','defaultValue');

Para pegar os parâmetros do módulo fora do módulo

$module =JModuleHelper::getModule('banners');
$moduleParams =newJRegistry();
$moduleParams->loadString($module->params);
$param = $moduleParams->get('paramName','defaultValue');

Para pegar os parâmetros do componente dentro do componente

$app =JFactory::getApplication('site');
$componentParams = $app->getParams('com_content');
$param = $componentParams->get('paramName', defaultValue);

Para pegar os parâmetros do componente fora do componente

$app =JFactory::getApplication('site');
$componentParams = $app->getParams('com_example');
$param = $componentParams->get('paramName', defaultValue);

Para pegar os parâmetros do tema dentro do tema

$param = $this->params->get('paramName', defaultValue);

Para pegar os parâmetros do tema padrão fora do tema

$app =JFactory::getApplication('site');
$template = $app->getTemplate(true);
$param = $template->params->get('paramName', defaultValue);

Para pegar a primeira imagem em qualquer parte de um texto dos artigos

preg_match('/(?<!_)src=([\'"])?(.*?)\\1/',$item->introtext, $matches);
$image = $matches[2];

Para pegar o caminho do tema padrão

$app    = JFactory::getApplication();
$tpath   = JURI::base(true).'/templates/'.$app->getTemplate().'/';

Para pegar o texto do artigo limitando o texto, removendo tags html (ou trocando)

//Limite de caracteres
$maxLimit = "200";
         $text = preg_replace("/\r\n|\r|\n/", " ", $text);
                    // Em seguida, troca os marcadores <br /> com \n
                    $text = preg_replace("/<BR[^>]*>/i", " ", $text);
                    // Troca os marcadores <p> com \n\n
                    $text = preg_replace("/<P[^>]*>/i", " ", $text);
                    // Remove todos os marcadores
                    $text = strip_tags($text);
                    // Trunca o texto pelo limite de caracteres
                    $text = substr($text, 0, $maxLimit);
                    //$text = String::truncate($text, $maxLimit, '...', true);
                    // Deixa visível a última palavra que, no caso, foi cortada no meio
                    $text = preg_replace("/[.,!?:;]? [^ ]*$/", " ", $text);
                    // Adiciona reticências ao fim do texto
                    $text = trim($text) . '...' ;
                    // Troca \n com <br />
                    $text = str_replace("\n", " ", $text);
           echo $text;

Pegando o endereço da categoria do artigo com URL amigável:

<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($item->catslug)); ?>

Obtendo o plugin 'Artigos Relacionados' do tipo 'Conteúdo de Artigos'

$plugin = JPluginHelper::getPlugin('content', 'relatedarticles');

// Check if plugin is enabled

if ($plugin)

{

    // Get plugin params

    $pluginParams = new JRegistry($plugin->params);

    $catids = $pluginParams->get('catids');

}

Para acessar os parâmetros do item de menu atual

$app = JFactory::getApplication();

// Obtém o Item de Menu atualmente ativo

$currentMenuItem = $app->getMenu()->getActive();

// Obtém os parâmetros do Item de Menu atualmente ativo

$params = $currentMenuItem->params;

// Agora você pode pegar um parâmetro em particular

$yourParameter = $params->get('yourParameter');

Para acessar os parâmetros de um item de menu com um ID já conhecido

$app = JFactory::getApplication();

// Obtém o ID do ítem de menu da URL

$input  = JFactory::getApplication()->input;

$itemId = $input->get->get('Itemid', '0', 'INT');

// Obtém o ítem de menu do ID

$menuItem = $app->getMenu()->getItem($itemId);

// Obtém os parâmetros do ítem e menu

$params = $menuItem->params;

// Agora você escolhe qual parâmetro desejar

$yourParameter = $params->get('yourParameter');

Para pegar o sufixo de classe de página do item de menu atualmente ativo:

$pageclass_sefx = JFactory::getApplication()->getMenu()->getActive()->params->get('pageclass_sfx');

Para executar uma código somente se determinados sufixo de classe existir em um item de menu atualmente ativo

$tuaclasse = explode(' ',JFactory::getApplication()->getMenu()->getActive()->params->get('pageclass_sfx'));
<?php if(in_array('troque pelo nome da classe',$tuaclasse)): ?>
<!-- restante do código -->
<?php endif;?>

Para obter o carregamento dos plugins de conteúdo do Joomla em qualquer texto

// Obtém os plugins de conteúdo, de forma que eles sejam aplicados ao texto desejado
// No exemplo abaixo, carregamos os plugins para um texto obtido de resultados de uma consulta ao banco de dados

$text = JHtml::_('content.prepare', $result->fulltext);
echo  $text;

Para obter o apelido do item de menu atual

$menuitemalias = JFactory::getApplication()->getMenu()->getActive()->alias;

Para carregar módulos ou criar posições em qualquer lugar nos códigos do Joomla (temas, outros componentes, etc)

jimport('joomla.application.module.helper');
$position = 'positionName';
$modules = JModuleHelper::getModules($position);
foreach ($modules as $module) {   
echo JModuleHelper::renderModule($module); 
}

Para carregar apenas um campo personalizado por vez (disponíveis no Joomla 3.7 acima) em qualquer lugar nos códigos do Joomla (temas, outros componentes, etc) 

             <?php JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); ?>
                   <?php foreach ($this->item->jcfields as $kf=>$field) : ?>
                         <?php if ($field->name == 'descricao-adicional') :?>
                             <div class="<?php echo $field->params->get('render_class'); ?>">
                                 <?php echo $field->value; ?>
                             </div>
                         <?php endif; ?>
                  <?php endforeach; ?>

Para carregar todos os campos personalizados (disponíveis no Joomla 3.7 acima) em qualquer lugar nos códigos do Joomla (temas, outros componentes, etc) 

Você pode usar o override do article/tmpl/default.php  e dentro dele pegar o sufixo de classe da página para carregar dinamicamente o conteúdo

$yourParameter = explode(' ',JFactory::getApplication()->getMenu()->getActive()->params->get('pageclass_sfx'));

Depois use uma condição para carregar os campos personalizados conforme a classe da página atual (sufixo de classe do item de menu)
No exemplo abaixo carrego o os campos personalizados em modo lista com os títulos dos grupos de campos a cada novo grupo
Para tudo dar certo, crie os grupos, crie os campos personalizados e habilite-os para as categorias e grupos mais adequados e desabilite o carregamento automático de cada um deles.

<?php if (in_array('perfis',$yourParameter) :?>
<div class="col-md-3 span3">
  <?php JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); ?>
  <?php
$cf = '0';
?>
  <?php foreach ($this->item->jcfields as $kf=>$field) : ?>
  <?php
$count = $cf++;
$group[$count] = $this->item->jcfields[$kf]->group_title;
?>
  <?php if (($group[$count-1] != $group[$count]) and ($field->value)) : ?>
  <?php echo '<h3>'.$group[$count].'</h3>';?>
  <?php endif;?>
  <?php if (($group[$count-1] != $group[$count]) and ($field->value)) : ?>
  <ul class="square-checkmark">
    <?php endif;?>
    <?php
if ($field->value){
echo '<li>'.$field->label . ': ' . $field->value.'</li>';
}
?>
    <?php endforeach ?>
  </ul>
</div>
<?php endif; ?>

Para identificar qual o idioma atual do site

$lang = JFactory::getLanguage();
if ($lang->getTag() == 'en-GB') {
\\whatever code
else {
}\\etc

Para adicionar folhas de estilo externa

$document = JFactory::getDocument();
$document->
addStyleSheet($url);

Para adicionar javascript externo

$document = JFactory::getDocument();
$document->
addScript($url);

Para adicionar folhas de estilo internamente

$document = JFactory::getDocument();
$document->
addStyleDeclaration(
'.classe{ etc};
'
);

Para adicionar javascript externo

$document = JFactory::getDocument();

$document->addScriptDeclaration(
'
//código javascript
'
);

 

 ;

Deixe seus comentários

Postar um comentário como visitante

0
Teus comentários estão sujeitos à moderação de um administrador.

Pessoas nesta conversa