it-swarm.com.de

com_content: Liefert den zugehörigen Artikel in der richtigen Sprache

Ich habe eine Vorlage, in der ich den Inhalt eines Artikels ausdrucken möchte, was bisher ganz nett funktioniert, mit diesem 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;

Im Grunde genommen habe ich die ID des Artikels und lade sie, ABER das löst einen Fehler aus, wenn die aktuelle Sprache von der Sprache des Artikels abweicht. Leider kann ich die Artikel-ID nicht "übersetzen", daher muss ich einen Weg finden, um den richtigen Artikel basierend auf der aktuellen Sprache zu finden.

Zum Glück gibt es die Assoziationen, die ich für diesen Job verwenden kann (Bild unten).

associations view

Also jetzt meine Frage:

Wie kann ich den dazugehörigen Artikel laden?

n.b .: Ich habe mir bereits die Datenbank angesehen und die Zuordnungstabelle gefunden, aber ich hoffe nur, dass es bereits Code gibt, den ich verwenden kann!

Vielen Dank im Voraus!

6
philipp

Sie können JLanguageAssociations::getAssociations Verwenden. Diese Funktion gibt ein Array mit zugehörigen Elementen zurück. Sie können auch mit JLanguageAssociations::isEnabled(); prüfen, ob der Parameter Items Associations für den Sprachfilter aktiviert ist.

Hier ist ein Beispiel von 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;

Ressourcen :

6
johanpw

components/com_content/helpers/association.php

hat eine Klasse ContentHelperAssociation und eine Funktion getAssociations($id = 0, $view = null), die Sie wahrscheinlich verwenden könnten.

1
wouho