X
    Categoria: Joomla

[Joomla] – Filtrar artigos utilizando model setState

 

 

De uma forma simples e rápida utilizando o $model->setState podemos filtrar vários artigos pela sua ID.

utilizando o comando abaixo:

$model->setState('filter.article_id', $content_ids);
$model->setState('filter.article_id.include', true);

Onde nesse casso o $content_ids é um array contendo seus ids, por exemplo:

 

$content_ids = array(
                                 5332,5627,4965,5126,5243
				);

 

o código completo ficaria assim:

include_once JPATH_BASE .DS.'components/com_content/models/article.php';   
require_once JPATH_BASE .DS.'components/com_content/helpers/route.php';
require_once JPATH_BASE .DS.'components/com_content/helpers/query.php';


JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');

$mainframe = JFactory::getApplication('site');
$mainframe->initialise();	

JPluginHelper::importPlugin( 'system' );
                                                                   
$db = JFactory::getDbo();
// Get an instance of the generic articles model
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));

// Set application parameters in model
$app = JFactory::getApplication();
$appParams = $app->getParams();
$model->setState('params', $appParams);

$model->setState('list.start', 0);
$model->setState('list.limit', 10);
$model->setState('filter.published', 1);

// Access filter
$access     = !JComponentHelper::getParams('com_content')->get('show_noauth');
$authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
$model->setState('filter.access', $access);

$dir      = 'DESC';

$content_ids = array(5332,5627,4965,5126,5243,5348,5313,4219,5208
				);

$model->setState('filter.article_id', $content_ids);
$model->setState('filter.article_id.include', true);

$model->setState('list.ordering', 'a.publish_up');
$model->setState('list.direction', $dir);
		
$items = $model->getItems();

 

na sua variável $items vai conter um array() com todos os seus artigos filtrados.

 

 

 

Juliano Rossetto: Formado em Analise e Desenvolvimento de Sistemas. Desenvolvedor dos principais CMS ( Wordpress, Joomla). Desenvolvedor de E-commerce (Opencart e WooCommerce). Analista de SEO: Otimização de sites para mecanismos de buscas. Analista de Infraestrutura voltado para servidores na nuvem: Amazon Web Services (AWS), DigitalOcean e Linode. Para dúvidas ou serviços entre em contato aqui.
Posts relacionados