SEO Simpla и OkayCMS

therion.kiev

Постоялец
Регистрация
27 Фев 2014
Сообщения
80
Реакции
50
Обе CMS имеют место для развития. Обсудим самые важные моменты в оптимизации этих CMS.
Делимся советами, наработками и тд =)
1) Установка заголовка Last-Modified (только Simpla) (Для просмотра ссылки Войди или Зарегистрируйся)
2) Структурированные данные на сайте (Simpla и Okay).
2.1) Для URL (ака сниппеты). Есть пара видов разметки, но эта работает в поиске Google и Yandex, в отличие от остальных
{* Хлебные крошки Google+Yandex *}
<div id="breadcrumb">
<ol class="breadcrumb patchLine">
<li itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся"><a href="{$config->root_url}/" itemprop="url"><span itemprop="title">Головна</span></a></li>
{foreach from=$category->path item=cat}
<li itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся"><a href="catalog/{$cat->url}" itemprop="url"><span itemprop="title">{$cat->name|escape}</span></a></li>
{/foreach}
{if $brand}
<li itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся"><a href="catalog/{$cat->url}/{$brand->url}" itemprop="url"><span itemprop="title">{$brand->name|escape}</span></a></li>
{/if}
</ol>
</div>
{* @Хлебные крошки *}
 
2.2) Разметка карточек товаров. Рейтинг+фото+описание+цена в выдаче поисковиков.
<div itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
{* Имя товара *}
<div class="heading" >
<h1 data-product="{$product->id}" itemprop="name">{$product->name|escape}{if $product->variant->sku}{/if}</h1>
</div>
....
<div class="rating" rel="{$product->id}" itemprop="aggregateRating" itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
<span>Рейтинг: </span>
<span class="rater-starsOff"><span style="width:{$product->rating*80/5|string_format:"%.0f"}px" class="rater-starsOn"></span></span>
<span class="rater-rating" itemprop="ratingValue" style="display:none;">{$product->rating|string_format:"%.1f"}</span>&#160;(<span class="rater-rateCount" itemprop="reviewCount">{$product->votes|string_format:"%.0f"}</span>
{$product->votes|plural:'голос':'голосів':'голоса'} <span><span itemprop="worstRating" style="display:none;">1</span><span itemprop="bestRating" style="display:none;">5</span></span>)
</div>
.....
<div class="price" itemprop="offers" itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
{if $product->variant->compare_price > 0}
{$econom2 = 100 - ({$product->variant->price}*100 / {$product->variant->compare_price})}
<ul class='list-inline oldPrice' data-toggle="tooltip" title='Стара ціна'>
<li><strike>{$product->variant->compare_price|convert}</strike></li>
<li><small>Скидка {$econom2|convert}%</small></li>
</ul>
{/if}

<input class='amount' type="text" name="amount" value="1" maxlength="4"> <small>x</small>
<meta itemprop="price" content="{$product->variant->price|convert|replace:',':'.'}">{$product->variant->price|convert|replace:',':'.'}
<meta itemprop="priceCurrency" content="{$currency->code|escape}" >{$currency->sign|escape}
<link itemprop="availability" href="Для просмотра ссылки Войди или Зарегистрируйся" >
</div>
.....
<div class="tab-pane fade in active" id="home" itemprop="description">
{if $product->body}{$product->body} {else}<p>Немає опису</p>{/if}
</div>
</div>
{* Расширенные подсказки Google *}
{literal}
<script type="application/ld+json">
{
"@context": "Для просмотра ссылки Войди или Зарегистрируйся",
"@type": "Product",
"name": "{/literal}{$product->name|escape}{literal}",
"image": "{/literal}{$product->image->filename|resize:330:300}{literal}",
"description": "{/literal}{$product->annotation|strip_tags}{literal}",
"mpn": "{/literal}{if $product->variant->sku}{$product->variant->sku}{else}Не вказано{/if}{literal}",
"brand": {
"@type": "Brand",
"name": "{/literal}{$brand->name|escape}{literal}"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{/literal}{$product->rating|string_format:'%.1f'}{literal}",
"reviewCount": "{/literal}{$product->votes|string_format:'%.0f'}{literal}"
},
"offers": {
"@type": "Offer",
"priceCurrency": "{/literal}{$currency->code|escape}{literal}",
"price": "{/literal}{$product->variant->price|convert|replace:',':'.'}{literal}",
"priceValidUntil": "{/literal}{$smarty.now|date_format:'%Y-%m-%d'}{literal}",
"itemCondition": "Для просмотра ссылки Войди или Зарегистрируйся",
"availability": "Для просмотра ссылки Войди или Зарегистрируйся",
"seller": {
"@type": "Organization",
"name": "{/literal}{$settings->company_name}{literal}"
}
}
}
</script>
{/literal}
{* @Расширенные подсказки Google *}
 
