Микроразметка

https://yandex.ru/support/webmaster/schema-org/what-is-schema-org.xml
https://yandex.ru/support/webmaster/supported-schemas/address-organization.xml

Валидатор микроразметки

https://webmaster.yandex.ru/microtest.xml


Установка нескольких счетчиков

Метрика

https://yandex.ru/support/metrika/code/counter-initialize.xml

Google

https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers


Viewport'ы

<meta name="viewport" content="width=1350" />
<meta name="viewport" content="width=device-width, initial-scale=1">
https://developers.google.com/speed/docs/insights/ConfigureViewport?hl=ru

Формат месяца в русский

$month = array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");

GEO

Автокомплит местоположения от google

https://google-developers.appspot.com/maps/documentation/javascript/examples/full/places-autocomplete-addressform?hl=ru
Пример минимальной интеграции

Ссылки

SEO - модуль

https://github.com/dmdark/helper_module

WYSIWYG-редакторы

Генератор паролей

Транслит в латиницу

Ответ сервера

Whois-сервисы

jQuery-плагины


Программы

Программа сжатия картинок по списку ссылок (Staf4)

Проверка ссылок

txt2link.php


Операции над списком урлов

Поиск текста
Поиск текстов
Сравнение мета-тегов
Поиск заголовков сервера
Добыча данных


Для сео-модуля

Создавалка файлов сео-модуля
Мержер файлов сео-модуля
Поиск конфликтов файлов сео-модуля


Для php-сео-массивов

Создавалка seo-php-массивов
Мержер php-массивов


Geo

Определение гео-координат по местоположению (Яндекс.Карты)


MD5


Получение информации о youtube-видео (Schema.org)

Отправить


Редирект на www по https на TimeWeb

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC,OR]
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://www.site.ru/$1 [R=301,L]

Правильный редирект для https протокола на TimeWeb

#Устанавливаем переменную окружения
<IfModule mod_setenvif.c>
	SetEnvIf X-HTTPS 1 SITE=https://site.ru
</IfModule>

#Или так

