Перейти к содержимому


Фотография
* * * * * 2 Голосов

Оптимизируем код, убираем дубли

дубли страниц микроразметка

Сообщений в теме: 34

#1 i001

i001

Отправлено 17 December 2014 - 12:58

*
Популярное сообщение!

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

 

Убираем дубли

Открываем .htaccess в корне сайта и добавляем (site.ru меняем на ваш сайт)

  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
  3. RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
  4.  
  5. RewriteBase /
  6. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
  7. RewriteRule ^index\.php$ / [R=301,L]
  8.  
  9. RewriteCond %{HTTP_HOST} !^site\.ru$
  10. RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
  11.  
  12. RewriteRule ^index.php/(.*)$ http://site.ru/$1 [R=permanent,L]
  13.  

Что значит каждая строка расписывать не буду, кому интересно - гугл расскажет.

 

2. Закрываем от индексации страницы пагинации

открываем файл 

 

/media/zoo/applications/jbuniversal/framework/helpers/jbdoc.php

после

  1. public function noindex()
  2. {
  3. $doc = JFactory::getDocument();
  4.  
  5. // set meta
  6. $doc->setMetadata('robots', 'noindex, nofollow');
  7.  
  8. // remove canonical
  9. unset($doc->_links[array_search(array(
  10. 'relation' => 'canonical',
  11. 'relType' => 'rel',
  12. 'attribs' => array()
  13. ), $doc->_links)]);
  14. }
  15.  

вставляем еще одну функцию

  1. public function noindex1()
  2. {
  3. $doc = JFactory::getDocument();
  4.  
  5. // set meta
  6. $doc->setMetadata('robots', 'noindex, follow');
  7.  
  8. // remove canonical
  9. unset($doc->_links[array_search(array(
  10. 'relation' => 'canonical',
  11. 'relType' => 'rel',
  12. 'attribs' => array()
  13. ), $doc->_links)]);
  14. }

Далее открываем файл

 

/administrator/components/com_zoo/framework/classes/pagination.php

