Загрузка части контента на WordPress с помощью AJAX
Сергей Сосновский в своем блоге рассказывал, что с помощью технологии AJAX в целях поисковой оптимизации скрыл часть содержимого сайта от поисковых систем (что, кстати, не является клоакингом). Технически реализовал это я. Поскольку нашлось много желающих повторить то же самое на своих блогах, попытаюсь донести информацию ...
Комментарии (198)
А зачем jQuery 1.6.4? Ради Google CDN? Ведь текущая встроенная 1.6.1
Да какая разница? Суть не в этом. Я предпочитаю брать с Гугла.
И правильно, хоть и не значительно, но снимаешь нагрузку с сервера.
Да и страница будет быстрее грузится, так как у пользователя jQuery у может быть в кэше браузера!
Интересно, очень даже интересно…
Надо будет наверное и у себя на блоге такое раелизовать.
Ммм, Дим, может я валенок, но чего-то не догоняю.
Скажем, с архивами, понятно: прописали, подключили и тп.
А вот мне надо скрыть, допустим, кусок текста:
Это кусок текста.
Он предназначен, чтобы скрыть его AJAX'ом по методу Dimox'а.
Раз-два-три-четыре.. Скрыть!
И оный, допустим, уже где-то размещен в статье. Как быть? Можно ли его заключить в какой-то тег, чтобы он теперь отныне был скрыт и подключался через твой пример?
Все по аналогии. Создай файл, к примеру, mytext.php, запихни в него этот текст, а в статье вместо текста вставь див с уникальным идентификатором, к примеру:
Ну и подключай в скрипте:
В плане нагрузки на сервер это не очень хорошо. Раньше у меня блог имел ajax навигацию полностью, да и в теме darkSepia реализован аналог аякс навигации.
Получается, чтобы подгрузить динамическую часть проходит полная загрузка всего движка. При иножестве обращений это можно будет ощутить.
согласен способ бредовый.
Не вижу никакой разницы, т.к. грузится один и тот же контент, только разными способами. Но может ты и прав.
1) Происходит запрос GET – весь двиг грузится выводится основаная старница
2) Происходит Ajax запрос – снова весь двиг грузится, выпаршивается нужная часть (или вся старинца) и вставляется в текущий DOM.
Полностью движок 2 раза прогружается в этом случае, а не 1. А там все запросы движка, да и просто php прогружается.
Ясно. Ну в любом случае у меня стоит на блоге кэширование, поэтому нагрузка значительно ниже.
О, то, что надо. :) Правда, у меня на уме было другое применение, но суть от этого не меняется. Спасибо.
А вы как применяете аякс подгрузку?
Кстати, для сео маньяков будет инетресен возможно варинат использования jQuery шаблонов – http://www.linkexchanger.su/2010/619.html
Ещё не применяю, но собираюсь. Для вывода всплывающих предупреждений или панелей, которыми не хочу занимать код страницы. А ещё для галереи. Но я пока не определилась, что в моём случае нормально будет статикой, а что лучше подгружать.
Логику формирования предупреждения, я думаю можно и на клиентской стороне сделать и совсем ничего не подгружать.
читал на sosnovskij.ru про скрытие. Один из вариантов был тег , но почему то google все равно индексирует и выдает в выдаче, странно, надо попробовать аякс, спасибо
Хотел, уточнить…
А почему это не считается клоакингом? По моему самый натуральный и есть.
ПС мы показываем одну инфу., а пользователям другую.
или я не прав?
Хотя бы потому, что Яндекс не считает это противозаконным. Ну или можно вообще это по-другому назвать – легальный клоакинг =)
Где написано что Яндекс не считает это противозаконным ?
Ссылка вверху статьи.
У меня что-то не получилось, можете посмотреть. Сайт archil.net, вроде все сделал как в инструкции, когда выводил страницу с шаблоном все выводилось, код вставил виджетом – ничего не вывелось, попробовал прямо в шаблоне – тоже самое.
Где я ошибся?
Файл scripts.js по указанному пути отсутствует, может быть из-за этого.
Вроде все подключил, а все равно не работает. Знаю что руки кривые но помогите пожалуйста.
Создал два файла scripts.js, ajax_archives.php, оба поместил в папке шаблона блога.
Создал страницу http://archil.net/ajax-spisok-arxivov/
scripts.js:
Добавил в хедер коды.
Вроде все правильно, а все-равно не работает.
Все работает, не внимательный я, спасибо очень классный способ скрытия ссылок.
Спасибо, можно будет попробывать для Архивов и Рубрик
прояснили немного. у меня как раз аяксовский загрузчик на блоге. боялся что беда будет с индексированием.
Аякс слой накладывается поверх слоя HTML, тут вообще не должно быть разницы никакой. А все те сеошники которые кричат направо и налево про такие вещи несут бред, т.к. нихрена не понимают о чем они говорят и как это технически реализовано.
Все зависит от реализации. Если сделано слоями, то аякс загрузчик никак не влияет на поисковую оптимизацию.
Если зайти на страницу в истории гугла и он не отобразит контент что подгружается через ajax то разве гугл добавляет к єтой странице подгружаемый контент ?
Что такое ваш аякс? Это слой, просто перехват и обработка щелчка мыши на ссылку, при котором меняется реализация обработчика на событие щелчка, но не меняется исходынй код страницы. А раз не меняетсмя исзодный код старинцы, то нет никакой разницы есть ли у вас аякс или нет. ПС все проиндексирует на основании исходного кода.
Гугл не видит подгружаемый контент, но гугд без проблем идет по ссылке на старницу из DOM, которая собственно и подгружается скорее всего реализацией ajax подгрузчика конетнта.
так пускай себе идет на подгружаемый контент как на страницу
Главное что с страницы на которой подгружается контент убирается лишняя информация
Для GoogleBot ajax не является помехой. Его даже POST запросы научили делать. (http://habrahabr.ru/blogs/search_engines/130258/ и первоисточник по ссылке). Собственно, какой смысл в данной технике, если поискового бота это не остановит?
Гугля хавает правильный аякс. У них там даже рекомендации есть ;)
p.s.: зачем двойная обёртка на document.ready?
Дмитрий, подскажи, как ты реализовал всплывающую ссылку цитирования, при выделении текста?
Руками, написал скрипт.
Хороший ответ, спасибо.
Хм..на других блогах я находил другие решения….попробую ваш, возможно этот лучше, все же спасибо
Интересный конечно способ. Надо будет посидеть над аяксом…
Дмитрий, не мог ты мне помочь. У меня в сайдбаре выводятся последние новости при помощи кода
Я хочу скрыть этот контент. Создал файл side-widget-news.php и поместил туда кусок кода
В файле sidebar.php оставил только
Вызываю подгрузку
Там где должны выводиться новости у меня ошибка
класс wp_query не найден. Что это значит? Как его объявить?
Просто код работает, если например прописать в side-widget-news.php что-то типа такого
А если например так
то тоже выдает ошибку
Подскажи что я не так делаю
Нужно обязательно делать так, как написано в статье – сначала создать шаблон страницы, а потом создать эту страницу в админке с выбором шаблона.
Твоим способом код не проходит через движок WordPress, а загружается напрямую, поэтому ничего и не работает.
а если вместо
<?php
/*
Template Name: AJAX список архивов
*/
?>
поставить
<?php
// подгружает среду WP
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
?>
Тогда не нужны страницы под каждый элемент?
ну да… так получилось, спасибо. А т.е. без создания страницы никак реализовать нельзя?
Если используется код вывода какой-то WordPress-функции, то нет.
Не получается описанным способом скрыть слайдер и сайдбар на сайте htc-review.ru. Слайдер просто перестает работать, а если делать так сайдбар, то вся страница пропадает и остается только 2 баннера, на которых висят внешние ссылки. А вот футер скрыть удалось. В чем может быть проблема?
Видимо, что-то неправильно делаете.
Можете оказать платную поддержку?
К сожалению, нет.
Dimox у меня наконец-то все получилось. спасибо огромное вам. но есть маленький вопрос, пытался таким же способом спрятать все счетчики (li и т.д.), но получается, что сначала грузиться страницы, а потом страница пропадает и остаются только счетчики. Подскажите, пожалуйста, можно ли их тоже спрятать таким способом? Спасибо!
У меня так же все пропадает при попытке скрыть баннер с внешней ссылкой.
Это из-за того, что счетчики на JavaScript. Похоже, что для них этот способ не подходит.
Спасибо автору за реализацию, но у себя на сайте не могу сделать, видимо руки не с того места. Также хотел бы попросить автора за $ помочь поставить на сайте. Если что, мой e-mail у вас есть)