RewriteCond %{HTTP:X-HTTPS} ^1$
RewriteRule ^ - [E=SITE:https://site.ru]

#Или так (с редиректом на домен без www)

RewriteCond %{HTTP:X-HTTPS} ^1$
RewriteRule ^ - [E=SITE:https://site.ru]
RewriteCond %{HTTP_HOST} ^www\.site\.ru
RewriteRule ^(.*)$ %{ENV:SITE}/$1 [R=301,L]

#Собственно, сам редирект

RewriteRule ^old-url$ %{ENV:SITE}/new-url [R=301,L]

Правильный редирект для https протокола на reg.ru

RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^ - [E=SITE:https://site.ru]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^ - [E=SITE:http://site.ru]

RewriteRule ^old-url$ %{ENV:SITE}/new-url [R=301,L]

Редирект с http на https nic.ru

RewriteCond %{ENV:HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.site\.ru$ [NC]
RewriteRule (.*) https://www.site.ru/$1 [R=301,L]

RewriteRule ^old-url$ /new-url [R=301,L]

Редирект с http на https hts.ru

RewriteEngine On
RewriteCond %{HTTP:X-SSL} !^yes$
RewriteRule (.*) https://yourdomain.com/$1 [R=301,L]

Кэширование статики

FileETag MTime Size
<IfModule mod_expires.c>
	<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
		ExpiresActive on
		ExpiresDefault "access plus 7 day"
	</filesmatch>
</IfModule>

<IfModule mod_setenvif.c>
	BrowserMatch "MSIE" force-no-vary
	BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
</IfModule>

GZIP компрессия

#GZIP compression + htaccess deflate
# -----------------------------------------------------------------------
# Defining MIME types to ensure the web server actually knows about them.
# -----------------------------------------------------------------------
<IfModule mod_mime.c>
	AddType application/javascript          js
	AddType application/vnd.ms-fontobject   eot
	AddType application/x-font-ttf          ttf ttc
	AddType font/opentype                   otf
	AddType application/x-font-woff         woff
	AddType image/svg+xml                   svg svgz
	AddEncoding gzip                        svgz
</IfModule>

Сжатие потока вывода

# -----------------------------------------------------------------------
# Compressing output.
# -----------------------------------------------------------------------
<IfModule mod_deflate.c>
	AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
	AddOutputFilterByType DEFLATE application/javascript
	AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
	AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
	AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>

Кэширование изображений (установка заголовков)

<IfModule mod_expires.c>
	ExpiresActive On
	ExpiresDefault "access plus 1 month"
	ExpiresByType image/gif "access plus 2 months"
	ExpiresByType image/jpeg "access plus 2 months"
	ExpiresByType image/x-icon "access plus 2 months"
	ExpiresByType image/png "access plus 2 months"
	ExpiresByType application/x-shockwave-flash "access plus 2 months"
	ExpiresByType text/css "access plus 2 months"
	ExpiresByType text/javascript "access plus 2 months"
	ExpiresByType application/javascript "access plus 2 months"
	ExpiresByType application/x-javascript "access plus 2 months"
	ExpiresByType text/html "access plus 2 months"
	ExpiresByType application/xhtml+xml "access plus 2 months"
</IfModule>

Инклуд jQuery на страницу

var jq = document.createElement('script'); jq.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; document.getElementsByTagName('head')[0].appendChild(jq);

PageSpeed Insights - вывод картинок для сжатия

var r = "";
$("div:has(>a[href='https://developers.google.com/speed/docs/insights/OptimizeImages']):nth-of-type(1) > ul > li > span").each(function(k,v){
	r += $(v).attr('data-title') + "\r\n";
});
console.log(r);

Заполнение полей на странице подготовленным массивом данных

// массив данных для заполнения
var arr = ['val1', 'val2', 'val3'];
// перебор и поиск элементов для заполнения
$('#tbl_iblock_list_40f45ff55324b68f136543eb36912d89 > tbody > tr').each(function(key, elm){
	$(elm).find('td:last-of-type > input[type=text]').val(arr[key]);
});

Подгружаем статьи

после вывода статей:
$('.stati_block .item').each(function(index){
	if (index == 4) $(this).addClass('last');
	if(index >= 5) {$(this).hide()};
})

основной скрипт

$(window).scroll(function(){
	if ($('.stati_block').length && $('.stati_block .item.last').length) {
		var last_bottom = $('.stati_block .item.last').offset().top + $('.stati_block .item.last').outerHeight();
		var window_bottom = $(window).scrollTop() + $(window).height();
		if((window_bottom - last_bottom) > 300) {
			$('.stati_block .item.last').removeClass('last').next('.item').addClass('last').fadeIn(400);
		}
	}
})

Фильтры: яркость по хаверу

.price_block .choose img:hover {
	filter: brightness(1.05);
	-webkit-filter: brightness(1.05);
	-moz-filter: brightness(1.05);
	-o-filter: brightness(1.05);
	-ms-filter: brightness(1.05);
}

Фильтры: подмена цвета

.price_block .choose img:hover {
	filter: hue-rotate(95deg);
}

Placeholders

::-webkit-input-placeholder {color: #696969;}
:-moz-placeholder {color: #696969; opacity:  1;}
::-moz-placeholder {color: #696969; opacity:  1;}
:-ms-input-placeholder {color: #696969;}

Убираем повторяющиеся слеши

$uri = explode("?",$_SERVER['REQUEST_URI'],2);
if(preg_match('%/{2,}%',$uri[0])) {
	$uri[0] = preg_replace('%/{2,}%', '/', $uri[0]);
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: ".implode("?", $uri));
	exit();
}

Редирект на strlower

$uri = explode("?",$_SERVER['REQUEST_URI'],2);
if ($uri[0] != strtolower($uri[0])) {
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: ".strtolower($uri[0]).(isset($uri[1])?"?".$uri[1]:""));
	exit();
}

или (не проверял)

$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if($uri != strtolower($uri)){
	header('Location: '.strtolower($uri).(!empty($_SERVER['QUERY_STRING'])?'?'.$_SERVER['QUERY_STRING']:''), true, 301);
	exit();
}

Склонение числительных

function declOfNum(number, titles) {
	cases = [2, 0, 1, 1, 1, 2];
	return titles[(number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5]];
}
declOfNum(days_num,['день','дня','дней']);


Стрелочка Вверх ( ) в psd: скачать

Утвержденные правила отдела разработки


Оценка задач по платному подбору изображений

Осмыслить задание по подбору. Понять его так чтобы быть готовым самим сделать подбор. Если не понятно то запросить в задаче.
Стоимость считается:
1-3 изображения 50 рублей за штуку
4-10 изображений 40 рублей за штуку
от 11 изображений 30 рублей за штуку
Стоимость по отрисовке иконок значков или дизайна - согласуем предварительно со мной или отдаем на оценку мне по старой схеме.
В задаче отдельным сообщением на текущего оптимизатора пишем:
“Платный подбор изображений ХХ штук. Стоимость работ УУ рублей.”
Пишем письмо на адрес Катерина Михайлова <13katrina.angel13@gmail.com> с копией на меня.
Тема письма: домен сайта, количество изображений
Копируем текст задачи касающийся работы Кати. (лишний текст не страшно)
Снизу пишем стоимость из пункта 2 и срок 5 рабочих дней.
Письма можно группировать по проекту
Пример письма https://yadi.sk/i/v0PhEfy-k6RCM


Не смог выполнить задачу

По "нешмогла" пишем в личку:
0. номер версии ТЗ
1. УРЛ тз в формате http://traffic.matik.ru/#/tz/335
2. Пункт ТЗ Название
3. Время в оценке
4. Время потраченное


Размещение счетчиков

Яндекс.Метрика

размещается сразу после открывающего тэга body (или максимально высоко внутри)

Google Analytics

размещается непосредственно перед закрывающим тэгом </head>

Google Experiment

размещается только на исходной странице (index.html / index.php) сразу после открывающего тэга <head>

Google Remarketing

размещается непосредственно перед закрывающим тэгом </body>