web-dev-qa-db-pt.com

com_content - obtenha o artigo associado no idioma certo

Eu tenho um modelo, onde gostaria de imprimir o conteúdo de um artigo, o que está funcionando bastante bem até agora, usando este código:

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;

Então, basicamente, eu tenho o ID do artigo e o carrego, MAS que gera um erro se o idioma atual for diferente do idioma do artigo. Infelizmente, não consigo "traduzir" o ID do artigo, por isso preciso encontrar uma maneira de obter o artigo certo com base no idioma atual.

Felizmente, existem as associações que posso usar para esse trabalho (imagem abaixo).

associations view

Então agora minha pergunta:

Como posso carregar o artigo associado?

n.b .: Eu já dei uma olhada no banco de dados e encontrei a tabela de associações, mas espero que já exista algum código que eu possa usar!

Obrigado em frente!

6
philipp

Você pode usar JLanguageAssociations::getAssociations. Esta função retornará uma matriz contendo itens associados. Você também pode verificar se o parâmetro Associações de itens do filtro de idioma está ativado usando JLanguageAssociations::isEnabled();.

Aqui está um exemplo 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;

Recursos :

6
johanpw

components/com_content/helpers/association.php

possui uma classe ContentHelperAssociation e uma função getAssociations($id = 0, $view = null) que você provavelmente poderia usar.

1
wouho