2.3) Разметка поисковой формы сайта для выдачи в поисковиках, контакты организации, логотип, страницы в оцсетях (theme_name/index.tpl)
{* Расширенные подсказки Google *}
{literal}
<script type="application/ld+json">
{
"@context": "Для просмотра ссылки Войди или Зарегистрируйся",
"@Graph":
[
{
"@type": "WebSite",
"name": "{/literal}{$settings->company_name}{literal}",
"alternateName": "{/literal}{$settings->site_name}{literal}",
"url": "{/literal}{$config->root_url}/{literal}",
"potentialAction": [{
"@type": "SearchAction",
"target": "{/literal}{$config->root_url}/products?keyword={literal}{keyword}",
"query-input": "required name=keyword"
},{
"@type": "SearchAction",
"target": "android-app://{/literal}{$config->root_url}/products?keyword={literal}{keyword}",
"query-input": "required name=keyword"
}]
},
{
"@type": "Organization",
"name": "{/literal}{$settings->company_name}{literal}",
"url": "{/literal}{$config->root_url}{literal}",
"logo": "{/literal}{$config->root_url}/design/{$settings->theme|escape}/images/images_theme/logo.png{literal}",
"address": {
"@type": "PostalAddress",
"streetAddress": "вул. Головна, 5",
"addressLocality": "Київ",
"addressRegion": "Київ, Україна, 03000",
"postalCode": "03000",
"addressCountry": "Україна"
},
"contactPoint": [{
"@type": "ContactPoint",
"telephone": "+38044000000",
"contactType": "sales"
}],
"email": "{/literal}{$settings->notify_from_email|escape}{literal}",
"sameAs": [
"Для просмотра ссылки Войди или Зарегистрируйся...",
"Для просмотра ссылки Войди или Зарегистрируйся..",
"Для просмотра ссылки Войди или Зарегистрируйся..."
]
},
{
"@type": "GeoCoordinates",
"latitude" : "50.441962",
"longitude" : "30.440097"
},
{
"@type": "Map",
"mapType" : "VenueMap",
"url" :"Для просмотра ссылки Войди или Зарегистрируйся"
}
]
}
</script>
{/literal}
{* @Расширенные подсказки Google *}
{* @Адрес, время работы, контакты организации *}
<div itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
<meta itemprop="name" content="{$settings->company_name}">
<i class="i-phone-squared"></i><span itemprop="telephone">+38 044 0000000</span>, <span itemprop="faxNumber">+38 044 0000001</span><br/>
<small>Приймаємо замовлення: <time itemprop="openingHours" datetime="Mo-Fr 09:00?18:00">Пн-Пт з 9:00 до 18:00, Сб-Нд вихідні</time></small><br />
<small>
<div itemprop="address" itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
<p>{$settings->company_name} Україна, 03000, м.Київ, вул. Головна, 5</p>
<meta itemprop="streetAddress" content="вул. Головна, 5">
<meta itemprop="addressLocality" content="Київ">
<meta itemprop="addressRegion" content="Київ, Україна, 03000">
<meta itemprop="postalCode" content="03000">
<meta itemprop="addressCountry" content="Украина">
</div>
</small>
</div>
{* @Адрес, время работы, контакты организации *}
...
{* Форма поиска по сайту *}
<div itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся">
<link itemprop="url" href="{$config->root_url}/"/>
<meta itemprop="name" content="{$settings->company_name}">
<form itemprop="potentialAction" itemscope itemtype="Для просмотра ссылки Войди или Зарегистрируйся" class="col-xs-24 col-md-9 form-inline searchForm" name="search" action="products" id="search">
<div class="input-group">
<meta itemprop="target" content="{$config->root_url}/products?keyword={literal}{keyword}{/literal}"/>
<input itemprop="query-input" type="text" class="form-control input_search" name="keyword" value="{$keyword|escape}" placeholder="Пошук в каталозі" >
<div class="input-group-btn">
<button type="submit" class="btn btn-primary">Знайти</button>
</div>
</div>
</form>
</div>
{* @Форма поиска по сайту *}
 
