Загрузка части контента на WordPress с помощью AJAX

Загрузка части контента на WordPress с помощью AJAX

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

Комментарии (193)
  1. 1

    А зачем jQuery 1.6.4? Ради Google CDN? Ведь текущая встроенная 1.6.1

  2. 5

    Интересно, очень даже интересно…
    Надо будет наверное и у себя на блоге такое раелизовать.

  3. 6

    Ммм, Дим, может я валенок, но чего-то не догоняю.
    Скажем, с архивами, понятно: прописали, подключили и тп.

    А вот мне надо скрыть, допустим, кусок текста:

    Это кусок текста.
    Он предназначен, чтобы скрыть его AJAX'ом по методу Dimox'а.
    Раз-два-три-четыре.. Скрыть!

    И оный, допустим, уже где-то размещен в статье. Как быть? Можно ли его заключить в какой-то тег, чтобы он теперь отныне был скрыт и подключался через твой пример?

    • 7

      Все по аналогии. Создай файл, к примеру, mytext.php, запихни в него этот текст, а в статье вместо текста вставь див с уникальным идентификатором, к примеру:

      <div id="mytext"></div>
      

      Ну и подключай в скрипте:

      $("#mytext").load("http://путь_к_файлу/mytext.php");
      
  4. 8

    В плане нагрузки на сервер это не очень хорошо. Раньше у меня блог имел ajax навигацию полностью, да и в теме darkSepia реализован аналог аякс навигации.

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

  5. 13

    О, то, что надо. :) Правда, у меня на уме было другое применение, но суть от этого не меняется. Спасибо.

  6. 17

    читал на sosnovskij.ru про скрытие. Один из вариантов был тег , но почему то google все равно индексирует и выдает в выдаче, странно, надо попробовать аякс, спасибо

  7. 18

    Хотел, уточнить…
    А почему это не считается клоакингом? По моему самый натуральный и есть.
    ПС мы показываем одну инфу., а пользователям другую.
    или я не прав?

  8. 22

    У меня что-то не получилось, можете посмотреть. Сайт archil.net, вроде все сделал как в инструкции, когда выводил страницу с шаблоном все выводилось, код вставил виджетом — ничего не вывелось, попробовал прямо в шаблоне — тоже самое.
    Где я ошибся?

  9. 26

    Спасибо, можно будет попробывать для Архивов и Рубрик

  10. 27

    прояснили немного. у меня как раз аяксовский загрузчик на блоге. боялся что беда будет с индексированием.

    • 28

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

      Все зависит от реализации. Если сделано слоями, то аякс загрузчик никак не влияет на поисковую оптимизацию.

      • 29
        @

        Если зайти на страницу в истории гугла и он не отобразит контент что подгружается через ajax то разве гугл добавляет к єтой странице подгружаемый контент ?

        • 30

          Что такое ваш аякс? Это слой, просто перехват и обработка щелчка мыши на ссылку, при котором меняется реализация обработчика на событие щелчка, но не меняется исходынй код страницы. А раз не меняетсмя исзодный код старинцы, то нет никакой разницы есть ли у вас аякс или нет. ПС все проиндексирует на основании исходного кода.

          Гугл не видит подгружаемый контент, но гугд без проблем идет по ссылке на старницу из DOM, которая собственно и подгружается скорее всего реализацией ajax подгрузчика конетнта.

  11. 32
    dendrow

    Для GoogleBot ajax не является помехой. Его даже POST запросы научили делать. (http://habrahabr.ru/blogs/search_engines/130258/ и первоисточник по ссылке). Собственно, какой смысл в данной технике, если поискового бота это не остановит?

  12. 33
    @

    Гугля хавает правильный аякс. У них там даже рекомендации есть ;)

  13. 34
    @

    p.s.: зачем двойная обёртка на document.ready?

  14. 35
    @

    Дмитрий, подскажи, как ты реализовал всплывающую ссылку цитирования, при выделении текста?

  15. 38

    Хм..на других блогах я находил другие решения….попробую ваш, возможно этот лучше, все же спасибо

  16. 39
    Простой

    Интересный конечно способ. Надо будет посидеть над аяксом…

  17. 40

    Дмитрий, не мог ты мне помочь. У меня в сайдбаре выводятся последние новости при помощи кода

    <div class="side-widget-news">
     <h3>Последнее</h3>
     <ul>
     <?php
    		$the_query = new WP_Query('showposts=10&orderby=post_date&order=desc');
    			while ($the_query->have_posts()) : $the_query->the_post(); ?>
    
    					<li>
    					<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(75,75), array ('class' => 'alignleft', 'alt' => '', 'title'=>'')); ?></a>
    							<h4><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4>
    <div class="sidebar-date"><span class="sidebar-day"><?php the_time('d'); ?></span> <?php the_time('F Y'); ?></div>
    							<p><?php truncate_post(170,true); ?></p>
    							
    							<div class="clear"></div>				
    					</li>
    					<?php endwhile;?>
     </ul> 
     </div>
    

    Я хочу скрыть этот контент. Создал файл side-widget-news.php и поместил туда кусок кода

     <h3>Последнее</h3>
     <ul>
     <?php
    		$the_query = new WP_Query('showposts=10&orderby=post_date&order=desc');
    			while ($the_query->have_posts()) : $the_query->the_post(); ?>
    
    					<li>
    					<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(array(75,75), array ('class' => 'alignleft', 'alt' => '', 'title'=>'')); ?></a>
    							<h4><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h4>
    <div class="sidebar-date"><span class="sidebar-day"><?php the_time('d'); ?></span> <?php the_time('F Y'); ?></div>
    							<p><?php truncate_post(170,true); ?></p>
    							
    							<div class="clear"></div>				
    					</li>
    					<?php endwhile;?>
     </ul> 
    

    В файле sidebar.php оставил только

    <div class="side-widget-news"></div>

    Вызываю подгрузку

    (function($) {
    $(function() {
    
     $(".side-widget-news").load("/wp-content/themes/NumertoMagazine/side-widget-news.php");
    
    })
    })(jQuery)
    

    Там где должны выводиться новости у меня ошибка

    Fatal error: Class ‘WP_Query’ not found in Z:\home\onlyautonews.loc\www\wp-content\themes\NumertoMagazine\side-widget-news.php on line 4

    класс wp_query не найден. Что это значит? Как его объявить?

    Просто код работает, если например прописать в side-widget-news.php что-то типа такого

    <h3>Последнее</h3>
    <ul>
    <li>Новость 1</li>
    </ul>
    

    А если например так

    <ul>
     <?php wp_get_archives('type=monthly'); ?>
    </ul>
    

    то тоже выдает ошибку

    Fatal error: Call to undefined function wp_get_archives() in Z:\home\onlyautonews.loc\www\wp-content\themes\NumertoMagazine\side-widget-news.php on line 3

    Подскажи что я не так делаю

  18. 44

    ну да… так получилось, спасибо. А т.е. без создания страницы никак реализовать нельзя?

  19. 46
    @

    Не получается описанным способом скрыть слайдер и сайдбар на сайте htc-review.ru. Слайдер просто перестает работать, а если делать так сайдбар, то вся страница пропадает и остается только 2 баннера, на которых висят внешние ссылки. А вот футер скрыть удалось. В чем может быть проблема?

  20. 53
    Семен

    Спасибо автору за реализацию, но у себя на сайте не могу сделать, видимо руки не с того места. Также хотел бы попросить автора за $ помочь поставить на сайте. Если что, мой e-mail у вас есть)

Ваш комментарий