Версия для слабовидящих — Joomla
Для государственных учреждений требуется наличие версии для слабовидящих, большинство сайтов данной тематики на Joomla, ну и просто понадобилось мне реализовать такую возможность на CMS Joomla 1.5 (это относится и к новым версиям Joomla, проверял). Вот это я опишу.
Решение не моё, а взято с форума http://joomlaforum.ru/index.php/topic,293660.0.html, но там код был написан с ошибками, которые были найдены и исправлены.
Что необходимо для выполнения задачи?
1. CSS для слабовидящих (здесь это рассматриваться не будет)
2. Код смены CSS в заголовке сайта
3. Код в модуле
Решений было 2:
- Использовать сессии — пишется в базу
- Использовать куки — пишется в браузере, на стороне клиента
Я выбрал сессию, поэтому её и опишу.
Первое что надо сделать — найти в каком файле объявляется таблица стилей (css). Таблиц может быть несколько, выбирать нужно ту, которая описывает нужные нам стили и которую мы будем править, для слабовидящих.
В найденном файле нужно запомнить строку с нужной таблицей стиля (для дальнейшего использования, в нашем коде, например normal.css) и заменить на код, который указан ниже. Для Joomla 1.5 свой код, а для Joomla 2.5 и Joomla 3 — другой.
Joomla 2.5 и 3:
$vi = JFactory::getApplication()->input->getInt('vi', 5); // считываем параметр из url $session = JFactory::getSession(); if($vi != 5) {$session->set('vi', $vi);} // записываем значение параметра в сессию, если он реально присутствовал в url $is_vi = $session->get('vi', 0); // "да", если значение параметра 1; "нет", если значение параметра 0 или параметр отсутствует if ($is_vi) { //если "да", то: $vi_link = JUri::current().'?vi=0'; // будем ссылаться на обычную версию $vi_text = 'Стандартная версия сайта'; // текст ссылки echo '<link rel="stylesheet" href="visually_impaired.css" type="text/css" />'; // подключаем стили для слабовидящих } else { //иначе: $vi_link = JUri::current().'?vi=1'; // будем ссылаться на версию для слабовидящих $vi_text = 'Версия сайта для слабовидящих'; // текст ссылки echo '<link rel="stylesheet" href="normal.css" type="text/css" />'; // подключаем обычные стили }
Joomla 1.5:
JImport('joomla.environment.request'); $vi = JRequest::getInt('vi', 5); $session = JFactory::getSession(); if($vi != 5) {$session->set('vi', $vi);} // записываем значение параметра в сессию, если он реально присутствовал в url $is_vi = $session->get('vi', 0); // "да", если значение параметра 1; "нет", если значение параметра 0 или параметр отсутствует if ($is_vi) { //если "да", то: $vi_link = JUri::current().'?vi=0'; // будем ссылаться на обычную версию $vi_text = 'Стандартная версия сайта'; // текст ссылки echo '<link rel="stylesheet" href="visually_impaired.css" type="text/css" />'; // подключаем стили для слабовидящих } else { //иначе: $vi_link = JUri::current().'?vi=1'; // будем ссылаться на версию для слабовидящих $vi_text = 'Версия сайта для слабовидящих'; // текст ссылки echo '<link rel="stylesheet" href="normal.css" type="text/css" />'; // подключаем обычные стили }
9-я строка (Joomla 1.5) — объявляет таблицу стилей для слабовидящих (visually_impaired.css), которую было необходимо сделать
13-я строка — объявляет стандартную таблицу стилей, поэтому сюда нужно вставить: normal.css
Итак, Мы сделали изменение стиля сайта по ссылке (site.ru/?vi=1 — для слабовидящих или site.ru/?vi=0 — обычная версия), это не совсем удобно, поэтому надо сделать кнопку.
Понадобится 2 картинки (есть в интернете или сделать самому), а можно и без изображения.
Следующий шаг — найти на сайте место, где будет располагаться кнопка переключения, это может быть как в каком-то файле, так и в модуле.
И вставить код:
Joomla 2.5 и 3:
<?php $vi = JFactory::getApplication()->input->getInt('vi', 5); // считываем параметр из url $session = JFactory::getSession(); if($vi != 5) {$session->set('vi', $vi);} // записываем значение параметра в сессию, если он реально присутствовал в url $is_vi = $session->get('vi', 0); // "да", если значение параметра 1; "нет", если значение параметра 0 или параметр отсутствует if ($is_vi) { //если "да", то: $vi_link = JUri::current().'?vi=0'; // будем ссылаться на обычную версию $vi_text = 'Стандартная версия сайта'; // текст ссылки echo "<a href=","'", $vi_link ,"'"," >Обычная версия<img src=http://site.ru/images/eye1.png' border='0' width='56' /> </a>"; // подключаем стили для слабовидящих } else { //иначе: $vi_link = JUri::current().'?vi=1'; // будем ссылаться на версию для слабовидящих $vi_text = 'Версия сайта для слабовидящих'; // текст ссылки echo "<a href=","'", $vi_link ,"'"," >Версия для слабовидящих<img src='http://site.ru/images/eye0.png' border='0' width='56' /> </a>"; // подключаем обычные стили } ?>
Joomla 1.5:
<?php JImport('joomla.environment.request'); $vi = JRequest::getInt('vi', 5); $session = JFactory::getSession(); if($vi != 5) {$session->set('vi', $vi);} // записываем значение параметра в сессию, если он реально присутствовал в url $is_vi = $session->get('vi', 0); // "да", если значение параметра 1; "нет", если значение параметра 0 или параметр отсутствует if ($is_vi) { //если "да", то: $vi_link = JUri::current().'?vi=0'; // будем ссылаться на обычную версию $vi_text = 'Стандартная версия сайта'; // текст ссылки echo "<a href=","'", $vi_link ,"'"," >Обычная версия<img src=http://site.ru/images/eye1.png' border='0' width='56' /> </a>"; // подключаем стили для слабовидящих } else { //иначе: $vi_link = JUri::current().'?vi=1'; // будем ссылаться на версию для слабовидящих $vi_text = 'Версия сайта для слабовидящих'; // текст ссылки echo "<a href=","'", $vi_link ,"'"," >Версия для слабовидящих<img src='http://site.ru/images/eye0.png' border='0' width='56' /> </a>"; // подключаем обычные стили } ?>
Данный код без проблем будет работать, если его поместить в файл. Но внося правки через панель управления, надо будет использовать специальные расширения, например Sourcerer.
Жду Ваших вопросов и комментариев.
Добавить комментарий