2.4) OpenGraph для социальных сетей и не только. Добавляем в тему
{if $module == 'ProductView'}
<meta property="og:url" content="{$config->root_url}{$canonical}"/>
<meta property="og:type" content="article"/>
<meta property="og:title" content="{$product->name|escape}"/>
<meta property="og:image" content="{$product->image->filename|resize:330:300}"/>
<meta property="og:description" content='{$product->annotation|strip_tags}'/>
<link rel="image_src" href="{$product->image->filename|resize:330:300}"/>
{elseif $module == 'BlogView'}
<meta property="og:url" content="{$config->root_url}{$canonical}"/>
<meta property="og:type" content="article"/>
<meta property="og:title" content="{$post->name|escape}"/>
<meta property="og:image" content="{$post->image|resize:400:300:false:$config->resized_blog_dir}"/>
<meta property="og:description" content='{$post->annotation|strip_tags}'/>
<link rel="image_src" href="{$post->image|resize:400:300:false:$config->resized_blog_dir}"/>
{/if}
2.5) Авторство контента на сайте (хххххх и ууууу - ID в соцсети Google Plus. ууууу - ID реального человека, с фото. хххххх - ID страницы "Google Мой Бизнес")
{* Google Plus авторство *}
<link rel="publisher" href="Для просмотра ссылки Войди или Зарегистрируйся">
<link rel="author" href="Для просмотра ссылки Войди или Зарегистрируйся" />
 
3) .htaccess (Тонкая настройка)
3.1)Для HTTPS, важно в плане безопасности (!), влияет на оценку сайта:
# Поддержка STS для https
Header unset Strict-Transport-Security
Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains" env=HTTPS
3.2)Важно для безопасности, влияет на оценку сайта:
# Закрываемся от libwww-perl user-agent (защита)
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* ? [F,L]
3.3)Включаем сжатие, если установлен модуль на сервере
# Gzip сжатие / поддерживается не на всех хостингах
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
<ifmodule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</ifmodule>
</ifmodule>
3.4)Кэширование - уменьшает нагрузку на сайт и ускоряет его работу благодаря использованию кэша браузера
# Кэширование / поддерживается не на всех хостингах
<ifmodule mod_expires.c>
ExpiresActive on

# Cache Images
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"

