Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как сделать нормальную навигацию новостей?

Как сделать нормальную навигацию новостей?


     13.01.2020    Все вопросы » jQuery    203

вопрос
В DLE сделал подгрузку новостей на Ajax как тут: ссылка

Но столкнулся с проблемой. После просмотра новости, когда возвращаешься назад тебя выкидывает бог знает куда. Если на десктоповской версии можно открыть новость в новой вкладке, то для телефонов это просто АД.

Вот тут "ссылка" сделали очень круто. Помогите решить эту проблему.

Если скрипт стоит денег, то готов заплатить.

Ответа пока нет


5 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 13 января 2020 18:31 -

Здравствуйте, так у вас скролл или загрузка страниц без перезагрузки?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

futbik
Юзер

futbik - 13 января 2020 18:41 -

dj-avtosh, Я поставил скролл, но могу сделать с кнопкой "загрузить еще", если это поможет сделать такую же навигацию.

ТeraМoune
Юзер

ТeraМoune - 13 января 2020 20:01 -

Никакой из этих методов скролл и кнопка не будет взаимодействовать с кнопками навигации браузера без history.pushState. Вы скроля или нажимая кнопку подгружаете вторую и последующие страницы ниже другой. И при обновлении странице вы вы никак не сможете получить несколько страниц на одной как вы подгрузили хаком. И само собой навигация назад тут не пригодна.

Вот что именно хотите сделать, я не совсем понял и даже на сайте примере не вижу впритык того, что вроде бы хотите. Кнопки назад так же обновляют страницу с контентом который был до этого при этом сколько бы я не подгрузил новостей это не изменяет прошлую страницу.

То есть я могу находится на 5 странице перейти в новость затем опять на 1 страницу, подгрузить 5 страниц и нажать на кнопку назад, и я попаду в новость, так как в истории переходов прошлым будет именно главная страница. А не страницы подгруженных новостей.

Вот я на сайт зашёл, подгрузил пару страниц открыл новость из подгруженной перешёл в неё, вернулся назад и меня кинуло на главную страницу и в самый низ так как в прошлом у нас сохранилось позиция скрола на определённом уровне, и так как назад мы вернулись на главную и высота страницы уже была меньше нас уткнули в футер сайта. Но подгруженные ранее новости не могут появится. Это не тот хак.

Тут нужна полноценная ajax навигация сайта

futbik
Юзер

futbik - 13 января 2020 20:22 -

ТeraМoune,

Я вижу 2 варианта решение вопроса.

1. Загружать полную новость в DIV (ajax), вместе со всеми частями сайта (хидер, футер и.т.д.) поверх загруженной странице с новостями из категории.

2. сайт.ру /категория/page/5/ запомнить "page/5/ " в куках на какой странице человек остался когда переходил на другую новость. Когда делает движение назад загрузить с нуля все страницы и ярлык на последнею новость что он кликнул. Если человек попал на полную новость и обновил страницу или перешел на другую страницу, то куки чистится, чтоб потом не был конфликт. То есть так будет работать, если пользователь сделал 1 клик на новость, потом 1 клик чтоб вернутся назад в категорию.

ТeraМoune
Юзер

ТeraМoune - 13 января 2020 21:38 -

Оба способа плохие и не являются полноценными реализациями ajax навигации. 2 способ так и вовсе не логичный и потребует правок в прочем как и полноценная реализация навигации на ajax. Но у 2 способа требуется чекать рефера дабы понять пользователь перешёл назад или же он просто скопировал ссылку и ткнул её в новое окно. Ведь оба действия будут равноценны и отличаться лишь наличием рефера в заголовке.

Видеть решение вопроса бессмысленно если не знать как их воплотить в реальность.

любая ajax навигация не обходиться без history.pushState и window.onpopstate, первая функция создаёт так называему. историческую запись (ярлык как вам угодно) текущей страницы и положения, вторая функция заставляет кнопки браузера переназначить действия по умолчанию и вместо стандартного перехода на страницу по нажатию кнопок вызывать функцию которая подгрузит контент. Так же в каждой функции запрашиваемой контент должно быть history.pushState дабы создавать новые записи в истории браузера.

https://developer.mozilla.org/ru/docs/Web/API/History/pushState
https://developer.mozilla.org/ru/docs/Web/API/WindowEventHandlers/onpopstate

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх