Пост написан в ознакомительных целях и призван развеять миф что 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 это всего лишь часть того что можно сделать с сайтом чтобы он стал лучше восприниматься ПС