web-dev-qa-db-fra.com

Obtenir le dernier article de la catégorie, y compris les sous-catégories

J'essaie d'obtenir le dernier article dans une catégorie comportant un certain nombre de sous-catégories via le module Articles ContentModel.

Si j'utilise $model->setState('filter.category_id', $this->category->id);, il ne retourne rien car la catégorie en question ne contient aucun article; tous les articles sont en sous-catégories.

Comment puis-je obtenir tous les articles de la catégorie actuelle, y compris les enfants?

Code en question:

$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
$model->getState();

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

// Set the filters based on the module params
$model->setState('list.start', 0);
$model->setState('list.limit', 1);
$model->setState('filter.category_id', $this->category->id);
$model->setState('filter.published', 1);

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

// Featured Item

// Get article from featured set
// $model->setState('filter.featured', 'only');

// Ordering
$model->setState('list.ordering', 'a.publish_up');
$model->setState('list.direction', 'DESC');

$items = $model->getItems();
1
Mark

Vous devez activer les sous-catégories avec le subcategories.filter et spécifiez également les niveaux de sous-catégories que vous souhaitez approfondir.

$model->setState('filter.subcategories', true);
$model->setState('filter.max_category_levels', $subCategoryLevels);

Notez que la vérification des sous-catégories aura lieu si l'id de la catégorie pour le filter.category_id est numérique, sinon, si vous transmettez un tableau d'identifiants de catégorie (provenant par exemple d'un champ de sélection à choix multiples), le modèle ne cherchera pas de sous-catégories, mais chargera les articles correspondant aux identifiants de catégorie donnés.

1
FFrewin