web-dev-qa-db-fra.com

Obtenir le lien complet du type de champ d'élément de menu

Je développe mon propre composant et module de diaporama pour Joomla. Le composant est utilisé pour sélectionner les diapositives ainsi que les légendes, les liens, etc. Le module affiche les diapositives.

Dans le composant, j'ai activé pour chaque diapositive la possibilité d'ajouter un lien à chaque diapositive. Le type de champ que j'ai utilisé est le type de champ d'élément de menu http://docs.joomla.org/Menuitem_form_field_type

Cela semble ajouter l'id d'élément de menu à la base de données pour cette diapositive particulière.

Ma question est; comment puis-je utiliser cet identifiant d'élément de menu et l'utiliser dans le module pour obtenir le lien complet d'élément de menu? Je comprendrai que je devrai probablement parcourir la base de données pour trouver le bon élément de menu, puis le lien approprié, mais je ne sais pas trop par où commencer.

Si quelqu'un pouvait me diriger dans la bonne direction, je l'apprécierais.

Merci :)

7
DesignSubway

Pour obtenir l'ID que je suppose que vous connaissez déjà, vous pouvez utiliser les éléments suivants:

$itemid = $params->get('field_name');

Pour obtenir l'URL basée sur l'ID, essayez ceci:

$itemid = $params->get('field_name'); //change the field name to whatever you have 

$app = JFactory::getApplication();
$menu = $app->getMenu();
$link = $menu->getItem($itemid)->link;

echo JRoute::_($link);

Cela fera écho à une URL SEF. Si vous voulez une URL standard, utilisez simplement echo $link;

J'espère que cela t'aides

5
Lodder

Cela peut être fait un peu plus vite avec moins de codding:

JRoute::_('index.php?Itemid='.$itemid);

Cela retournera une URL relative pour l'élément de menu sélectionné.

1
Artur Stępień