загрузить CSS из базы данных на основе пользовательских предпочтений - PullRequest
1 голос
/ 14 ноября 2011

В настоящее время я пытаюсь создать свой собственный переключатель стилей CSS для моей основной интрасети.

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

Вот мой идеал и способ, которым я пытался реализовать до сих пор.

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

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

То, что я пытался сделать до сих пор:

По сути, когда пользователь вошел в систему, он создал переменную сеанса, которая содержит значение столбца «style» для этого пользователя. Я пошел с цифрами для теста, с выбором 3 стилей, 1, 2 и 3. Затем в разделе заголовка страницы, для href таблицы стилей, я добавил PHP, который оценивал переменную сеанса и повторял таблицу стилей на основании того, что было установлено.

Это сработало, таблица стилей отличалась в зависимости от того, что было в таблице mysql для столбца стилей. На странице пользовательских настроек я немного развалился. Я создал небольшую форму с 3 кнопками выбора радио, по одной для каждого стиля. Единственный способ, с помощью которого я смог увидеть это, - отправка формы в файл PHP, который обновляет таблицу на основе выбора.

Основная проблема, с которой я сталкиваюсь, заключается в том, что пользователь должен выйти из системы и войти обратно, чтобы изменения вступили в силу. Мне нужна установка, в которой изменение происходит на месте или при обновлении.

Я мог бы пойти с куки, но я бы предпочел избежать, если это возможно. Не знаете, есть ли у кого-нибудь какие-либо предложения помочь мне или есть какие-то заранее написанные сценарии, которые могли бы выполнить это?

Большое спасибо

Под ред

Ответы [ 4 ]

2 голосов
/ 14 ноября 2011

Похоже, вы должны установить переменную сеанса на новое значение тоже. Поэтому обновите базу данных и переменную сеанса в одном месте.

1 голос
/ 14 ноября 2011

для написания скрипта, который делает это, я бы использовал JQuery и сделал бы пост или получил бы скрипт, обновляющий user-pref и затем примените CSS, возвращенный по почте или получите соответственно.

что-то вроде:

$.get('coolCss.php','cssid=3',function(data){
    $('#myCssTag').empty();
    $('#myCssTag').append(data);
});

надеюсь, что это может решить.

но я хотел бы рассмотреть возможность использования различных css-файлов и изменить выбранный файл.

0 голосов
/ 14 ноября 2011

Я не понимаю, почему пользователь должен выйти из системы и снова войти в нее, чтобы изменения вступили в силу, или что им нужно для входа и выхода. Это звучит как проблема с вашим приложением.

Может быть, вы имеете в виду это?

И IE, и Firefox будут кэшировать CSS, загруженный из файла. Пока имя файла CSS такое же, пользователь не увидит обновленный стиль, пока не обновит страницу вручную. Чтобы обойти это, если вы загружаете CSS из файла, тогда у каждого стиля должно быть свое уникальное имя файла.

0 голосов
/ 14 ноября 2011

Если вы не будете осторожны, обработка CSS из базы данных лишает браузеров возможности кэшировать файл CSS.Это будет замедлять загрузку каждой страницы.

Что вам нужно сделать, это обработать таблицу стилей по умолчанию в виде файла, а затем, если необходимо, настроить пользовательскую таблицу из базы данных на основе переменной сеанса пользователя.Пользовательский должен просто перезаписать существующие стили.

...