JRoute で正しい絶対SEF URLを取得できない理由を理解しようとしています。
私はこれで試しました:
_JRoute::_(JUri::root().'index.php?Itemid=164')
_
しかしそれは正しくSEFレンダリングしません、それはこのように印刷されます
_http://mysite.com/index.php?Itemid=164`
_
JUri::root()
の部分を削除すると、正しくレンダリングされますが、相対URLとして表示されます。
なにか提案を?何が悪いのですか?私はドキュメントから誤解していますか
_(string $url, boolean $xhtml = true, integer $ssl = null) : string
引数
_
$url
_:Joomlaリソースへの絶対または相対URI。
あなたはこの方法を試すことができます:
_$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 ); ?>
_
_JRoute::_
_メソッドは、内部Joomla!カスタムURLへのURL。 _JRoute::_
_には3つのパラメーターがあり、そのプロトタイプは次のとおりです。
JRoute::_($url, $xhtml = true, $ssl = null);
$ urlは、絶対または相対内部Joomla!を含む文字列です。 URL。
$ xhtmlは、出力がXHTMLであるかどうかを指定するブール値です。このパラメーターはオプションであり、省略した場合のデフォルトはtrueです。
$ sslは、URIを保護する必要があるかどうかを指定する整数値です。グローバルセキュアサイトURIを使用してURIを強制的に保護するには1に設定し、渡されたときと同じ状態のままにするには0に設定し、グローバル非セキュアサイトURIを使用してURIを強制的に非セキュアにするには-1に設定する必要があります。
このドキュメントからは明らかではありませんが、_**$ssl = -1**
_を使用すると http://joomlasite.com のような安全でないURIが強制されます
別のオプションは次のとおりです。
_echo JUri::root() . trim( JRoute::_( $quoteLink ), '/' );
_
少し"hacky"ですが、機能します...;)
適切な方法を使用して完全なURLを取得することもできます。
$config = JFactory::getConfig();
$mode = $config->get('force_ssl', 0) == 2 ? 1 : (-1);
echo JRoute::_('index.php?Itemid=164',false,$mode);
ルーターのコードを見ると次のような理由で、これを実現することはできません。
index.phpで始まるリンクは、httpではなく渡す必要があります
ルーティングを実現する正しい方法は次のとおりです。
JRoute::_('index.php?Itemid=164')
絶対sef URLが必要な場合は、後にroot
を前に付ける必要があります。
JUri::root().JRoute::_('index.php?Itemid=164')