ищем строку

  1. if ($this->_current > 1) {

и в начало добавляем

  1. $this->app->jbdoc->noindex1();

должно получится такое условие

  1. if ($this->_current > 1) {
  2. $this->app->jbdoc->noindex1();
  3. $link = $url;
  4. $html .= '<a class="start" href="'.JRoute::_($link).'">&lt;&lt;</a>&nbsp;';
  5. $link = $this->_current - 1 == 1 ? $url : $this->link($url, $this->_name.'='.($this->_current - 1));
  6. $html .= '<a class="previous" href="'.JRoute::_($link).'">&lt;</a>&nbsp;';
  7. }
  8.  

Проверяем страницы пагинации, на всех кроме первой должно появится

  1. <meta name="robots" content="noindex, follow" />

3. Меняем меты в альфаиндексе (по мне не очень правильно сделано сейчас)

по умолчанию стоит тег

  1. <meta name="robots" content="noindex, nofollow" />

Считаю более правильно разрешить роботу там шататься но не индексировать

 

открываем файл 

media/zoo/applications/jbuniversal/templates/catalog/alphaindex.php

 и меняем в начале

  1. $this->app->jbdoc->noindex();

на нашу функцию

  1. $this->app->jbdoc->noindex1();

4. Делаем сайт приятнее для роботов и в какой то части более приятные снипеты - добавляем разметку под статьи (подчеркну именно под статьи, если у вас товары рецепты и т.д то все делается по аналогии но с другими атрибутами, подробней здесь http://schema.org/)

 

4.1 Категории

media/zoo/applications/jbuniversal/templates/catalog/renderer/category/_default.php

 

в основной div добавляем обозначение разметки itemscope itemtype=«http://schema.org/Article"

  1. if ((int)$vars['params']->get('template.category_show', 1)) : ?>
  2. <div class="category rborder alias-<?php echo $category->alias; ?>" itemscope itemtypehttp://schema.org/Article">
  3.  

ниже для h1 добавляем itemprop="name"

  1. <h1 itemprop="name" class="title"><?php echo $title; ?></h1>
  2.  

ниже для картинки также добавляем атрибут itemprop="image"

  1. <div class="image-full align-<?php echo $vars['params']->get('template.category_image_align', 'left'); ?>">
  2. <img itemprop="image" src="<?php echo $image['src']; ?>" <?php echo $image['width_height']; ?>
  3. title="<?php echo $category->name; ?>" alt="<?php echo $category->name; ?>"/>
  4. </div>
  5.  

4.2 Главная страница

 

Делаем все по аналогии в файле media/zoo/applications/jbuniversal/templates/catalog/renderer/frontpage/_default.php

 

4.3 Страницы full

 

media/zoo/applications/jbuniversal/templates/catalog/renderer/item/ваш_тип/full.php

 

оборачиваем вывод в 

  1. <div itemscope itemtype=«http://schema.org/Article">
  2. вывод позиций
  3. </div>

Позиция которая выводит текстовую часть добавляем атрибут itemprop="description"

  1. if ($this->checkPosition(‘позиция_текста'))
  2. {
  3. echo '<div itemprop="description">'.$this->renderPosition('позиция_текста').'</div>';
  4. }

в файле /media/zoo/applications/jbuniversal/elements/jbimage/tmpl/jbimage-default.php 

 

добавляем атрибут для изображений itemprop=«image"

  1. echo '<img itemprop="image" ' . $imageAttrs . ' /> ' . "\n";
  2.  

Обратите внимание что данные атрибут добавится всем изображением которые выводятся элементом jbimage в шаблоне default (просто картинка без ссылок и лайтбокса)

 

5. Добавляем разметку в хлебные крошки 

 

modules/mod_breadcrumbs/tmpl/default.php (если не переопределен шаблоном который используется вашим сайтом)

меняем код на этот

  1. <?php
  2. /**
  3. * @package Joomla.Site
  4. * @subpackage mod_breadcrumbs
  5. *
  6. * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE.txt
  8. */
  9.  
  10. defined('_JEXEC') or die;
  11.  
  12. JHtml::_('bootstrap.tooltip');
  13.  
  14. ?>
  15.  
  16. <ul class="breadcrumb<?php echo $moduleclass_sfx; ?>">
  17. <?php
  18. if ($params->get('showHere', 1))
  19. {
  20. echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active"><span class="divider icon-location hasTooltip" title="' . JText::_('MOD_BREADCRUMBS_HERE') . '"></span></li>';
  21. }
  22.  
  23. // Get rid of duplicated entries on trail including home page when using multilanguage
  24. for ($i = 0; $i < $count; $i++)
  25. {
  26. if ($i == 1 && !empty($list[$i]->link) && !empty($list[$i - 1]->link) && $list[$i]->link == $list[$i - 1]->link)
  27. {
  28. unset($list[$i]);
  29. }
  30. }
  31.  
  32. // Find last and penultimate items in breadcrumbs list
  33. end($list);
  34. $last_item_key = key($list);
  35. prev($list);
  36. $penult_item_key = key($list);
  37.  
  38. // Make a link if not the last item in the breadcrumbs
  39. $show_last = $params->get('showLast', 1);
  40.  
  41. // Generate the trail
  42. foreach ($list as $key => $item) :
  43. if ($key != $last_item_key)
  44. {
  45. // Render all but last item - along with separator
  46. echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">';
  47. if (!empty($item->link))
  48. {
  49. echo '<a href="' . $item->link . '" class="pathway" itemprop="url"><span itemprop="title">' . $item->name . '</span></a>';
  50. }
  51. else
  52. {
  53. echo '<span itemprop="title">' . $item->name . '</span>';
  54. }
  55.  
  56. if (($key != $penult_item_key) || $show_last)
  57. {
  58. echo '<span class="divider">' . $separator . '</span>';
  59. }
  60.  
  61. echo '</li>';
  62. }
  63. elseif ($show_last)
  64. {
  65. // Render last item if reqd.
  66. echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active">';
  67. echo '<span itemprop="title">' . $item->name . '</span>';
  68. echo '</li>';
  69. }
  70. endforeach; ?>
  71. </ul>
  72.  

6. robotx.txt

 

Если используется стандартный поиск joomla то закрываем его 

  1. Disallow: /component/search/

и в самом низу прописываем основной хост сайта (site.ru меняем на ваш сайт)

  1. Host: site.ru

По умолчанию от индексации закрыты картинки, я эту строку всегда убираю

  1. Disallow: /images/

При обновлении joomla zoo и jbzoo какие то изменения затрутся в зависимости от того что обновляли

 

7. Карта сайта. По моему мнению полезна при стартовой индексации свежего сайта. На каких то свои сайтах я ее ставил на каких то нет, разницы особой не увидел.

 

PS это всего лишь часть того что можно сделать с сайтом чтобы он стал лучше восприниматься ПС


  • 20

#2 andrey.koch

andrey.koch

Отправлено 17 December 2014 - 19:37

i001 сказал(а) 17 Дек 2014 - 11:58:

5. Добавляем разметку в хлебные крошки 

 

 

Спасибо большое, случайно увидел и применил у себя. А я-то раньше думал - как такие красивые ссылки в поисковике получаются :)

Кстати, после того, как применил проверил в валидаторе микроразметки Яндекса и Гугла - всё ОК!

 

Денис, а может добавите в свой волшебный задачник :) то, что касается JBZoo? Ну чтоб не затиралось после обновления?

 

Увидел, что такая тема уже обсуждалась ранее.


Сообщение отредактировал ankoch: 17 December 2014 - 20:00

  • 1

#3 isay777

isay777

Отправлено 17 December 2014 - 23:15

Спасибо!!! 


  • 0
ХОСТИНГ для сайтов jbzoo (все попугаи)

#4 laRus

laRus

Отправлено 17 December 2014 - 23:24

Большое спасибо! Полезно! 


  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#5 Polotenchik

Polotenchik

Отправлено 18 December 2014 - 11:03

ankoch сказал(а) 17 Дек 2014 - 18:37:

Спасибо большое, случайно увидел и применил у себя. А я-то раньше думал - как такие красивые ссылки в поисковике получаются :)

Кстати, после того, как применил проверил в валидаторе микроразметки Яндекса и Гугла - всё ОК!

 

Денис, а может добавите в свой волшебный задачник :) то, что касается JBZoo? Ну чтоб не затиралось после обновления?

 

