Вывод контента без смены урл но с добавлением якоря

P
На сайте с 06.01.2009
Offline
601
3322

Здравствуйте. Подскажите, пожалуйста.

На одном сайте подбор товара реализован с помощью Аякса, как я понимаю на javascript. Вот http://computers.wikimart.ru/computers/tablets/#filters[brands][IN][]=517

Хочу попросить вас сказать, есть ли какие либо минусы у данной реализации подбора товара?

Ну например, конкретно у них некорректно работают кнопки в браузере "назад", "вперед" - т.е. якорь в урл меняется, но контентная часть с товарами не обновляется. Да и в целом, объясните, пожалуйста, в чем принципиальная разница вывода Аяксом с добавлением якоря в урл и без него, почему в их случае сделали именно с якорем? Спасибо заранее.

Я сделал себе на jQuerry (урл не меняется, без якорей) - контентная часть меняется в зависимости от того какие поля в форме выбрали, но один большой минус с которым столкнулся - не работают так как мне надо кнопки браузера "вперед/назад". Вот и ищу различные другие решения. Спасибо

C
На сайте с 04.02.2005
Offline
291
#1

а вы почитайте что-либо про js history, может свою реализацию сделаете.

trahtor
На сайте с 06.12.2005
Offline
426
#2

Говорят, что с якорями - это совсем другие урлы, что для пс намного лучше в плане продвижения.

дани мапов
На сайте с 06.09.2012
Offline
204
#3

AJAX: делаем anchor-навигацию - http://habrahabr.ru/post/108611/ . Там в комментах про кнопки назад-вперед говорится.

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
P
На сайте с 06.01.2009
Offline
601
#4
дани мапов:
AJAX: делаем anchor-навигацию - http://habrahabr.ru/post/108611/ . Там в комментах про кнопки назад-вперед говорится.

Вы про таймер, который проверяет изменился ли hash страницы?

И вопрос - то что вы показали и js history (о котором советует почитать Chukcha) это одно и тоже?

---------- Добавлено 25.12.2012 в 22:57 ----------

trahtor:
Говорят, что с якорями - это совсем другие урлы, что для пс намного лучше в плане продвижения.

Так, а вроде ссылка (урл) с якорем не индексируется...Или я ошибаюсь

дани мапов
На сайте с 06.09.2012
Offline
204
#5

Вы не ошибаетесь, якорь просто отбрасывается.

P
На сайте с 06.01.2009
Offline
601
#6

Почитал немного про hash и js history. Выбрать сложно.

Вообще я всю эту затею решил выполнить только из-за ПФ.

Т.е. хочется, чтобы юзер придя в страницу "каталог ламината" - не уходил из неё, а подбирал материал по параметрам. Так бы сделал обычный подбор материала с GET строкой, да позакрывал в роботсе урлы с номерами страниц. Может я зря заморачиваюсь? Извините, за тупой вопрос.

P
На сайте с 06.01.2009
Offline
601
#7

Ребят, я конечно нуб в этом деле, пытаюсь разобраться.

Вот на примере викимарта - у них anchor-навигация как я понял, все что после # - это информация которая позволяет понять какие именно данные нужно выводить в контент.

Вот что вижу, что у них в индексе урлы есть http://yandex.ru/yandsearch?p=1&text=url%3Ahttp%3A%2F%2Felectronics.wikimart.ru%2Fcommunication%2Fcell%2F%3F*&clid=1823013&lr=2

А юзеру урлы показывает с якорем. Я то честно говоря думал это сделано чтобы закрыть страницы от индексации, чтобы не плодить дубли полные или частичные.

У меня ситуация другая - я хочу сделать страницу подбора материала с формой отбора по критериям - но так чтобы урл не перезагружался, выводился нужный контент в зависимости от выбранных характеристик, была пагинация тоже без смены урла и при этом работали кнопки назад вперед. Сейчас сделано на jQuerry но кнопки вперед назад не работают.

У меня один вариант - js history ? Спасибо

DiAksID
На сайте с 02.08.2008
Offline
236
#8

включите простую логику:

postavkin:
.... я хочу ... чтобы урл не перезагружался ... и при этом работали кнопки назад вперед...

