mojwp.ru
Назад

Как подгрузить блоки контента при помощи Ajax

Опубликовано: 19.11.2012
12
1680

как подгрузить часть контента ajaxВ данной статье рассказано, как подгружать часть контента на сайте WordPress при помощи технологий Ajax. Подобная штука позволяет прятать от поисковых машин выбранный контент (блоки).
И в то же время данные блоки будут доступны пользователю как и раньше, т.е. юзабельность сайта не теряется, при условии, что эти пользователи не выключали JavaScript в своем браузере.

Данную штуку уже довольно давно я использую на клиентских сайтах. А на ее использование меня подтолкнуло видео, которое будет в конце статьи (советую посмотреть всем).
[infob]

Прежде чем приступать к работе с файлами шаблона сайта - сделайте резервную копию, чтобы в случае чего вернуть все назад. Для редактирования файлов советую воспользоваться бесплатной программой Notepad++, в которой можно откатить все изменения назад, если еще не закрыли файл.[/infob]

ШАГ 1: создание подгружаемого файла

Прежде всего нам нужно создать файл, где у нас будет размещаться нужный контент. Под контентом понимается от самих слов, до целых блоков (например облако меток, целый сайдбар, или "Информация об авторе сайта без плагина"). Т.е. сами определитесь, что будете прятать.

Итак, нам нужно создать в корневой папке шаблона сайта файл с расширением .php (ajax-content.php например). Внутри него необходимо разместить следующее:


В первой строке Контент Ajax обозначает название шаблона (любое). Во второй строке функция wp_tag_cloud(); отобразит облако меток - вместо данной функции подставляете свой контент.

К слову: контентом может быть целый сайдбар, либо его часть. Так же можно поместить другие элементы сайта.

ШАГ 2: создание страницы

Теперь необходимо создать страницу на сайте, которая будет служить некой прокладкой, позволяющая реализовать задуманное. Для этого в админке сайта СтраницыДобавить новую и пишите любой заголовок:
ajax wordpress контент

В сайдбаре выбираете свой шаблон, который создали на Шаге 1:
ajax подгрузка контента

После этого нажимаем Опубликовать и подводим курсор на кнопку Изменить (первая картинка с названием страницы). Когда курсор стоит на данной кнопке, снизу слева в браузере появляется ссылка с большим количеством символов. В этой ссылке нужно найти цифры после page_id. Запишите их на бумажку, т.к. они понадобятся дальше.

Саму страницу можно прикрыть от индекса в robots.txt

ШАГ 3: убираем страницу из меню сайта

Создав новую страницу на предыдущем шаге, скорее всего она автоматически разместиться в вашем меню на сайте. Если подобное произошло, то необходимо избавиться от данной вещи. В файлах шаблона header.php, functions.php или даже footer.php будет размещаться конструкция, которая отвечает за меню сайта. Необходимо найти нечто подобное

wp_list_pages(‘title_li=’)

До этого будет какое-то обозначение menu, поэтому сразу соориентируетесь. В Notapad++ можете открыть эти файлы и нажать CTRL+F и попробовать найти по wp_list_pages. После того, как нашли искомое - необходимо добавить исключение созданной страницы. Я говорил на Шаге 1 записать цифры после page_id. Вот теперь они нам понадобятся:

wp_list_pages(‘exclude=154&title_li=’)

Цифра 154 - это номер страницы, которую исключаем из меню сайта.

ШАГ 4: выбор места отображения контента

Теперь необходимо вставить на то место, где вы хотите видеть подгружаемый контент из ШАГ 1 следующую конструкцию:

Вместо ajax-content можно написать все что угодно на латинице. Но стоит запомнить название, т.к. понадобится его прописать еще раз в другом файле.

ШАГ 5: подключаем Jquery

Во многих шаблонах Jquery подключен по-умолчанию. Следовательно для них не нужно выполнять данный шаг. Откройте файл header.php и посмотрите, если до тега </head> стоит подобный url в скрипте, то значит библиотека подключена. В противном случае вставляем:

Есть несколько способов подключения Jquery на сайте. Я показал лишь один из них.

ШАГ 6: создаем JS-файл

Теперь необходимо создать сам файл скрипта. Для этого создаем новый файл с расширением .js и любым названием на латинице. Внутри данного файла помещаем следующий код:

(function($) { $(function() { 
  $("#ajax-content").load("https://mojwp.ru/oblako");
}) })(jQuery)

Здесь обращаем внимание на следующее:

  • #ajax-content - название id из Шага 4;
  • https://mojwp.ru/oblako - url созданной страницы из Шага 2.

