Оптимизация шаблонов
Пролог
Наброски по данной статье лежали ещё с конца зимы и все никак не было времени на её написание, поэтому решил опубликовать её почти «как есть» т.е. с сухими выжимками фактов, без расписанных деталей. Это поможет остальным членам сообщества совершенствовать свои шаблоны.

Внимательное всестороннее изучение аналитики и инструментов для вебмастеров от гугла на новом сайте с чистым уникальным контентом заявило о некоторых слабых местах стандартного шаблона developer, на основе которого был создан свой (замечу, что шаблон synio имеет те же погрешности + свои особенности). Говоря в данном контексте «уникальный контент» имеется ввиду нормальные статьи для привлечения аудитории, которые пишутся людьми и для людей, а не под заказ т.е. никакой копипасты и рерайтинга. На наблюдаемом сайте весь контент писался с чистого листа.
Были наблюдения, анализы инструментов от гугла и удалось вывести список необходимых изменений, которые нужно внести в шаблон для улучшения индексированности сайта. Помимо прочего, нужно также сделать ещё и другие правки на сайте кроме шаблона. Давайте посмотрим на этот список.
Что нужно сделать для СЕО?
При просмотре аналитики можно заметить что некоторые ненужные словоформы сайта засоряют и занимают топовые позиции ключевых слов, например «0 комментариев», «читать далее». Нужно как можно скорее избавиться от них, ведь вряд ли можно ожидать большого наплыва посетителей по таким странным запросам.
- В шаблоне нужно убрать текст ссылки "читать далее" (только его т.к. если указан текст для тега cut, то пусть будет он) и заменить его на заголовок топика используя конструкцию
{$oTopic->getTitle()|escape:'html'}
в типах топика «фотосет» и обычном топике. Этот текст попадает в топ ключевиков по сайту.
Примечание:
Для топиков типа «опрос» и «ссылка» текст выводится полностью, без ссылки «читать далее», что связано с малым объемом разрешенного текста для таких топиков в 500 символов, поэтому в их шаблонах менять ничего не нужно.
Найти этот текст в шаблоне обычного топика можно по ключевым словам текстовки:
{$aLang.topic_read_more}
в фотосете немного другой текст ссылки:
{$aLang.topic_photoset_show_all|ls_lang:"COUNT%%`$iPhotosCount`"} →
- Убрать текст "комментарии" в нижней части топика и заменить его на иконку комментариев (этот ключевик попадает в ТОП4 сайта)
- Уменьшить размер шрифта заголовка "N комментариев" над комментариями топика до h6, т.к. h3 слишком много ему чести делает (попадает в ТОП4 сайта).
- Убрать надпись "Теги" топика и заменить его на иконку тегов
- Убрать значение «image» атрибута alt тега img в файле topic_photoset.tpl и заменить его более объективным
{$oMainPhoto->getDescription()|escape:'html'}
- Убрать по всему шаблону значения атрибутов alt, которые не несут смысловой нагрузки. Таких файлов будет два десятка и заменить их нужно чем нибудь полезным, например, заголовком топика, логином пользователя или описанием, не забывая экранировать данные — в зависимости от значения слова этого атрибута оно занимает 5 позицию по ключевым словам. Например, можно встретить alt=«login» или alt=«profile» встречающиеся по сайту весьма часто. Стоит ли говорить что поисковики считают это важным?
- Заголовки. Одно из наиболее важных замечаний. На главной странице должен быть только один заголовок с тегом h1 — это название сайта, тег h2 — описание сайта и заголовки топиков. На страницах самих публикаций заголовок топиков должен меняться на h1 как наиболее важный, а в шапке сайта название должно уменьшаться до h2, описание — до h3. Таким образом ПС можно дать понять что же является самым важным на каждой странице. Текущее положение дел в стандартных шаблонах для ЛС может вывести ваш сайт в ТОП только по его названию, т.к. каждая страница вашего сайта только об названии и сообщает как наиболее важном.
- Как известно, можно не писать атрибут типа тега script — браузеры давно по-умолчанию подразумевают что это яваскрипт. Поэтому ни к чему каждый раз писать это. Можно почистить шаблоны от этой старой необходимости.
- Вы будете удивлены, но кнопки шаринга в социальных сетях, которые подключаются в топике, все имеют атрибут rel=«nofollow» кроме одной, хорошо скрытой и не видимой пользователю:
<a class="b-share-popup__yandex" href="http://api.yandex.ru/share/">Яндекс</a>
т.е. каждая ваша страница сайта, где есть хотя бы один топик, на данный момент содержит индексируемую скрытую ссылку на сайт Яндекса.
Отключается это просто комментированием строки вызова скрипта яндекс-шаринга в конфиге движка:
"http://yandex.st/share/share.js" => array('merge'=>false),
заменить на
//"http://yandex.st/share/share.js" => array('merge'=>false),
правда при этом кнопки публикации статьи в социальных сетях работать не будут. Но скриптов шаринга в инете полно.
- В сайдбаре все заголовки (например, "Прямой эфир") нужно уменьшить до тега h6 — они только забирают вес у важного контента
- Добавить плагин trickytitle, который дополняет заголовки страниц дополнительными данными и избавляет вас от леса ошибок в панели веб-мастера гугла, которые нервно сообщают о куче страниц с одинаковым тайтлом
- Добавить плагин sitemap, который составляет удобную карту вашего сайта для поисковых систем и улучшает индексирование вашего сайта (казалось бы что это уже и так само собой разумеется, но не все вспоминают об этом плагине)
- Добавить плагин seo, который значительно лучше формирует для поисковиков метатеги страниц в автоматическом режиме (ключевые слова и описание)
- Добавить плагин "Пингатор", который стучится в двери поисковиков при каждой новой публикации на сайте, сообщая тем самым, что надо бы и сайт проиндексировать. Снова.
- Добавить файл robots.txt в корень сайта, в котором запретить поисковикам ходить по урлам, где их ничего не ждет, а робота яндекса специально натравить на сайтмап, т.к. он иногда стесняется попробовать найти его самостоятельно
Приложение
- Плагины, о которых идет речь в тексте, можно найти в официальном каталоге движка. Все они бесплатные.
- Для п. 7 «Заголовки» код может быть использован примерно следующий (могут понадобится незначительные правки для конкретного шаблона):
A. для шапки сайта в файле header_top.tpl для регулирования размеров названия и описания сайта:
<header id="header" role="banner"> {hook run='header_banner_begin'} <hgroup class="site-info"> {if $sAction=='index'} {assign var="sSiteTitleTag" value="h1"} {assign var="sSiteDescriptionTag" value="h2"} {else} {assign var="sSiteTitleTag" value="h2"} {assign var="sSiteDescriptionTag" value="h3"} {/if} <{$sSiteTitleTag} class="site-name"><a href="{cfg name='path.root.web'}">{cfg name='view.name'}</a></{$sSiteTitleTag}> <{$sSiteDescriptionTag} class="site-description">{cfg name='view.description'}</{$sSiteDescriptionTag}> </hgroup> {hook run='header_banner_end'} </header>
данный код для главной страницы сайта сделает наиболее важным название сайта и одинаковым по весу описание и заголовки топика.
B. для списка топиков и страницы отдельного топика в topic_part_header.tpl для регулирования заголовка топика (показана часть стандартного кода чтобы было понятно куда вставлять код):
<article class="topic topic-type-{$oTopic->getType()} js-topic"> <header class="topic-header"> {if $bTopicList} {assign var="sTopicTitleTag" value="h2"} {else} {assign var="sTopicTitleTag" value="h1"} {/if} <{$sTopicTitleTag} class="topic-title word-wrap"> {if $oTopic->getPublish() == 0} <i class="icon-tag" title="{$aLang.topic_unpublish}"></i> {/if} {if $oTopic->getType() == 'link'} <i class="icon-share-alt" title="{$aLang.topic_link}"></i> {/if} {if $bTopicList} <a href="{$oTopic->getUrl()}" rel="topic publication">{$oTopic->getTitle()|escape:'html'}</a> {else} {$oTopic->getTitle()|escape:'html'} {/if} </{$sTopicTitleTag}>
этот код будет давать наибольший вес заголовку топика на странице топика, формируя страницу топика более приоритетной перед страницей списка топиков.
- Пример файла robots.txt
User-agent: * Disallow: /login/ Disallow: /registration/ Disallow: /rss Disallow: /search/ Disallow: /blogs Disallow: /people Disallow: /profile/ Disallow: /stream Disallow: /personal_blog Disallow: /feed Disallow: /ajax Disallow: /admin Disallow: /subscribe/ Disallow: /engine/lib$ Disallow: /tag/$ Disallow: /topic/$ Disallow: /my/ Disallow: /templates/skin/__SKIN_NAME__/$ Disallow: /page/$ Disallow: /error/$ Disallow: /settings/$ Disallow: /photoset/$ Disallow: /link/$ Disallow: /question/$ Disallow: /robotstxt/$ Disallow: /message/$ Sitemap: http://__SITE_DOMAIN__.com/sitemap.xml Host: __SITE_DOMAIN__.com
где:
__SKIN_NAME__ — имя используемого шаблона, что там ищет гугл — не понятно, но что-то ищет.
__SITE_DOMAIN__ — имя вашего сайта
Что можно прописывать в этом файле уже много раз обсуждалось и поэтому здесь не рассматривается детально.
Эпилог
Надеюсь, для кого-то данная статья окажется полезной. Ориентирована она, конечно, не на обычных пользователей, а больше на разработчиков, т.к. есть нюансы, которые расписывать очень долго. Несомненным бонусом будет для разработчиков шаблонов, т.к. последнее время начался бум отличных шаблонов для ливстрита, эта заметка (или уже статья?) может помочь сделать шаблоны не только красивыми, а и более понятными для поисковых систем.
кросспост из гида.
Предлагаем проектирование и реализацию проектов чистых помещений для различных производственных процессов.
37 комментариев
Ecли уж так хочется этот плагин, то по карйне мере сделайте так: livestreet.ru/blog/seo/13477.html
И кстати, meta keywords последняя версия TrickyTitle умеет формировать, и гораздо умнее, чем SEO.
На мой взгляд — это лишний плагин, который создаёт только лишний мусор на главной странице сайта и скорее вредит… Ну, или я просто не умею его «готовить».
кнопка Яндекса вообще меня убила, я конечно выключать не стал, а просто исправил js скрипт
rel=«nofollow» не имеет никакого отношения к «индексируемости».
Страница отдает вес по линку всегда, независимо от того есть там rel=«nofollow» или нет. Просто если он есть — вес уходит в никуда, в пустоту. Если его нет — то вес уходит той странице на которую указывает линк. Но уходит всегда.
И так оно работает уже очень давно — с 2009 года.
Более того, поисковики трактуют отсутствие rel=«nofollow» как индикатор доверия. Так что если вы будете ссылаться без rel=«nofollow» на хорошие сайты это принесет пользу. Особенно если страница на которую вы ссылаетесь тематически бъет с вашим ресурсом и имеет сама по себе высокие показатели в поисковиках.
Мораль из этого всего такая — хотите не терять вес страницы — надо вообще убирать линки, rel=«nofollow» с этим никак не поможет. И rel=«nofollow» нужен только для того чтобы помечать линки которые не вызывают у вас никакого доверия. так стоит помечать лишь рекламу, спам и линки из комментариев (которые нет никакого шанса контролировать).
а еще меня маил ру бесит со своим новым браузером с названием мой интернет, это самая тупая хрень которое можно было придумать, тупо скопировать движок хрома и назвать своим именем, а еще испортить чужой браузер гугл хром. Так что вы должны меня понять как я ненавижу такие поступки от
голимыхклассных поисковиков.А если переходы на внешние сайты осуществляются через страницу редиректа — вес уходит?
Принесет пользу нашему сайту, я правильно понял?
Т.е. открытые ссылки на сильные и тематические сайты будут полезны и нам самим?
Сейчас nofollow работает по принципу «не себе не людям». вы всё равно потеряли ранк, но никому его не отдали. Если уж вам так не хочется терять ранк — так уберите линк. А если уберать линк не хочется — то честно отдайте странице по линку заработанный ей вес. И если целевая страница это заслуживает, то это окупится. Потому, что поисковики принимают во внимание гораздо больше факторов чем просто линки.
В дополнение можно ещё сказать что даже Яндексовский тег noindex не распространяет свое действие на линки. И тоже уже давно.
видно из за этого PSNet пришлось прописать
И так оно и будет, исторических примеров масса.
Но нет никаких оснований сомневаться в случае, не новой темы которая многократно подтверждена из разных источников.
сделано так
Сейчас уже не помню, но тоже делал по какому то топику. Это вообще нормально?
По поводу этого кода
я думаю это не обязательно, ибо даже на habr все посты имеют h1, но используя такую технологию есть шанс что это к чему то приведет, поисковики любят когда все красиво оптимизировано.
А дальше думайте сами.
у него только h1 есть на странице — для заголовков топиков, больше ни одного h2-h6 нету
PSNet Спокойной ночи
Для пункта 3 надо очистить кэш в виде .css файлов.
Не надо ничео вырезать и добавлять другого, достаточно просто в файле topic_part_footer.tpl строчку
сделать такой:
т.е. поменять значение
на
а, впрочем, не только на это можно менять…
сделать такой: