Как индексировать подгружаемый по мере прокрутки ajax контент?
Здравствуйте. Уже наверняка неоднократно обсуждался этот вопрос, но так и не ясно: то поисковики могут исполнять js и индексировать ajax страницы, то нет.
Есть обычная страница, но некоторые элементы подгружаются на нее по мере прокрутки.
Как это влияет на seo?
Если пагубно, то как в таком случае поступать? Ведь скорость загрузки страницы тоже влияет на выдачу.
Например, если открывается страница: https://yousite.com/?page=2
То вы должны отдать страницу, где контент УЖЕ был бы прокручен до условной второй страницы.
Также вместо нумерации можно использовать даты: https://yousite.com/?date=20.11.2020_-_23.11.2020
Главное все эти виртуальные страницы не забудьте или указать в карте сайта или в конце страницы давать связывающие ссылки на предыдущую и следующие страницы.
Вот от того, что у меня нет никаких условных страниц, я не понимаю, как это должно быть реализовано.
Есть просто index.html, в нем есть блоки, которые загружаются сразу, и есть ниже пустой блок <div id="popularSection"></div>. При прокрутке к концу блока, который находится выше popularSection, выполняется код
function loadComponent(act) {
$.ajax({
url: '/ajax.php',
type: 'GET',
data: ({act:act}),
cache:true,
success: function(data) {
$('#'+act).hide().html(data).fadeIn(1000).removeClass('loader');
},
error: function(data) {alert('error')},
});
}
function offsetScroll(topEl, loadEl) {
var $element = $('#'+topEl);
let counter = 0;
$(window).scroll(function() {
var scroll = $(window).scrollTop() + $(window).height();
var offset = $element.offset().top + $element.height();
if (scroll > offset && counter == 0) {
$('#'+loadEl).addClass('loader');
loadComponent(loadEl);
counter = 1;
}
});
}
$(document).ready(function(){
offsetScroll('homeCatalog', 'popularSection');
});
Т.е. никакие параметры и значения не передаются в url.
P.S. Еще я наткнулся на некий includeHTML https://github.com/xmoonlight/includeHTML, но пока не понимаю как это может помочь, и не запутывает ли меня это еще больше.
itemashabanov, контент для индексации нужно вставлять на стороне сервера. К сожалению, я не могу вам вот сходу набросать готовое решение, это нужно тратить время и изучать что там у вас под капотом + много времени на доработку роутера или даже его написание с нуля, если его вообще нет.
Надим Закиров, можно еще уточняющий вопрос?) В первом ответе вы сказали, что при запросе страницы site.com/index.php, нужно подавать эту же страницу, но "прокрученную" до того момента, когда все элементы должны быть загружены, условно до site.com/index.php#lastElBlock?! Но как быть с тем, что даже если я подам этот адрес, то там будет пусто до того момента, пока не обработается ajax запрос сервером и не будет возвращен результат? А, поскольку, поисковик не исполняет js, результата и не будет. Не совсем понимаю эту концепцию.
Или это лишнее и все решается роутером?! Извиняюсь, если вопрос "дуратский")
itemashabanov, как я понял у вас файл index.php отдает html-страницу с пустым <div id="popularSection"></div> куда позже AJAX-ом подгружается информация из /ajax.php
Что вам мешает отдавать страницу с уже заполненным <div id="popularSection"></div> ??? По идее ничего, кроме вашей лени. Вам нужно проверять адрес на наличие пагинатора /?page=1 и в зависимости от номера страницы вставлять информацию из /ajax.php
При этом обратите внимание, что в условном index.php вам не нужно делать никаких AJAX запросов, достаточно использовать include, require или eval чтобы получить контент сгенирированный в скрипте /ajax.php
P. S. Это все в общих чертах, но так как у вас чертов Битрикс, у вас вряд ли получатся так просто встроится в index.php так как он не отдает страницу напрямую, а подключает тьму внутренних скриптов, среди которых еще нужно найти сркипты с выводом шаблонов и уже их модифицировать.