Как сделать условные ссылки PHP? - PullRequest
1 голос
/ 25 октября 2011

Я искал способ сделать это, но так как я не свободно владею PHP, похоже, ничего из того, что я пробовал, не работает.У меня есть общее представление о том, как это должно работать, и это кажется достаточно простым, но я не могу заставить его работать так, как я хочу.

По сути, у меня на сайте есть две ссылки - каждая из них ссылается на свою таблицу стилей, которая является частью переключателя стилей JS.Переключатель стилей работает нормально, за исключением одного - я хочу, чтобы ссылки были условными.Например, прямо сейчас мои ссылки выглядят так:

  • Make it Dark (альтернативная таблица стилей)
  • Light it (основная таблица стилей)

Они оба появляются сразу.

Я бы хотел, чтобы это работало следующим образом: при загрузке страницы отображается только ссылка «Сделать это темным».Затем, когда он находится в режиме «Make it Dark», отображается только ссылка на главную таблицу стилей.

Это можно увидеть на странице last.fm в правом верхнем углу: http://www.last.fm/

Там есть две темы: «Покрась в черный» и «Просто красный».Только одна ссылка отображается одновременно, так что вы можете переключаться между ними.Как бы я мог это сделать?

Буду признателен за любую помощь в этом.Благодаря.

Ответы [ 5 ]

4 голосов
/ 25 октября 2011

Будет ли это работать, если в каждой из ваших таблиц стилей вы дадите одну из своих ссылок display:none?

1 голос
/ 25 октября 2011

Лично я бы использовал переменную сеанса, а не 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);
1 голос
/ 25 октября 2011

Вы можете указать класс как для них, так и для добавления отображения: нет в противоположной таблице стилей, чтобы скрыть его для пользователя. Итак, у вас есть:

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

И в двух таблицах стилей, которые у вас есть в темноте:

.lighten { display: none; }

А в свете:

.darken { display: none; }
0 голосов
/ 25 октября 2011

Или вы можете указать php сделать это в одной строке, вам просто нужно установить cookie, когда пользователь переключается на другую таблицу стилей, изменить имя cookie под вашим именем.

echo (isset($_COOKIE['dark_theme'])) ? '<link rel="stylesheet" href="/css/dark.css">' : '<link rel="stylesheet" href="/css/light.css">';
0 голосов
/ 25 октября 2011
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.

...