0


我有 2 个选项,用户可以在 modx rev 2.2.0 * background
* font-size制作的页面上更改

要更改背景和字体大小,我使用了 jquery,所以我认为最好的方法是使用 ajax。所以我必须创建 1/2 页面,将这些变量添加到会话中,所以如果用户转到不同的页面,背景和字体大小保持不变。如果用户在几天后访问页面,背景和字体大小将保持不变。

这是我的javascript代码:

<script type="text/javascript">
 $(document).ready(function () {
  background5();
    var originalFontSize = $('html').css('font-size');
 });

 function background1() { $('.wrap').css("background","url(assets/templates/default/images/bg1.jpg)"); return false; }
 function background2() { $('.wrap').css("background","url(assets/templates/default/images/bg2.jpg)"); return false; }
 function background3() { $('.wrap').css("background","url(assets/templates/default/images/bg3.png)"); return false; }
 function background4() { $('.wrap').css("background","url(assets/templates/default/images/bg4.jpg)"); return false; }
 function background5() { $('.wrap').css("background","url(assets/templates/default/images/bg5.jpg)"); return false; }
 function background6() { $('.wrap').css("background","url(assets/templates/default/images/bg6.jpg)"); return false; }
 function background7() { $('.wrap').css("background","url(assets/templates/default/images/bg7.jpg)"); return false; }
 function background8() { $('.wrap').css("background","url(assets/templates/default/images/bg8.jpg)"); return false; }
 function background9() { $('.wrap').css("background","url(assets/templates/default/images/bg9.jpg)"); return false; }
 function big_font() {
  var currentFontSize = $('html').css('font-size');
  var currentFontSizeNum = parseFloat(currentFontSize, 10);
  var newFontSize = currentFontSizeNum*1.1;
  $('html').css('font-size', newFontSize);
  return false;
 }
 function small_font() {
  var currentFontSize = $('html').css('font-size');
  var currentFontSizeNum = parseFloat(currentFontSize, 10);
  var newFontSize = currentFontSizeNum*0.9;
  $('html').css('font-size', newFontSize);
  return false;
 }
</script>

我的问题是如何在 modx 中将变量添加到会话中,最好的方法是什么?

4

1 回答 1

1

创建一个用作 Ajax 存根的资源,并在其上放置一个未缓存的片段,其中包含您的“添加到会话”代码。该片段可能很简单:

<?php
// example only, be sure to sanitize and add some sensible defaults here
$background = $_POST['background'];
$fontSize   = $_POST['font_size'];

// write to user's session
$_SESSION['background'] = $background;
$_SESSION['fontSize'] = $fontSize;

return '';

然后使用 jQuery 创建对存根的 Ajax 调用,将backgroundfont_size参数传递给它:

var background = 6,
    fontSize = 2;
// let's assume your Ajax stub resource id is 7
$.post("[[~7]]", { background: background, font_size: fontSize } );

background()注意:您可以只使用一个函数来整理所有这些函数,如下所示:

function background(n) {
    var url = "assets/templates/default/images/bg"+parseInt(n)+".jpg";
    $('.wrap').css("background","url("+url+")"); 
    return false; 
}
于 2012-07-10T04:59:17.213 回答