Пост написан в ознакомительных целях и призван развеять миф что 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();
- $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> ';
- }
Проверяем страницы пагинации, на всех кроме первой должно появится
3. Меняем меты в альфаиндексе (по мне не очень правильно сделано сейчас)
по умолчанию стоит тег
Считаю более правильно разрешить роботу там шататься но не индексировать
открываем файл
media/zoo/applications/jbuniversal/templates/catalog/alphaindex.php
и меняем в начале
на нашу функцию
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"
ниже для картинки также добавляем атрибут 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
оборачиваем вывод в
Позиция которая выводит текстовую часть добавляем атрибут itemprop="description"
- if ($this->checkPosition(‘позиция_текста'))
- {
- echo '<div itemprop="description">'.$this->renderPosition('позиция_текста').'</div>';
- }
в файле /media/zoo/applications/jbuniversal/elements/jbimage/tmpl/jbimage-default.php
добавляем атрибут для изображений itemprop=«image"
Обратите внимание что данные атрибут добавится всем изображением которые выводятся элементом 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 то закрываем его
и в самом низу прописываем основной хост сайта (site.ru меняем на ваш сайт)
По умолчанию от индексации закрыты картинки, я эту строку всегда убираю
При обновлении joomla zoo и jbzoo какие то изменения затрутся в зависимости от того что обновляли
7. Карта сайта. По моему мнению полезна при стартовой индексации свежего сайта. На каких то свои сайтах я ее ставил на каких то нет, разницы особой не увидел.
PS это всего лишь часть того что можно сделать с сайтом чтобы он стал лучше восприниматься ПС