Загрузка части контента на WordPress с помощью AJAX
![Загрузка части контента на WordPress с помощью AJAX](https://dimox.name/wp-content/themes/dimox.name/cache/86/c2cee62ed9d0686_150x100.jpg)
Сергей Сосновский в своем блоге рассказывал, что с помощью технологии AJAX в целях поисковой оптимизации скрыл часть содержимого сайта от поисковых систем (что, кстати, не является клоакингом). Технически реализовал это я. Поскольку нашлось много желающих повторить то же самое на своих блогах, попытаюсь донести информацию ...
Комментарии (198)
Подскажите, а как понять, что я все настроил правильно, и что аякс работает?
Если содержимое, которое выводится через аякс, отображается, значит работает.
Сайты, на которых применил это, повылетали в сегодняшний апдейт по всем запросам из Яндекса (около 300 запросов по разным тематикам). Точно такие же, на которых не успел сделать – остались.
Dimox, супер все получилось.
Возникла загвоздка в п.5
но все решилось так:
1. Создать страницу (публиковать её не надо!!!)
2. Надать “Предосмотр”
3. Скопировать тот адрес без &preview=true
4. —
5. Profit
Попробовал на другом сайте.
Пустое окно. Хотя когда открываю страницу, то содержимае показывается.
Возможно какой-то плагин мешает ?
Не знаю.
Пробую разобраться. Все равно благодарю за реализованную идею.
Я не очень силен в программирование. Сначала попробовал тему с сёрча, но для WordPress она не пошла. Ваши пример рабочий.
А если сайт кэшируется, то ajax бессилен? Скрываемые ссылки поисковики увидят? Благодарствую!!!
Должно работать. У меня на этом блоге используется и кэширование, и AJAX, и все работает без проблем. На счет поисковиков – по идее нет.
Здраствуйте Дмитрий! Все настроил, все работает, но когда выхожу из админки то содержимое которое выводится через Ajax не отображается, если авторизируюсь то все отображается. В чем может быть загвоздка?
Может быть у вас стоит плагин кэширование и нужно сбросить кэш. Других причин не представляю.
Плагин не стоит, пробовал все плагины отключать но проблема осталась. По логике вещей раз все работает когда я авторизирован значит и без авторизации должно работать? Но что-то мешает, не пойму что…
Скорее всего вы когда создали страницу на втором шаге “Зайдите в админку WordPress и создайте новую страницу. Назовите ее как угодно, например “Список архивов”. Справа в блоке “Атрибуты страницы” выберите шаблон “AJAX список архивов””, то присвоили ей Видимость “Личное”. Тогда она будет отражаться когда вы залогинитесь и не будет соответственно когда разлогинитесь.
Вот на моем сайте щас попробовал, у меня одна страница отвечает за вывод последних новостей на Главной, а другая на одиночной записи. А на той, что на одиночной присвоил статус Личное, теперь она не показывается. А на главной отображается, потому как видимость Открыто. Попробуйте, может в этом дело?
Стоит видимость: Открыто
Да, должно работать в обоих случаях.
А чтобы исключить страницу из списка страниц, если он есть, то надо либо в шаблоне поправить (exclude=id_страницы), либо плагином каким-нибудь, который позволяет исключать страницы.
А еще проще – пометить эту страницу, как черновик.
В том месте файла sidebar.php, где вы хотите увидеть список архивов, вставьте такой html-код:
_______________
А какой код вставить, чтобы на sidebar сослаться!? (вместо архивов Я вынес весь сайдбар, причём когда с панели админа меняю, добавляю виджеты, то меняется сайдбар вынесенный ajax-ом – это хорошо)
Ураа! Работает! Осталось ещё хлебные крошки убрать и соц. кнопки под постами, ну и может ещё фуутер. Благодарствую!!!
Ну е-мое может сборка глючная? Все сделано, все отображается, но стоит выйти из админки так сразу все пропадает. Чудеса да и только. Тимур вы когда не авторизированы тоже все работает?
Привет! Да! Всё работает…
Ещё один вопрос. У меня несколько сайдбаров, для каждого нужен отдельный файл scripts.js!?
Или можно добавлять к прежнему? благодарю!!!
(function($) {
$(function() {
$(“#archives”).load(“http://ВАШ_ДОМЕН/ajax_archives/”);
$(“#archives”).load(“http://ВАШ_ДОМЕН/ajax_archives2/”);
$(“#archives”).load(“http://ВАШ_ДОМЕН/ajax_archives3/”); и тд…
})
})(jQuery)
Конечно все в один файл. Зачем их плодить? Это же лишние запросы к серверу.
А если просто перейти по адресу созданной страницы должно отображаться содержимое?
Да.
Когда авторизирован то отображается, а когда не авторизирован если перейти на созданную страницу то выдает “Страница не найдена ошибка 404”. Я так понимаю что-то куда-то перенаправляет. В какую сторону копать?
1) Причина может быть в шаблоне. Попробуйте временно переименовать файл functions.php. Если проблема решится, значит причина в нем.
2) Причина может быть в каком-то из плагинов. Отключите их и проверьте, работает ли без них.
Спасибо разобрался, сам ступил, я страницу зачем-то сохранял как черновик :). Убрал вывод этой страницы, стоит ли в роботс ее закрывать если ссылки на сайте на нее и так нет?
Нет нужно.
То есть нужно закрывать?
Букву “т” случайно вставил. Т.е. НЕ нужно.
У меня в шаблоне 2 сайдбара, можно создавать дополнительные. Я выгрузил вместо архивов весь сайдбар
и теперь сайдбар грузится ajax-ом на всех страницах и постах. До подключения, на страницах был один сайдбар, и на страницах постов другой, а теперь на всех один и тотже. Как можно исправить!?
Разделить на две части, т.е. создать две страницы. И в соответствующем месте подключать нужный сайдбар.
А Ты не мог бы подсказать кому можно поручить выполнение задания? Нужно сделать так, чтобы каждый сайдбар и каждый новый созданный сайдбар всегда подгружались ajax-ом.
Некого посоветовать.
Dimox! Очень прошу ВАС от всех пользователей CMS DLE помочь нам адаптировать данный способ скрытия части сайта для нашей CMS. Вопрос очень актуальный, а как сделать не могу разобраться. Не силен в данной области, но очень бы хотелось применить у себя на сайте. Заранее благодарю. С уважением Дмитрий.
Ничем не смогу помочь, я не пользуюсь DLE. Лучше обратиться к Паше, думаю, он сможет это сделать.
Не могу понять в чём дело. Создал wp-ajax-sidebar.php в него скопировал всё из sidebar.php, и в sidebar.php вставил вместо скопированного кода. Сайдбар грузится, но грузится везде, на страницах где должен быть другой сайдбар1 грузится этот сайдбар, а сайдбар1 либо грузится, но не показывается пользователю, либо не грузится…
Причём, если отключить ajax и поставить все коды на место, то всё нормально. Странно получается другие сайдабы грузятся именно этим (sidebar.php) сайдбаром, но если его сделать на ajax-е, то он перестаёт работать как должнен.
а как придать стиль для архивов!? вывожу отдельными блоками, меняется стилиь…
Сделал все, как описанно. Ничего не работает. Даже код одинаковый ставил. Jquery проверил, в блок методом text добавил текст. Метод Load не работает.
А как это все сделать на DLE ?
Метод классный. Сделал на сайте http://www.lato.kiev.ua/. Единственная проблема возникла с вордпресс-плагином qTranslate. Футер всегда загружается на русском, без перевода. Может, кто-то найдет метод победить эту ситуацию?
Для qTranslate помоему есть условные комментарии языков (читайте readme) в общем ничего сложного
Супер. Очень просто и доходчиво. Особенно понравилось, что код оптимален и нет ничего лишнего. Спасибо.
Привет.
Сделал все как написано. (хочу скрыть верхнее меню)
Получилось – подгружается меню аяксом.
Только ссылки от туда точно такие же как и без аякса. с каждой позиции Главная – т.е. я не понимаю в чем суть. Все как и без аякса.
Просмотри код страницы – ссылок меню там нет.
да, действительно.
а я смотрел “просмотр кода элемента” хромом и там они были – это меня с толку сбило. уже понял, спасибо
С отображением ссылок я разобрался.
Вопрос следующий: отлично подгружется меню, теперь хочу второй блок закрыть аяксом, но второй ни в какую не хочет работать. (даже два
рядом не работают. )
Создал:
ajax_archives2.php
scripts2.js
страницу с ajax атрибутами из ajax_archives2
вставил в код
второй блок не отображается ни при каких обстоятельствах.
Уверен, что все это можно сделать, но я не могу понять как?
буду очень признателен за помощь.
Идентификатор
archives
в каждом случае должен быть уникальным, его нельзя использовать дважды.