Как менять файлы css используя php?
Как менять файлы css используя php?
В общем... Необходимо реализовать темную тему на проект. И появилась идея. Просто держать два файла css, и подключать их исходя из того, что пользователь кинул в переменную сессии. Например, по умолчанию в сессии переменная dark_them, будет ровна false, и подгрузится файл со стилями светлой темы. И наоборот. Подскажите пожалуйста, как это сделать грамотнее?
Re: Как менять файлы css используя php?
Я бы сделал это при помощи проверки обычной. В том месте, где прописан класс dark_them
Ну а где он жмякает Темная/Светлая тема, уже устанавливаешь параметры.
Возможно есть более деликатное решение
Код: Выделить всё
<body class="<?= (\Yii::$app->session->get('dark_theme')) ? dark_them : light_them ?>">
Код: Выделить всё
$session = Yii::$app->session;
$session->set('dark_theme', false);
Re: Как менять файлы css используя php?
Это если простом менять класс у боди. Мне же нужна замена самих стилевых файлов. В смысле... Если DarkThem = false, то используется один стилевой файл, и наоборот.unknownby писал(а): ↑2020.07.10, 09:21 Я бы сделал это при помощи проверки обычной. В том месте, где прописан класс dark_themНу а где он жмякает Темная/Светлая тема, уже устанавливаешь параметры.Код: Выделить всё
<body class="<?= (\Yii::$app->session->get('dark_theme')) ? dark_them : light_them ?>">
Возможно есть более деликатное решениеКод: Выделить всё
$session = Yii::$app->session; $session->set('dark_theme', false);
- Dominus
- Сообщения: 892
- Зарегистрирован: 2013.03.14, 21:27
- Откуда: Россия, Иваново
- Контактная информация:
Re: Как менять файлы css используя php?
Ну в главном шаблоне происходит регистрация ресурсов
Создайте еще один Asset с нужными css файлами, и в зависимости от условия, подключайте его.
Или так:
Главный шаблон main.php
AppAsset.php
Код: Выделить всё
AppAsset::register($this);
Или так:
Главный шаблон main.php
Код: Выделить всё
//...
AppAsset::$theme = 'dark'; // устанавливаем тему по какому то условию
AppAsset::register($this); // регистрируем ресурсы
// ...
Код: Выделить всё
class AppAsset extends AssetBundle
{
/**
* Тема
* @var string
*/
public static $theme = 'white'; // тема по умолчанию
/**
* @var string
*/
public $basePath = '@webroot';
/**
* @var string
*/
public $baseUrl = '@web';
/**
* @inheritDoc
*/
public function init()
{
parent::init();
$this->css[] = 'css/site.css';
$this->css[] = 'css/' . self::$theme . '.css'; // подключаем выбранную тему
}
/**
* @var array
*/
public $depends = [
YiiAsset::class,
BootstrapAsset::class,
FontAwesomeAsset::class,
Html5ShivAsset::class,
RespondAsset::class
];
}
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!