0

我有一个响应式 Wordpress 网站:www.2eenheid.de。我的客户想要在移动设备上查看全尺寸网站的选项,这是一个选择退出响应选项。现在,我找到了这个解决方案:

http://css-tricks.com/user-opt-out-responsive-design/

meta name="viewport"当调用 URL 参数?resp=no(URL 变为:www.2eenheid.de/?resp=no)时,它使用 PHP 删除标记。通过删除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"; } ?>">

这会将当前页面更改为全尺寸,但如果我单击不同的链接,它会变回响应式,这是合乎逻辑的,因为该链接不再包含参数?resp=no

现在我的客户要求如果用户想要完整大小的网站,即使在单击不同的 URL 后,它也需要保持完整大小,直到用户将其更改回响应式。

所以我的问题是,如何在?resp=no为每个 URL 请求单击后保存参数,直到用户通过单击不同的链接(可能使用不同的参数)将其更改回响应式?

我试过谷歌搜索,但找不到任何好的解决方案。我见过有人建议会话值,但我发现这很难理解,有些人说这不是好的做法,因为会话值用于登录。

任何帮助将不胜感激。

编辑 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"; } ?>">

有人能帮忙吗?

4

2 回答 2

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

正如评论中所说,您也可以使用 cookie,但我从未看过它是如何工作的。

编辑:一个例子:

<?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>
于 2013-07-19T08:18:04.817 回答
0

使用会话太多了,存在更好的机制,称为“output_add_rewrite_var”。使用这个系统,我们可以说:

<?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");以将其自身放入其他 url,如果不存在,则添加元标记。

于 2016-01-19T12:57:17.107 回答