Vollständigen Link vom Feldtyp des Menüelements abrufen

7

Ich entwickle meine eigene Diashow-Komponente und mein eigenes Modul für Joomla. Die Komponente wird verwendet, um die Folien zusammen mit Beschriftungen und Links usw. auszuwählen. Das Modul zeigt die Folien.

In der Komponente habe ich für jede Folie die Option aktiviert, jeder Folie einen Link hinzuzufügen. Der von mir verwendete Feldtyp ist der Feldtyp des Menüelements http://docs.joomla.org/Menuitem_form_field_type

Dies scheint die Menüelement-ID zur Datenbank für diese bestimmte Folie hinzuzufügen.

Meine Frage ist; Wie nehme ich diese Menüelement-ID und verwende sie dann im Modul, um den vollständigen Menüelement-Link zu erhalten? Ich werde verstehen, dass ich wahrscheinlich die Datenbank durchsuchen muss, um den richtigen Menüpunkt zu finden und dann den entsprechenden Link zu finden, aber ich bin nicht ganz sicher, wo ich anfangen soll.

Wenn mich jemand in die richtige Richtung weisen könnte, würde ich es begrüßen.

Vielen Dank :)

DesignSubway
quelle

Antworten:

5

Um die ID zu erhalten, von der ich annehme, dass Sie sie bereits kennen, können Sie Folgendes verwenden:

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

Versuchen Sie Folgendes, um die URL basierend auf der ID zu erhalten:

$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);

Dies gibt eine SEF-URL wieder. Wenn Sie eine Standard-URL möchten, verwenden Sie einfachecho $link;

Hoffe das hilft

Lodder
quelle
Wow, so einfach! Ich dachte, ich müsste die Datenbank abfragen. Ich werde das heute ausprobieren und Ihnen die Ergebnisse mitteilen. Vielen Dank :)
DesignSubway
Ich hatte ein ähnliches Bedürfnis. Wenn ich den Menüpunkt mit $ menu-> getItem ($ itemid) abrufe, wird mir das erwartete Objekt angezeigt - aber das Attribut -> link ist leer. Ich könnte direkt mit dem Alias ​​routen, bin mir aber nicht sicher, ob das eine gute Form ist.
lcdservices
@lcdservices - Welche Version von Joomla?
Lodder
Nevermind - ich habe das Problem gefunden. Wir haben einige Menüelemente vom Typ "Texttrennzeichen", die folglich keinen Verknüpfungswert haben. Ich musste meinen Code konditionieren, um die Möglichkeit zu behandeln, dass ein Menüpunkt dieses Typs falsch ausgewählt wurde.
lcdservices
@RustyJoomla - Ich bin froh, dass es geholfen hat :)
Lodder
1

Mit weniger Codierung geht es etwas schneller:

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

Dies gibt eine relative URL für den ausgewählten Menüpunkt zurück.

Artur Stępień
quelle