Как менять файлы css используя php?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Как менять файлы css используя php?

Сообщение Kazzi »

В общем... Необходимо реализовать темную тему на проект. И появилась идея. Просто держать два файла css, и подключать их исходя из того, что пользователь кинул в переменную сессии. Например, по умолчанию в сессии переменная dark_them, будет ровна false, и подгрузится файл со стилями светлой темы. И наоборот. Подскажите пожалуйста, как это сделать грамотнее?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Как менять файлы css используя php?

Сообщение unknownby »

Я бы сделал это при помощи проверки обычной. В том месте, где прописан класс dark_them

Код: Выделить всё

<body class="<?= (\Yii::$app->session->get('dark_theme')) ? dark_them : light_them ?>">
Ну а где он жмякает Темная/Светлая тема, уже устанавливаешь параметры.

Код: Выделить всё

$session = Yii::$app->session;
$session->set('dark_theme', false);
Возможно есть более деликатное решение :)
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Как менять файлы css используя php?

Сообщение Kazzi »

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);
Возможно есть более деликатное решение :)
Это если простом менять класс у боди. Мне же нужна замена самих стилевых файлов. В смысле... Если DarkThem = false, то используется один стилевой файл, и наоборот.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как менять файлы css используя php?

Сообщение Dominus »

Ну в главном шаблоне происходит регистрация ресурсов

Код: Выделить всё

AppAsset::register($this);
Создайте еще один Asset с нужными css файлами, и в зависимости от условия, подключайте его.

Или так:

Главный шаблон main.php

Код: Выделить всё

//...
AppAsset::$theme = 'dark'; // устанавливаем тему по какому то условию
AppAsset::register($this); // регистрируем ресурсы
// ...
AppAsset.php

Код: Выделить всё

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
    ];
}
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Ответить