Смена файла 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, время: 09:10. |