Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Нужно модифицировать ссылки на странице (https://javascript.ru/forum/dom-window/74680-nuzhno-modificirovat-ssylki-na-stranice.html)

Chmil 31.07.2018 02:16

Нужно модифицировать ссылки на странице
 
Здравствуйте уважаемые, возникла перед мной не посильная для моего ума задача, по этому обращаюсь к вам за помощью. Возможно скажете что так сделать нельзя, может кто подскажет другое решение, в общем суть вопроса...
Имеется сайт на joomla 3.2, его владельцу захотелось добавить на него версию "для слабовидящих". В сети более адекватного решения как ето _http://joomla.ru/articles/2646-accessibility-template не нашол, поставил, сделал все по инструкции, сказал "Ура!!!", и тут (решенная) проблема, а именно:
ссылки, которые необходимо устанавливать в качестве переключателей
<a href="/?template=accessibility">Версия для слабовидящих</a>
и
<a href="/?template=protostar">Обычная версия</a>
статичные, тоесть в даном случаи переключаюсь только на главной странице, с любой другой также ведете на главную, но ету проблему решил почти сразу, а именно вставил в 2 шаблона (обычный и для слабовидящих) код на php, который определает текущий адрес страницы и дописывает нужный мне параметр, соответственно тому на какую версию переключаюсь. А вот и не решенная проблема...
на сайте имеются другие ссылки - в тексте, разных блоках, пунктах меню и т.д., как я могу дописать в их адрес нужный мне параметр
/?template=accessibility
или
/?template=protostar
в зависимости от того какая версия? Такое возможно реализовать посредством javascript? По идее обычную версию мне трогать вобще не нужно, ссылки там итак нормальные, а вот как сделать чтобы если в браузере была ссылка с дополнением
/?template=accessibility
, то остальные ссылки также бы имели такую оконцовку? Буду очень признателен за помощь, если найду решение то выложу все в сеть для общего использования, спасибо!

j0hnik 31.07.2018 03:15

если есть хоть одна ссылка на странице с href="/?template=accessibility" то все остальные сделать такими же, правильно понял?

Chmil 31.07.2018 09:21

не совсем так
 
не совсем, если в строке браузера есть _http://мойсайт.ru/?template=accessibility, то дописать на всех ссылках что на странице ?template=accessibility, но только кроме переключателя на обычную версию, там должно быть _http://мойсайт.ru/?template=protostar

j0hnik 31.07.2018 15:33

выберите нужный вариант

//если нужно к "Обычная версия" добавлять ?template=protostar
if(/\?template=accessibility/.test(document.location.search)){
	document.querySelectorAll('a').forEach(el=> el.href+= el.innerHTML == 'Обычная версия'?'?template=protostar':'?template=accessibility');
}

//если у "Обычная версия" уже есть ?template=protostar, эту ссылку надо просто игнорировать.
if(/\?template=accessibility/.test(document.location.search)){
	document.querySelectorAll('a').forEach(el=> el.href+= el.innerHTML == 'Обычная версия'?'':'?template=accessibility');
}

Chmil 31.07.2018 23:35

j0hnik,
спасибо, сейчас попробую и отпишусь

Chmil 01.08.2018 00:53

j0hnik,
код не работает, возможно я не правильно объяснил или сделал что-то не правильно, в общем скинул вам в лс адрес сайта, просто перейдите по ссылках на обычной версии, а потом на версии для слабовидящих, думаю поймете, а я в свою очередь опишу еще раз суть проблемы:
если в адресной строке браузера (там где ссылка на страницу где мы находимся) есть get-параметр в ссылке, вот такой например - _http://мойсайт.ru/?template=accessibility, то тогда нужно дописать на всех ссылках, что по тексту на етой странице тот же get-параметр, а именно - ?template=accessibility, но тут еще есть нюанс, ето ссылка переключатель на обычную версию сайта, и она тоже должна иметь get-параметр, только другой, например такой - _http://мойсайт.ru/?template=protostar. Обычную версию сайта желательно вообще не трогать, там итак все впорядке, а изменять ссылки на странице только тогда, когда в адресной строке браузера присутствует гет-параметр === ?template=accessibility и только такой

j0hnik 01.08.2018 01:33

Chmil,
он работает, если в head подключаете надо оборачивать DOMContentLoaded
document.addEventListener("DOMContentLoaded", function(){
if(/\?template=accessibility/.test(document.location.search)){
	document.querySelectorAll('a').forEach(el=> el.href+= el.innerHTML == 'Обычная версия'?'':'?template=accessibility');
}
 });

Chmil 02.08.2018 00:22

j0hnik,
огромное Вам спасибо, все заработало на "УРА!!!":thanks:


Часовой пояс GMT +3, время: 15:47.