Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Темная тема для сайта


kuripka2222

Recommended Posts

Здравствуйте, подскажите пожалуйста как реализовать сохранения настроек пользователя  на своем сайте. Подключаю переключения светлой/темной темы (https://skillbox.ru/media/code/kak_sdelat_tyemnuyu_temu_dlya_sayta/).

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

download.jpg

Змінено користувачем kuripka2222
Надіслати
Поділитися на інших сайтах


Значение (название файла стилей) темы необходимо сохранить в переменную, которую уже потом выводить в шаблон шапки... $data['theme'] = $_session и тд. Вообще, там есть массив сессий $this->session->data['...'], потому: 

if(isset($this->session->data['theme']))
	$data['theme'] = $this->session->data['theme'];
else
	$data['theme'] = 'название темы по дефолту';

Cоздайте в контроллере шапки отдельную функцию и там распишите сохранение значения темы. 

if(isset($this->request->get['theme'])){
	$theme = $this->request->get['theme'];
	if($theme == 'light' || $theme == 'dark')
		$this->session->data['theme'] = $theme;
}

Обращайтесь к функции в файле шапки: index.php?route=common/header/choose_theme&theme=light .. Вообще, такие дела лучше делать через куки, а не сессии.. О ужас. Через сессии оно постоянно будет ставить тему по умолчанию. Да и лишний раз к серверу обращаться не нужно будет. 

Надіслати
Поділитися на інших сайтах

1 час назад, Ulv сказал:

Значение (название файла стилей) темы необходимо сохранить в переменную, которую уже потом выводить в шаблон шапки... $data['theme'] = $_session и тд. Вообще, там есть массив сессий $this->session->data['...'], потому: 


if(isset($this->session->data['theme']))
	$data['theme'] = $this->session->data['theme'];
else
	$data['theme'] = 'название темы по дефолту';

Cоздайте в контроллере шапки отдельную функцию и там распишите сохранение значения темы. 


if(isset($this->request->get['theme'])){
	$theme = $this->request->get['theme'];
	if($theme == 'light' || $theme == 'dark')
		$this->session->data['theme'] = $theme;
}

Обращайтесь к функции в файле шапки: index.php?route=common/header/choose_theme&theme=light .. Вообще, такие дела лучше делать через куки, а не сессии.. О ужас. Через сессии оно постоянно будет ставить тему по умолчанию. Да и лишний раз к серверу обращаться не нужно будет. 



А как это сделать через куки, подскажете?

Надіслати
Поділитися на інших сайтах


Погуглите, как установить куки при помощи javascript - blogjquery.ru, первый в поиске. В контроллере шапки вместо сессий используйте массив куки. При переключении, сохраняйте в куки значение темы 1 или 0, как пример.. И заменяйте название файла стилей в шапке. При перезагрузке странички значение темы будет браться из массива куки и присваиваться переменной: $data['theme'] = $this->request->cookie['theme']; в шаблоне шапки - {{ theme }}.

Надіслати
Поділитися на інших сайтах

  • 11 months later...
В 02.07.2021 в 22:54, ReneDekart сказал:

Привет, я владелец одного вэб-сайта где публикую новости Израиля cursor info и я хочу сделать у себя тёмную версию сайта, кто-то может с этим помочь?

Конечно, можете написать мне в личку, либо скиньте данные на телеграмм аккаунт или whatsapp

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.