Пост написан в ознакомительных целях и призван развеять миф что 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).'"><<</a> ';
$link = $this->_current - 1 == 1 ? $url : $this->link($url, $this->_name.'='.($this->_current - 1));
$html .= '<a class="previous" href="'.JRoute::_($link).'"><</a> ';
}
Проверяем страницы пагинации, на всех кроме первой должно появится
<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 это всего лишь часть того что можно сделать с сайтом чтобы он стал лучше восприниматься ПС