Данный файл .js (к примеру вы его обзовете oblako.js) необходимо разместить в корне шаблона сайта, либо специальной папке js, если она уже была создана разработчиками вашего шаблона (такое бывает довольно часто).

ШАГ 7: заключительный

Теперь осталось подключить скрипт на сайте. Для этого в файле header.php перед закрывающим тегом </head> вставляем следующее:

Суть конструкции: указать путь до файла со скриптом. Т.е. можно прописать вручную http://сайт.ру/wp-content/themes..... Либо воспользоваться bloginfo('template_url'), которая говорит, что файл лежит в корне шаблона. Если он не в корне, то можно немного подправить:

В этом случае файл oblako.js лежит в папке js, которая находится в корне шаблона.

Послесловие

Вот и все манипуляции. Текста получилось много, но на самом деле все делается за пару минут. Главное определитесь - нужно ли вам что-то прятать и что это будет.

В результате при нажатии CTRL+U в браузере, вместо контента будет просто выводиться div, который был прописан на Шаге 4.

А теперь обещанное видео, которое рекомендую посмотреть всем увлекающихся поисковой оптимизацией (2 части):

Муза статьи: блог dimox.name.

Автор:
Виталий
Поделиться
Похожие записи
Черкани пару строк
  • Дмитрий
    Опубликовано: 20.11.2012 Ответить на сообщение

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

    • Виталий
      Опубликовано: 20.11.2012 Ответить на сообщение

      в админке сайта:

  • Дмитрий
    Опубликовано: 21.11.2012 Ответить на сообщение

    Огромное спасибо за оперативный ответ!

  • Никита Рябин
    Опубликовано: 30.12.2012 Ответить на сообщение

    Мне кажется не стоит так нагружать блог, лучше использовать стандартные функции и не париться.

  • Василий
    Опубликовано: 12.02.2013 Ответить на сообщение

    Странно, видимо код php в комментариях использовать нельзя.

    Как быть? Но может оно и к лучшему, не будет сбивать.

    Прошу помощи, Виталий.

    • Виталий
      Опубликовано: 13.02.2013 Ответить на сообщение

      не возьму в толк - зачем вам такое? Ведь в аяксе не индексируется контент (ссылки в том числе). Только жизнь усложняете себе

      • Василий
        Опубликовано: 13.02.2013 Ответить на сообщение

        Да, это я знаю. Но потребность такая есть, прохожу марафон у Романа Пузата, и там задание - избавиться от циклических ссылок.

        Понятно, что ПС этих ссылок и так не видит, да и посетители вряд ли станут кликаться об ссылку, ведущую в раздел, где они уже и так находятся.

        Но все же, если это возможно реализовать, был бы весьма признателен за помощь.

        • Виталий
          Опубликовано: 13.02.2013 Ответить на сообщение

          сейчас не подскажу, т.к. не было необходимости разбираться в подобном. Если угодно, могу дать контакты PHP-кодера, который поможет в решении (будет платно, но не думаю что много)

          • Василий
            Опубликовано: 13.02.2013 Ответить на сообщение

            Конечно давайте, спасибо. Можете на почту, она у Вас видна.

  • Андрей
    Опубликовано: 01.07.2013 Ответить на сообщение

    Не получается спрятать сайдбар целиком, вызов функцию вызова сайдбара в файле PHP прописал так -

    потом в файле js
    (function($) { $(function() {
    $("#hidesidebar").load("http://vyalte.org.ua/skryt-kontent");
    }) })(jQuery)
    lfkmit
    дальше
    подгрузки ajax вставил в INDEX.PHP, PAGE.PHP, SINGLE.PHP в место функции вызова сайдбара

    тема foghorn может есть какие то особенности? Подскажите пожалуйста.

    • Виталий
      Опубликовано: 02.07.2013 Ответить на сообщение

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

    • Олег
      Опубликовано: 13.12.2014 Ответить на сообщение

      Такая же история что не пытаюсь ничего не получается.. При подключении php файла, если там обычный html скрипт срабатывает и все выводится. А если в подключаемом php файле есть циклы, то отображается совсем пустая страница на рабочем сайте. Может у кого нибудь есть идеи как подключить сайтбар на сайте, чтобы все работало. Напишите на givi.tatarenko@ya.ru или здесь

Имя
Укажите своё имя и фамилию
E-mail
Без СПАМа, обещаем
Текст сообщения
Отправляя данную форму, вы соглашаетесь с политикой конфиденциальности и правилами нашего сайта.