очевидно, что в этих условиях history броузера взятся просто неоткуда, но есть:

postavkin:
... вариант - js history ...

или другой "костыль" на выбор...

show must go on !!!...
P
На сайте с 06.01.2009
Offline
601
#9

Кто то может помочь? Никак не сделать с помощью js history так чтобы в историю попадал нужный урл (он при подборе товара не меняется). И при нажатии кнопки назад нужно чтобы он просто не менялся, как я понимаю.

Вот код функции которая выводит нужный контент (контент формируется в load_data.php)


$(document).ready(function(){
function loading_show(){
$('#loading').html("<img src='images/loading.gif'/>").fadeIn('fast');
}
function loading_hide(){
$('#loading').fadeOut('fast');
}
function loadData(page){
loading_show();
var str = $("#myform").serialize();
$.ajax
({
type: "POST",
url: "load_data.php",
data: {page : page, str: str},
success: function(msg)
{
$("#container").ajaxComplete(function(event, request, settings)
{
loading_hide();
$("#container").html(msg);
});
}
});
}
loadData(1); // For first time page load default results
$('#container .pagination li.active').live('click',function(){
var page = $(this).attr('p');
loadData(page);

});
$('#container .pagination2 .active2').live('click',function(){
loadData(1);
});
$('#container .pagination2 .sbros').live('click',function(){
alert('Я кнопка. Меня нажали!');
$('option').val('1'); // сброс значений полей option
// $('textarea').val(''); // сброс значений полей textarea
loadData(1);
});

$('#go_btn').live('click',function(){
var page = parseInt($('.goto').val());
var no_of_pages = parseInt($('.total').attr('a'));
if(page != 0 && page <= no_of_pages){
loadData(page);
}else{
alert('Enter a PAGE between 1 and '+no_of_pages);
$('.goto').val("").focus();
return false;
}

});
});

и нашел код функции которая в принципе делает историю, такой как надо, но мне не соеденить эти 2 кода никак


window.onload = function() {

// просто функция добавляет DIV с нужным нам текстом
function appendText( text ) {
var div = document.createElement( "div" );
div.innerHTML = text;
document.body.appendChild( div );
}

// функция для ссылок обрабатывается при клике на ссылку
function handlerAnchors() {

// заполним хранилище чем нибудь
var state = {
title: this.getAttribute( "title" ),
url: this.getAttribute( "href", 2 ) // двоечка нужна для ИЕ6-7
}

// заносим ссылку в историю
history.pushState( state, state.title, state.url );
// тут можете вызвать подгруздку данных и т.п.

// ...

appendText( '<b>Вы перешли по ссылке:</b> ' +
'<span style="color: green;">' + state.url + '</span>' );

// не даем выполнить действие по умолчанию
return false;
}

// ищем все ссылки
var anchors = document.getElementsByTagName( 'a' );

// вешаем события на все ссылки в нашем документе
for( var i = 0; i < anchors.length; i++ ) {
anchors[ i ].onclick = handlerAnchors;
}

// вешаем событие на popstate которое срабатывает
// при нажатии back/forward в браузере
window.onpopstate = function( e ) {

// просто сообщение
appendText( '<b>Вы вернулись на страницу:</b> ' +
'<span style="color: green;">' + history.location + '</span>' +
'<br/><b>state:</b> <span style="color: green;">' +
JSON.stringify( history.state ) + '</span><br/><br/>' );

// тут можете вызвать подгруздку данных и т.п.
// ...
}
}

ps мне в историю надо записать как я понял - url, номер страницы (из пагинации = page) и переменную str (эта переменная образуется из полей формы).

При нажатии назад как я понимаю - надо вернуть урл страницы, и остальные данные.

P
На сайте с 06.01.2009
Offline
601
#10
дани мапов:
AJAX: делаем anchor-навигацию - http://habrahabr.ru/post/108611/ . Там в комментах про кнопки назад-вперед говорится.

Да, уж про кнопки это жестко. Я не программист и самостоятельно не в силах разобраться.

Тем более хотелось бы урл оставлять неизменным при подборе товаров и пагинации.

Если сможет кто помочь /ru/forum/764094 буду рад. Спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий