Смена файла CSS нажатием кнопки в Joomla 3.4.1
Всем добрый день! Делаю сайт на Joomla 3.4.1. Хочу сделать переключатель дизайна сайта, т.е., чтобы при нажатии на ссылку, дизайн поменялся, еще раз - обратно. И так, чтобы при переходе на другую страницу дизайн сохранился тот, который был выбран в последний раз. В природе существуют такие плагины? Извиняюсь заранее, если эта тема уже была, просто пальцем ткните.
|
Примерно так.
change_theme.php: <?php $style = $_GET['style']; setcookie('style', $style, time() + 60 * 60 * 24 * 365, '/'); header('Location: /'); ?> В head на всех страницах: <link href="/temp/css/<?=$_COOKIE['style'] ?: 'stand'?>.css" rel="stylesheet" type="text/css"> Для применения: <a href="/.../change_theme.php?style=stand">Стандартная тема</a> <a href="/.../change_theme.php?style=red">Красная тема</a> <a href="/.../change_theme.php?style=gold">Золотая тема</a> Ну и конечно же, сами файлы хранить в таком виде: stand.css, red.css. |
Хм, на взгляд довольно просто, но все таки пара вопросов есть.
1. По сути всё это помещаешь в index.php? 2. 'style' - подходящее слово? Обычно все шаблоны располагаются в папке templates. |
Ruslan_xDD,
$_GET['style']; а если не определено? а где фильтрация входящих параметров? Приведу пример не только подключения стилей, а и использования другого шаблона пишем простенький системный плагин и на событие onAfterInitialise вешаем такой код: Код $input = JFactory::getApplication()->input; $template = $input->getCmd( 'template', '' ); if ( $template !== '' ) { $input->set( 'template', $template ); $conf = JFactory::getConfig(); setcookie( 'templateChanged', $template, time() + 8640000, $conf->get( 'cookie_path', '/' ), $conf->get( 'cookie_domain', '' ) ); } if ( !empty( $_COOKIE['templateChanged'] ) ) { $input->set( 'template', $_COOKIE['templateChanged'] ); } Делаем два шаблона один ваш второй для слабо видящих.. переключение просто добавить например для переключения шаблонов с protostar на beez3 и обратно в protostar: <a href="<?php echo JRoute::_('&template=beez3'); ?>">Шаблон для слабовидящих</a> в beez3: <a href="<?php echo JRoute::_('&template=protostar'); ?>">Обычный шаблон</a> Если не знаете как написать плагин, зайдите к Саше на сайт он для Вас написал конструктор http://inet-reklama.com/sozdanie-plagina.html |
А не легче будет в модуле всё это прописать?
|
mixagame,
Если знаешь как легче, чего спрашиваешь? Css можно спокойно подгружать динамически function loadCss(href) { var link = document.createElement("link"); link.rel = "stylesheet"; link.href = href; document.head.appendChild(link); } loadCss('http://mypath/custom.css'); хранить состояние в куках, в storage, сессии на выбор |
Всем спасибо, кто ответил. Завтра отпишусь о результатах :)
|
Poznakomlus, это я как простой пример показал, для наводки. Естественно, нужна фильтрация и т.д., наводка есть, а за идеальным модулем - в раздел "Работа". :)
|
Часовой пояс GMT +3, время: 03:25. |