web-dev-qa-db-fra.com

com_content: récupère l'article associé dans la bonne langue

J'ai un modèle, où j'aimerais imprimer le contenu d'un article, ce qui fonctionne assez bien jusqu'à présent, en utilisant ce code:

JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models');
$model = JModelLegacy::getInstance('Article', 'ContentModel');
$article = $model->getItem($aid);
$terms = empty($article->fulltext) ? $article->introtext : $article->fulltext;

Donc, en gros, j'ai l'identifiant de l'article et je le charge, MAIS qui génère une erreur si le langage actuel diffère du langage de l'article. Malheureusement, je ne peux pas "traduire" l'identifiant de l'article, je dois donc trouver un moyen d'obtenir le bon article en fonction de la langue actuelle.

Heureusement, il y a les associations que je peux utiliser pour ce travail (image ci-dessous).

associations view

Alors maintenant ma question:

Comment puis-je charger l'article associé?

n.b .: J'ai déjà jeté un coup d'œil à la base de données et j'ai trouvé le tableau des associations, mais j'espère seulement qu'il y a déjà du code que je pourrais utiliser!

Merci d'avance!

6
philipp

Vous pouvez utiliser JLanguageAssociations::getAssociations. Cette fonction retournera un tableau contenant les éléments associés. Vous pouvez également vérifier si le paramètre de filtre de langage Eléments Associations est activé à l'aide de JLanguageAssociations::isEnabled();.

Voici un exemple tiré de ROOT/administrator/components/com_content/models/article.php:

// Load associated content items
$app = JFactory::getApplication();
$assoc = JLanguageAssociations::isEnabled();

if ($assoc)
{
    $item->associations = array();

    if ($item->id != null)
    {
        $associations = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $item->id);

        foreach ($associations as $tag => $association)
        {
            $item->associations[$tag] = $association->id;
        }
    }
}

return $item;

Ressources :

6
johanpw

components/com_content/helpers/association.php

a une classe ContentHelperAssociation et une fonction getAssociations($id = 0, $view = null) que vous pourriez probablement utiliser.

1
wouho