0

レスポンシブな Wordpress サイトを持っています: www.2eenheid.de。私のクライアントは、モバイルでサイトをフルサイズで表示するオプション、オプトアウト応答オプションを望んでいます。今、私はこの解決策を見つけました:

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

URL パラメーター(URL は次のようになります: www.2eenheid.de/?resp=no) が呼び出されたときにPHP を使用してmeta name="viewport"タグを削除します。?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"; } ?>">

これにより、現在のページがフルサイズに変更されますが、別のリンクをクリックすると、レスポンシブに戻ります。これは、リンクにパラメーターが含まれていないため、論理的です?resp=no

現在、私のクライアントには、ユーザーがフルサイズの Web サイトを必要とする場合、別の 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; ?>

コメントで述べたように、おそらくクッキーも使用できますが、それがどのように機能するかはわかりませんでした。

編集:例:

<?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']は、存在するかどうかを調べ、存在する場合は他の URL に配置するように呼び出し、output_add_rewrite_var("resp", "1");存在しない場合はメタ タグを追加することで機能します。

于 2016-01-19T12:57:17.107 に答える