Версия для слабовидящих — Joomla

Для государственных учреждений требуется наличие версии для слабовидящих, большинство сайтов данной тематики на Joomla, ну и просто понадобилось мне реализовать такую возможность на CMS Joomla 1.5 (это относится и к новым версиям Joomla, проверял). Вот это я опишу.

Решение не моё, а взято с форума http://joomlaforum.ru/index.php/topic,293660.0.html, но там код был написан с ошибками, которые были найдены и  исправлены.

Что необходимо для выполнения задачи?
1. CSS для слабовидящих (здесь это рассматриваться не будет)
2. Код смены CSS в заголовке сайта
3. Код в модуле

Решений было 2:

  1. Использовать сессии — пишется в базу
  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.

Жду Ваших вопросов и комментариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *