1

单击 Joomla 菜单项后,我试图在后台生成浏览器刷新。

我的问题是我已经在使用 ajax 来处理页面上的内容组件和其他元素以在一个位置刷新,但我需要以这种方式更新这些: - 用户单击菜单项,然后加载新背景和新内容

当我点击 F5 / 刷新页面时,背景通常会发生变化,并且它与活动的 menuItemId 对应;只是要注意ajax根据menuItemID更改URL,但他没有更改需要从css中提取的背景-

我以这种方式使用基于菜单项 ID 的简单 css 背景状态:

html部分

<body id="background<?php echo JRequest::getInt( 'Itemid' ); ?>">

css(101、102、103...114 是菜单项 ID)

 #background101{ background:transparent url(../images/1.jpg) no-repeat 100% 100%; }
    #background102 { background:transparent url(../images/2.jpg) no-repeat 100% 100%;}
    #background103 { background:transparent url(../images/3.jpg) no-repeat 100% 100%; }

Joomla 中安装的插件是FullAjax 插件

我阅读了有关配置的手册,但没有说明如何根据 menuItemID 刷新页面/站点背景

JavaScript 代码,FullAjax 的参数

    FLAX.Filter.add({url:'/', id:fullAjaxId});
 FLAX.Filter.add({query:['task=weblink','task=profile','task=user.login','task=user.logout','task=article.edit'],  type:'nowrap'});
 FLAX.Filter.on('beforewrap', function(o) {
  var id = o.el.getAttribute('id'), regExt = /.+\.(jpg|jpeg|gif|png|mp3|mp4|ogg|ogv|webm|pdf|txt|odf|ods)$/i;
  if(id == ('login-form') || id == ('form-login') || (o.el.href && (regExt.test(o.el.href) || o.el.href.indexOf('#') != -1))){return false;}
 });
 FLAX.directLink();FLAX.Default.sprt_url = '!';
 FLAX.linkEqual['!ax!'+fullAjaxId+'!'] = 'ajx';FLAX.linkEqual['[~q~]'] = '?';
 /* fix for mootools 'domready', uncomment if need */
 /* FLAX.Html.onall('load', function(o){window.fireEvent('domready');}); */ 

有人可以帮忙吗?

4

1 回答 1

0

它不起作用,因为<body>没有更改,您需要在每次 ajax 调用后进行一些编码来更改它。

如果您Check the active menu item启用了选项,那么您可以执行以下操作:

FLAX.Html.onall('load', function(){
    if(fullAjaxMItems.length){
       //set id using MooTools
       document.id(document.body).set('id', 'background' + fullAjaxMItems[0]);
    }
  });

如果未启用此选项,则只需在模板<head>中添加将保留当前菜单项 ID 的变量,例如:

<script>
  var currentItemId = <?php echo JRequest::getInt( 'Itemid' ); ?>;
</script>

然后在插件配置中:

FLAX.Html.onall('load', function(){
  if(window.currentItemId){
     //set id using MooTools
     document.id(document.body).set('id', 'background' + currentItemId);
  }
});
于 2013-02-28T10:38:27.437 回答