web-dev-qa-db-fra.com

Le meilleur moyen d’afficher une liste de catégories qui montre également toutes les sous-catégories?

Je cherche depuis un moment déjà comment afficher une liste de catégories contenant également des sous-catégories, par exemple:

enter image description here

Dans ce cas, la liste des contenus ne montre qu'un niveau de sous-catégorie (ou le nom des articles dans la catégorie), mais je voudrais éventuellement afficher autant de sous-catégories que je le souhaite.

J'ai essayé de créer une liste de catégories ou un blog, mais le résultat n'est pas ce que je veux:

enter image description here

En gros, je dois cliquer sur Intro (qui est une sous-catégorie de la catégorie Basics définie dans le menu). Ce que je voudrais obtenir, c'est une liste des noms de catégories, avec des sous-listes contenant des listes de sous-catégories et/ou d'articles, afin que je puisse cliquer et me déplacer.

Si ce n'est pas possible avec les modules de base de Joomla, existe-t-il un module qui me permet de l'obtenir?

Je sais que je pourrais créer manuellement une liste de liens avec toutes les sous-listes de liens avec l'éditeur, mais ce serait bien si un module pouvait le faire pour nous.

3
nbro

voir le lien:

https://stackoverflow.com/questions/17988998/joomla-get-subcategories-of-custom-parent-category

$catID = JRequest::getVar('id');
$categories = JCategories::getInstance('Content');
$cat = $categories->get($catID);
$children = $cat->getChildren();
print_r($children);
1
Sh4msi

Il y a peu de solutions:

Si vous souhaitez obtenir uniquement l'arborescence des catégories

Utilisez Remplacements de modèle pour créer une mise en page alternative pour la vue des catégories. Dans cette vue, utilisez JCategories pour obtenir l’arborescence des catégories. Voici un échantillon:

$model_categories = JCategories::getInstance('Content');
$root = $model_categories->get('root');
$categories = $root->getChildren();

Vous pouvez utiliser getChildren() pour que chaque catégorie obtienne ses enfants.

Si vous voulez obtenir l'arborescence des catégories avec tous ses articles

Vous créez tout ce qui précède, mais collectez les identifiants de catégories. Ensuite, récupérez dans la base de données tous les articles de ces catégories en utilisant les identifiants collectés. Créez des articles map array où la clé du tableau sera la catégorie id afin que votre tableau se présente comme suit:

Array(
    CATEGORY1_ID => array(
       1=>YOUR_ARTICLE_OBJECT1,
       2=>YOUR_ARTICLE_OBJECT2,
       3=>YOUR_ARTICLE_OBJECT3
    ),
    CATEGORY2_ID => array(
       1=>YOUR_ARTICLE_OBJECT1,
       2=>YOUR_ARTICLE_OBJECT2,
    )
);

De cette façon, vous n'aurez besoin que d'une seule requête pour obtenir des articles pour toutes les catégories. Ensuite, lors de l’impression de la catégorie, utilisez la carte des articles.

Conclusion

Cette solution a des inconvénients. Votre composant utilisera toujours les requêtes du modèle dont vous n'avez bien sûr pas besoin (environ 2 d'entre elles). Vous pouvez toujours utiliser une sorte de composant Sitemap pour obtenir la même vue, mais ils ne sont pas nombreux.

1
Artur Stępień

Dans Joomla 3.x, vous pouvez utiliser le module Catégories natif de Joomla.

Votre exemple montre 3 catégories, donc je chargerais trois modules à partir de l'article, et configurerais ces modules pour afficher l'information que vous voulez.

MODULE CONFIGURATION JE FAIS:

  • Catégorie parente: Introduccion
  • Descriptions de la catégorie: Non
  • Afficher le nombre d'articles: Non
  • Afficher les sous-catégories: Oui
  • # Premières sous-catégories: toutes
  • Niveau maximum de profondeur: 1
  • Affectation de menu: seules les pages où vous en avez besoin

CONTENU DE L'ARTICLE CORRESPONDANT À LA PAGE QUE VOUS VOULEZ:

{loadposition dans article-categories1}

{position de chargement dans article-catégories2}

{position de chargement dans article-catégories3}

1
IberoMedia