it-swarm.com.de

Absolute SEF-URL mit JRoute

Ich versuche herauszufinden, warum ich mit JRoute keine korrekte absolute SEF-URL erhalten kann.

Ich habe versucht mit diesem:

JRoute::_(JUri::root().'index.php?Itemid=164')

aber es wird nicht korrekt gerendert, es wird nur so gedruckt

http://mysite.com/index.php?Itemid=164` 

Wenn ich den Teil JUri::root() entferne, wird er korrekt wiedergegeben, jedoch als relative URL von c.

Irgendein Vorschlag? Was mache ich falsch? Habe ich ein Missverständnis aus den Dokumenten

_(string $url, boolean $xhtml = true, integer $ssl = null) : string

Argumente

$url: Absoluter oder relativer URI zur Joomla-Ressource.

1
Gruber

Sie könnten es so versuchen:

$itemid = 164;
$application = JFactory::getApplication();
$menu = $application->getMenu();
$item = $menu->getItem( $itemid );
$link = new JURI( $item->link );
$link->setVar( 'ItemId', $itemid );

echo JRoute::_( $quoteLink, true, -1 ); ?>


Aus der JRoute-Dokumentation:

Routing-URLs **

Die JRoute::_ Methode übersetzt das interne Joomla! URL zu einer benutzerdefinierten URL. JRoute::_ hat drei Parameter und sein Prototyp ist:

JRoute::_($url, $xhtml = true, $ssl = null);

Woher:

$ url ist ein String, der das absolute oder relative interne Joomla! URL.

$ xhtml ist ein boolescher Wert, der angibt, ob die Ausgabe in XHTML erfolgen soll oder nicht. Dieser Parameter ist optional und wird standardmäßig auf true gesetzt, wenn er nicht angegeben wird.

$ ssl ist ein ganzzahliger Wert, der angibt, ob der URI sicher sein soll. Es sollte auf 1 gesetzt werden, um zu erzwingen, dass der URI unter Verwendung des globalen sicheren Site-URI sicher ist, auf 0, um ihn in demselben Status zu belassen, in dem er übergeben wurde, und auf -1, um zu erzwingen, dass der URI unter Verwendung des globalen unsicheren Site-URI unsicher ist .

Es ist aus dieser Dokumentation nicht ersichtlich, aber die Verwendung von **$ssl = -1** Erzwingt einen unsicheren URI, etwa http://joomlasite.com

Update für deinen Kommentar:

Eine andere Option könnte sein:

echo JUri::root() . trim( JRoute::_( $quoteLink ), '/' );

Ein bisschen "hacky", aber es macht die Arbeit ...;)

1
FFrewin

Sie können auch die richtige Methode verwenden, um die vollständige URL zu erhalten:

$config = JFactory::getConfig();
$mode = $config->get('force_ssl', 0) == 2 ? 1 : (-1);
echo JRoute::_('index.php?Itemid=164',false,$mode);
1
bharat

Sie können es nicht so erreichen, wie Sie es versuchen, denn wenn Sie sich den Router-Code ansehen:

link, der mit index.php beginnt, sollte übergeben werden, nicht mit http (s)

Der richtige Weg zum Routing ist:

JRoute::_('index.php?Itemid=164')

Wenn Sie eine absolute URL haben möchten, müssen Sie root voranstellen nach:

JUri::root().JRoute::_('index.php?Itemid=164')
1
Alexandr