如何制作条件PHP链接?

时间:2011-10-25 07:56:04

标签: php conditional

我已经找到了一种方法来做到这一点,但由于我不熟悉PHP,我尝试过的任何东西似乎都没有用。我对它应该如何工作有一个大概的概念,看起来很简单,但我无法按照我想要的方式工作。

基本上,我的网站上有两个链接 - 每个链接都链接到一个不同的样式表,这是JS样式切换器的一部分。样式切换器工作正常,除了一件事 - 我希望链接是有条件的。例如,现在,我的链接看起来像这样:

  • 让它变暗(备用样式表)
  • 点亮它(主样式表)

他们都出现了。

我希望它以这种方式工作:当页面加载时,只显示“Make it Dark”链接。然后当它在“使它变暗”时,只显示主样式表的链接。

这可以在右上角的last.fm页面上看到:http://www.last.fm/

那里有两个主题:“漆黑”和“简单红”。一次只显示一个链接,以便您可以在它们之间切换。我怎么能这样做?

我很感激任何帮助。感谢。

5 个答案:

答案 0 :(得分:4)

如果您在每个样式表中都提供了一个链接display:none吗?

答案 1 :(得分:1)

您可以在它们两者上指定一个类,然后在相反的样式表中添加一个display:none来为用户隐藏它。所以你有:

<a href="" class="darken">Make it dark</a>
<a href="" class="lighten">Light it up</a>

在两个样式表中,你有一个黑暗的样式表:

.lighten { display: none; }

在光明之中:

.darken { display: none; }

答案 2 :(得分:1)

我个人使用会话变量而不是cookie。

这样的事情应该有效:

<?php
session_start(); // add to the top of your page
if (!isset($_SESSION['dark_theme'])) {
  $_SESSION['dark_theme']==false;
}

if ($_GET['changetheme']!='') {
  if ($_GET['changetheme']=='dark') {
    $_SESSION['dark_theme']=true;
  } else {
    $_SESSION['dark_theme']=false;
  }
}
?>

这一位,你想要链接的地方:

<?php
if(!$_SESSION['dark_theme']){
?>
<a href="?changetheme=dark" id="darken">Make it Dark</a>
<?
}else{
 ?>
<a href="?changetheme=light" id="lighten">Make it Light</a>
<?
}
?>

或者使用CSS + JavaScript:

HTML:

<a href="#" id="darken">Make it Dark</a>
<a href="#" id="lighten">Make it Light</a>

CSS:

在“黑暗”样式表中:

#darken {
  display:none;
}

在“轻量级”样式表中:

#lighten {
  display:none;
}

JavaScript(注意,我使用的是JQuery,因为它比普通的JS更容易编写 - 如果它不在网站上,你只需要包含JQuery):

(function($, undefined)
{
  $('#darken').click(function() {
    $(this).preventDefault(); // stops the link from functioning as a link
    chooseStyle('none', 60); //call your change stylesheet function
    $('#darken').hide(); //hide the dark link
    $('#lighten').show(); // show the light link
  })

  $('#lighten').click(function() {
    $(this).preventDefault(); // stops the link from functioning as a link
    chooseStyle('none', 60); //call your change stylesheet function
    $('#lighten').hide(); //hide the light link
    $('#darken').show(); // show the dark link
  })
})(jQuery);

答案 3 :(得分:0)

if($_COOKIES['dark_theme']){
 $show_dark = true;
}else{
 $show_dark = false;
}


if($show_dark){
 echo "<link rel="stylesheet" href="/css/dark.css"...";
}else{
 echo "<link rel="stylesheet" href="/css/light.css"...";
}

当您点击“让它变暗”时,只需重新加载页面并修改cookie。

答案 4 :(得分:0)

或者您可以告诉php在一行中执行此操作,您只需根据需要在用户切换到Cookie名称下面的另一个样式表更改时设置cookie。

echo (isset($_COOKIE['dark_theme'])) ? '<link rel="stylesheet" href="/css/dark.css">' : '<link rel="stylesheet" href="/css/light.css">';