Увидел, что такая тема уже обсуждалась ранее.

Добрый день, можно ссылочку на тему где этот вопрос уже обсуждался? Не могу найти.


  • 0

#6 Cheren-dow

Cheren-dow

Отправлено 18 December 2014 - 16:30

ankoch сказал(а) 17 Дек 2014 - 18:37:

А я-то раньше думал - как такие красивые ссылки в поисковике получаются

А это что за ссылки? Можете скриншот показать, что поисковики в результате выводят? 


  • 0
Изображение
 

#7 Sliapy

Sliapy

Отправлено 18 December 2014 - 18:08

В снипете выводятся хлебные крошки на русском.

 

24v8_200x0.png


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#8 andrey.koch

andrey.koch

Отправлено 18 December 2014 - 19:06

Polotenchik сказал(а) 18 Дек 2014 - 10:03:

Добрый день, можно ссылочку на тему где этот вопрос уже обсуждался? Не могу найти.

Да просто кликните по тегу "микроразметка" под названием этой темы. 

А вообще вот эта тема.

 

 

'i001' сказал(а) 17 Дек 2014 - 11:58:

Убираем дубли Открываем .htaccess в корне сайта и добавляем (site.ru меняем на ваш сайт)

RewriteEngine OnRewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L] RewriteBase /RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ / [R=301,L] RewriteCond %{HTTP_HOST} !^site\.ru$RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301] RewriteRule ^index.php/(.*)$ http://site.ru/$1 [R=permanent,L] 

 

В дополнение к теме.

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

Решил проблему исключением ссылок с  /administrator/ из перенаправления по index.php (не помню уже где нарыл на просторах интернета :) ).

Получилась следующая конструкция:

  1. RewriteCond %{REQUEST_URI} !^/administrator.*$
  2. RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
  3. RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L] 

- перенаправляет все ссылки с index.php на те же ссылки без index.php и, при этом, не трогает админку.

Может кому пригодится, кто столкнётся с такой же проблемой   :)

 

P.S. Обнаружилась ещё одна проблемка при использовании этой конструкции - не работает автодополнение в JBZoo Search. Проблемка решается как описано в этом топике.


Сообщение отредактировал ankoch: 04 January 2015 - 15:12

  • 4

#9 andrey.koch

andrey.koch

Отправлено 18 December 2014 - 19:11

Cheren-dow сказал(а) 18 Дек 2014 - 15:30:

А это что за ссылки? Можете скриншот показать, что поисковики в результате выводят? 

Ну вам уже ответили :) , а вообще когда примените, можете проверить что у вас получается в явном виде через валидатор микроразметки Гугла - очень удобно, мне понравилось. И заодно увидите как у именно ваши хлебные крошки там смотрятся. Теперь жду, когда поисковики переварят эту красоту  :)


  • 0

#10 Cheren-dow

Cheren-dow

Отправлено 19 December 2014 - 19:50

Хм... есть сайт один, крошки не рамеченны, а вот ссылки на русском. Это тогда каким образом произошло?))


  • 0
Изображение
 





Темы с аналогичным тегами дубли страниц, микроразметка

Click to return to top of page in style!