# Cache other content types (Flash, CSS, JS, HTML, XML)
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 2592000 seconds"
ExpiresByType application/javascript "access plus 2592000 seconds"
ExpiresByType application/x-javascript "access plus 2592000 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
<filesmatch "\.(jpg|jpeg|png|gif|js|css|swf|ico|woff|mp3)$">
ExpiresDefault "access plus 1 month"
Header append Cache-Control "public"
</filesmatch>
</ifmodule>
3.4)Сжатие всего и вся. Модуль от Google, должен быть установлен на сервере. При таких настройках можно набрать 95 баллов в тестах Google Page Speed
# Google PageSpeed Insights
<IfModule pagespeed_module>
ModPagespeed on
ModPagespeedRewriteLevel CoreFilters
ModPagespeedEnableFilters make_google_analytics_async
ModPagespeedEnableFilters prioritize_critical_css
ModPagespeedEnableFilters defer_javascript
ModPagespeedEnableFilters sprite_images
ModPagespeedEnableFilters convert_png_to_jpeg,convert_jpeg_to_webp
ModPagespeedEnableFilters collapse_whitespace,remove_comments
</IfModule>
 
4) Анализ сата, валидация css и html. Проверка SEO url и тд
4.1)
Для просмотра ссылки Войди или Зарегистрируйся - анализ сайта (очень хороший тестер)
Для просмотра ссылки Войди или Зарегистрируйся - анализ ссылок
Для просмотра ссылки Войди или Зарегистрируйся - анализ сайта (сначала данные должны собраться)
Для просмотра ссылки Войди или Зарегистрируйся - рейтинг ключевых слов по странам
Для просмотра ссылки Войди или Зарегистрируйся - тестер сайта, валидатор css и html, бэклинки и тд.
Для просмотра ссылки Войди или Зарегистрируйся - как поисковые роботы видят ваш сайт
Для просмотра ссылки Войди или Зарегистрируйся - поиск битых ссылок
Для просмотра ссылки Войди или Зарегистрируйся - проверка сайта, валидация css/html, проверка метатегов
Для просмотра ссылки Войди или Зарегистрируйся - проверка скорости работы сайта и отклика сервера
Для просмотра ссылки Войди или Зарегистрируйся - анализ производительности сайта
Для просмотра ссылки Войди или Зарегистрируйся - сервис для создания микроразметки
Для просмотра ссылки Войди или Зарегистрируйся - сервис для создания виджетов на сайте
Для просмотра ссылки Войди или Зарегистрируйся - сервис кросспостинга в социальные сети



Пост на Для просмотра ссылки Войди или Зарегистрируйся с кучей полезного материала

Список сервисов нужно пополнять..
 
Последнее редактирование:
Очень хорошая подборка. А есть сайты, на которых это всё внедрено?
 
Очень хорошая подборка. А есть сайты, на которых это всё внедрено?
Да, есть. Стоит упомянуть об нюансе: форма поиска по сайту в выдаче поисковиков доступна только рейтинговым сайтам, которые есть в базе гугла. База это собирается с разных источников, таких как Википедия и другие. Так таже Википедия еще и влияет на выдачу информации о ТМ или бренде. Так что тут губу не стоит закатывать ) Другие, боле приземленные вещи доступны всем =) Дам пару скринов.
d2edd8a1f277e784d8fba7298fe453fc.jpg

002babcd478cdaca3f4f55cf7ebc8715.jpg
6d15795d6280244be5b67b6b89a495d1.jpg

73f3e1404fa9a7125420941330f1b0eb.jpg

46f90dd676794698d41ef6ef5281ad8b.jpg

----------------------------------------------------------------------------------------------------------------------

VK:
56f7b7648892ff81cd77945ef524055b.jpg

FB:
aa5eb9efecfc7f95e397f0329c2b1d95.jpg

П.С: на скринах по выдаче в Yandex есть разница. Причина: микроразметка еще не полностью проиндексировалась. В Яндекса на индексацию много времени уходит, + он критичен к ошибкам в раметке, вроде цены или рейтинга
 
Здравствуйте. Такой вопрос: Установил заголовки Last-Modified по инструкции. На всех страницах, где нужно работает, кроме главной. Как сделать тоже самое для главной страницы и стоит ли вообще?
Также sitemap при проверке вебмастером выдает ошибки:
Неверное значение тега lastmod
Строка 16:

0000-00-00
 
Последнее редактирование:
Там же ничего не меняется. Зачем там тег?
 
Назад
Сверху