簡體   English   中英

如何從外部代碼獲取Joomla中的正確URL?

[英]How to get correct URL in Joomla from external code?

我正在從一些外部代碼訪問Joomla框架, 如此答案所示 該網站位於http://localhost/joomla/ ,外部代碼位於http://localhost/joomla/external/index.php

我已經將JPATH_BASE正確設置為Joomla根目錄,並生成如下所示的URL:

JRoute::_('index.php?option=com_users&view=login')

但這返回的是URL /joomla/external/index.php/login而不是應為的樣子: /joomla/index.php/login

如何解決這個問題?

編輯:為了清楚起見,我正在尋找任何文件夾結構的通用解決方案。 外部文件夾可能位於其他位置,例如http://localhost/external/

最終找到了解決方案-我需要在configuration.php文件中設置站點的基本URL:

public $live_site = 'http://localhost/joomla/';

現在,無論外部代碼來自何處,調用JRoute::_返回正確的路徑。

您可以做的是,修剪基本URL末尾的結尾字符串,然后在JRoute使用它,如下所示:

$base = rtrim(JUri::base(), JUri::base(true));

JRoute::_($base . '/index.php?option=com_users&view=login');

視覺測試:

$base     = JUri::base();
$baseTrue = JUri::base(true);
$baseRoot = rtrim($base, $baseTrue);

var_dump($base);
var_dump($baseTrue);
var_dump($baseRoot);
var_dump(JRoute::_($baseRoot . '/index.php?option=com_users&view=login'));

輸出:

> 'http://example.loc/media/'                                (length=24)
> '/media'                                                   (length=6)
> 'http://example.loc'                                       (length=17)
> 'http://example.loc/index.php?option=com_users&view=login' (length=55)

注意: /media只是我在其中放置獨立PHP文件的目錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM