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


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

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

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

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

#1 i001

i001

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

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

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

 

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

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

RewriteEngine On
RewriteCond %{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]

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

 

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

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

 

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

после

public function noindex()
    {
        $doc = JFactory::getDocument();

        // set meta
        $doc->setMetadata('robots', 'noindex, nofollow');

        // remove canonical
        unset($doc->_links[array_search(array(
            'relation' => 'canonical',
            'relType'  => 'rel',
            'attribs'  => array()
        ), $doc->_links)]);
    }

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

 public function noindex1()
    {
        $doc = JFactory::getDocument();

        // set meta
        $doc->setMetadata('robots', 'noindex, follow');

        // remove canonical
        unset($doc->_links[array_search(array(
            'relation' => 'canonical',
            'relType'  => 'rel',
            'attribs'  => array()
        ), $doc->_links)]);
    }

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

 

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

ищем строку

 if ($this->_current > 1) {

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

$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"

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

 

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

 

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

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

<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_breadcrumbs
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('bootstrap.tooltip');

?>

<ul class="breadcrumb<?php echo $moduleclass_sfx; ?>">
	<?php
	if ($params->get('showHere', 1))
	{
		echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active"><span class="divider icon-location hasTooltip" title="' . JText::_('MOD_BREADCRUMBS_HERE') . '"></span></li>';
	}

	// Get rid of duplicated entries on trail including home page when using multilanguage
	for ($i = 0; $i < $count; $i++)
	{
		if ($i == 1 && !empty($list[$i]->link) && !empty($list[$i - 1]->link) && $list[$i]->link == $list[$i - 1]->link)
		{
			unset($list[$i]);
		}
	}

	// Find last and penultimate items in breadcrumbs list
	end($list);
	$last_item_key = key($list);
	prev($list);
	$penult_item_key = key($list);

	// Make a link if not the last item in the breadcrumbs
	$show_last = $params->get('showLast', 1);

	// Generate the trail
	foreach ($list as $key => $item) :
	if ($key != $last_item_key)
	{
		// Render all but last item - along with separator
		echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">';
		if (!empty($item->link))
		{
			echo '<a href="' . $item->link . '" class="pathway" itemprop="url"><span itemprop="title">' . $item->name . '</span></a>';
		}
		else
		{
			echo '<span itemprop="title">' . $item->name . '</span>';
		}

		if (($key != $penult_item_key) || $show_last)
		{
			echo '<span class="divider">' . $separator . '</span>';
		}

		echo '</li>';
	}
	elseif ($show_last)
	{
		// Render last item if reqd.
		echo '<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="active">';
		echo '<span itemprop="title">' . $item->name . '</span>';
		echo '</li>';
	}
	endforeach; ?>
</ul>

6. robotx.txt

 

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

Disallow: /component/search/

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

Host: site.ru

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

Disallow: /images/

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

 

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

 

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


  • 20

#2 andrey.koch

andrey.koch

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

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

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

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

 

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

 

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

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


  • 0

#6 Cheren-dow

Cheren-dow

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

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

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


  • 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

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

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

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

 

 

Убираем дубли Открываем .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 (не помню уже где нарыл на просторах интернета :) ).

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

RewriteCond %{REQUEST_URI} !^/administrator.*$
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
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

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

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


  • 0

#10 Cheren-dow

Cheren-dow

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

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


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





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

Click to return to top of page in style!