我有一个响应迅速的Wordpress网站:www.2eenheid.de。我的客户希望移动设备上的选项以全尺寸方式查看网站,这是一个选择退出的响应选项。现在,我找到了这个解决方案:
http://css-tricks.com/user-opt-out-responsive-design/
当调用URL参数meta name="viewport"
(URL变为:www.2eenheid.de/?resp=no)时,使用PHP删除?resp=no
标记。通过删除meta name="viewport"
标记,该网站会在移动设备上变为全尺寸。请参阅以下代码:
<head>
<title>My cool site huzzah</title>
<?php
if (!$_GET['resp'] == 'no') { ?>
<meta name="viewport" content="width=device-width">
<?php } ?>
</head>
<body class="<?php if (!$_GET['resp'] == 'no') { echo "resp"; } ?>">
这会将当前页面更改为fullsize,但如果我单击其他链接,它将更改回响应,这是合乎逻辑的,因为该链接不再包含参数?resp=no
。
现在我的客户要求如果用户想要全尺寸网站,即使用户点击不同的网址,也需要保持全尺寸,直到用户将其更改回响应状态。
所以我的问题是如何在每次点击网址请求时点击?resp=no
参数,直到用户将其更改为响应时间为点击其他链接(可能使用不同的参数)?
我试过谷歌搜索,但我找不到任何好的解决方案。我看到人们建议会话值,但我发现很难理解,有些人说这不是很好的做法,因为会话值用于登录。
任何帮助都将受到高度赞赏。
编辑3: 下面的建议似乎很好,但我对PHP会话很新。我将我的代码更改为以下建议:
<?php ini_set('display_errors', true);
session_start();
if(isset($_REQUEST['resp'])) {
$_SESSION['resp'] = boolval($_REQUEST['resp']);
}
// Check if enabled
$enabled = isset($_SESSION['resp']) && $_SESSION['resp'];
?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<?php if($enabled): ?>
<meta name="viewport" content="width=device-width">
<?php endif; ?>
<title>LALALA</title>
</head>
<body <?php body_class(); ?> id="<?php if(isset($_SESSION['resp']) && $_SESSION['resp']) { echo "resp"; } ?>">
任何人都可以帮忙吗?
答案 0 :(得分:0)
session_start();
// ...
if(isset($_REQUEST['resp'])) {
$_SESSION['resp'] = boolval($_REQUEST['resp']);
}
并且:
<?php if(isset($_SESSION['resp']) && $_SESSION['resp']): ?>
<meta name="viewport" content="width=device-width">
<?php endif; ?>
你可能也会像评论中所说的那样使用cookies,但我从来没有看过它是如何运作的。
编辑:一个例子:
<?php
// If the parameter is in the URL, enable/disable (else leave as it currently is).
if(isset($_REQUEST['enableMode'])) {
$_SESSION['enableMode'] = boolval($_REQUEST['enableMode']);
}
// Check if enabled
$enabled = isset($_SESSION['enableMode']) && $_SESSION['enableMode'];
?>
<?php if($enabled): ?>
<meta name="viewport" content="width=device-width">
<?php endif; ?>
<a href="index.php?enableMode=1">Enable mode</a>
<a href="index.php?enableMode=0">Disable mode</a>
<a href="index.php">Change page without changing anything</a>
答案 1 :(得分:0)
用于此的会话会话太多,存在更好的机制,称为&#34; output_add_rewrite_var&#34;。使用这个系统,我们可以说如下:
<?php if(!isset($_GET['resp'])): ?>
<meta name="viewport" content="width=device-width">
<?php else:
output_add_rewrite_var("resp", "1");
endif; ?>
以上代码完全适合MVC系统的视图位置,因为它是视图特定选项。该代码的工作方式是查看$_GET['resp']
是否存在,并根据具体情况,如果存在,请调用output_add_rewrite_var("resp", "1");
将其自身置于其他网址中,如果它不存在,它添加了元标记。