启用S​​EF的Joomla文件路径问题

时间:2015-07-07 01:26:20

标签: javascript joomla sef

我试图编写一些自定义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');
})

以上代码放在ready.js中的joomla_root/customJS文件中,1.js2.js3.js也在同一文件夹中。

但是这3个文件的加载都返回404错误。

启用SEF后,加载它们的网页的网址为localhost/index.php/pages/blog(此处pagesblog不是实际文件夹,而是菜单项),并且网页正在尝试加载{ {1}}等等。

我可以使用像localhost/index.php/pages/1.js这样的相对路径来克服这个问题,但它不可靠。如果菜单项loadJS('../../customJS/1.js')有子菜单,则在该页面上,浏览器将尝试加载blog并返回404错误。

那么如何处理这个问题呢?

1 个答案:

答案 0 :(得分:0)

我可以看到两种可能的解决方案。

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];