簡體   English   中英

啟用S​​EF的Joomla文件路徑問題

[英]Joomla file path issues with SEF enabled

我正在嘗試編寫一些自定義JS代碼以在joomla網站中加載其他js文件。 以下是代碼:

var j = jQuery.noConflict();

function loadJS(){
    var i,l = arguments.length;
    for (i=0;i<l;i++){
        var t = document.createElement('script');
        t.src = arguments[i];
        document.body.appendChild(t);
    }
}

j(document).ready(function(){
     loadJS('1.js','2.js','3.js');
})

上面的代碼放在joomla_root/customJSready.js文件中, 1.js2.js3.js也位於同一文件夾中。

但是這3個文件的加載都返回404錯誤。

啟用S​​EF后,加載它們的頁面的URL為localhost/index.php/pages/blog (此處pagesblog不是實際的文件夾,而是菜單項),並且該頁面正嘗試加載localhost/index.php/pages/1.js

我可以使用諸如loadJS('../../customJS/1.js')類的相對路徑來克服這一點,但這並不可靠。 如果菜單項blog具有子菜單,則瀏覽器將在該頁面上嘗試加載localhost/index.php/1.js並返回404錯誤。

那么該如何處理呢?

我可以看到兩種可能的解決方案。

1)第一個是將所有JS代碼從“ ready.js”移動到PHP文件中,以便您可以在任何腳本名稱之前插入“”。 基本上,JS是使用完整的網站根URL動態生成的。

2)第二個相似,但是只設置一個JS變量。 也就是說,您可以像這樣更改在其中調用ready.js的文件:

<script>var joomla_site_root_url = <?php echo JURI::root() ?></script>
<script src="/ready.js"></script>

然后在您的loadJS文件中

t.src = joomla_site_root_url + "/" + arguments[i];

暫無
暫無

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

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