Привіт, друзі. Вирішив розпочати цикл публікацій про засеошивание Datalife Engine. При роботі з движком періодично виявляється багато безглуздих недоробок з боку розробників. Тому доводиться шукати та розбиратися з помилками, а потім правити код ядра самому.

Сьогодні ми поговоримо про «правильних» заголовках title. Мета цього посібника:

  • Зробити всі заголовки сайту унікальними і, як результат, позбутися від дублів
  • Поліпшити заголовки з точки зору сприйняття і зовнішнього вигляду
  • Оптимізувати заголовки з точки зору SEO
  • Бонус — уникализировать метаописание description

Для початку нам необхідно оцінити масштаб трагедії і перевірити сайт на наявність помилок. Це можна зробити за допомогою інструментів для веб-майстрів Google, в розділі Оптимізація -> Оптимізація HTML.
Я більш ніж впевнений — помилок там дуже багато!

Пост оновлено 5 травня 2014 року:
Оновлені вносяться зміни в движок, додана підтримка нових версій движка.
Актуально для таких версій DLE: 7.x, 8.x, 9.x, 10.x!

Інші частини SEO-керівництва:
Частина 2, Боротьба з дублюванням контенту — http://alaev.info/blog/post/2400
Частина 3, Особливості внутрішньої оптимізації движка — http://alaev.info/blog/post/3294
Частина 4, Виправлення версії DLE 9.3, 9.4, 9.5, 9.6 — http://alaev.info/blog/post/3513

Уникализация заголовків title сторінок пагинации сайту

Актуальність: Необхідно тільки для версій DLE 7.x, 8.x, 9.0, 9.2.

В панелі вебмайстрів Google можуть міститися помилки у розділі Оптимізація -> Оптимізація HTML -> Повторювані заголовки (теги title), а для того, щоб їх виправити необхідно уникализировать заголовки Title для кожної зі сторінок сайту.

Уникализация title для DLE 9.2

У версії DLE 9.2 існує невеликий баг. Реалізовано додавання нумерації сторінок title виду «Назва сайту — Сторінка 2» або «Назва категорії — Сторінка 2 — Назва сайту». Однак, якщо в налаштуваннях категорії заповнено поле «мета-тег title» нумерація сторінок пропадає.

Які проблеми вирішуємо:

  • Дублювання заголовків сторінок пагинации для категорій сайту, в тому випадку, коли у категорії заповнено поле «мета-тег title» в адмінці

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

ЗАМІНЮЄМО НА:

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]) . $page_extra;

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]) . $page_extra;

Сховати список правок

Тепер при будь-яких настроюваннях, проблеми з дублюванням title категорій не буде.

Уникализация title для DLE 7.x, 8.x 9.0

Які проблеми вирішуємо:

  • Дублювання title сторінок пагинации сайту поза категорій, наприклад, site.ru, site.ru/page/2/, site.ru/page/3/ і т. д.
  • Дублювання title сторінок пагинации для категорій сайту, наприклад, site.ru/category/, site.ru/category/page/2/, site.ru/category/page/3/ і т. д.
  • Дублювання title сторінок пагинации коментарів в рамках однієї новини, коли до новости багато коментарів і вони розбиваються на кілька сторінок, наприклад, site.ru/news_name.html, site.ru/page,1,2,news_name.html#comment, site.ru/page,1,3,news_name.html#comment і т. д.
  • Дублювання title в рамках однієї новини, коли новина розділена на кілька сторінок, наприклад, site.ru/news_name.html, site.ru/page,2,1,news_name.html, site.ru/page,3,1,news_name.html і т. д.

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

if ($nam_e) {
$metatags[‘title’] = $nam_e . ‘ » ‘ . $metatags[‘title’];
$rss_title = $metatags[‘title’];
}
if ($titl_e) $metatags[‘title’] = $titl_e . ‘ » ‘ . $config[‘home_title’];
if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

if ($nam_e) {
$metatags[‘title’] = $nam_e . ‘» ‘ . $metatags[‘title’];
$rss_title = $metatags[‘title’];
}
if ($titl_e) $metatags[‘title’] = $titl_e . ‘» ‘ . $config[‘home_title’];
if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

ЗАМІНЮЄМО НА:

if (intval($_GET[‘cstart’]) > 1 ) {
$page_extra = ‘ » ‘.$lang[‘news_site’].‘ ‘.intval($_GET[‘cstart’]);
} elseif (intval($_GET[‘news_page’]) > 1) {
$page_extra = ‘ » ‘.$lang[‘news_site’].‘ ‘.intval($_GET[‘news_page’]);
} else $page_extra = ;
if ($nam_e) {
$metatags[‘title’] = $nam_e . $page_extra . ‘ » ‘ . $metatags[‘title’];
$rss_title = $metatags[‘title’];
} elseif ($titl_e) {
$metatags[‘title’] = $titl_e . $page_extra . ‘ » ‘ . $config[‘home_title’];
} else $metatags[‘title’] .= $page_extra;
if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]) . $page_extra;

if (intval($_GET[‘cstart’]) > 1 ) {
$page_extra = ‘ » ‘.$lang[‘news_site’].’ ‘.intval($_GET[‘cstart’]);
} elseif (intval($_GET[‘news_page’]) > 1) {
$page_extra = ‘ » ‘.$lang[‘news_site’].’ ‘.intval($_GET[‘news_page’]);
} else $page_extra = “;
if ($nam_e) {
$metatags[‘title’] = $nam_e . $page_extra . ‘» ‘ . $metatags[‘title’];
$rss_title = $metatags[‘title’];
} elseif ($titl_e) {
$metatags[‘title’] = $titl_e . $page_extra . ‘» ‘ . $config[‘home_title’];
} else $metatags[‘title’] .= $page_extra;
if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]) . $page_extra;

Сховати список правок

Цими правками ми додали нумерацію сторінок як для пагинации в рамках головної сторінки і категорій, а так само додали нумерацію в межах однієї публікації, розбитою на кілька сторінок або містить кілька сторінок коментарів.

Уникализация метаописания description сторінок пагинации сайту

Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.

В панелі вебмайстрів Google можуть міститися помилки у розділі Оптимізація -> Оптимізація HTML -> Повторюється метаописание, а для того, щоб їх виправити необхідно уникализировать вміст тега meta name=”description”.

Які проблеми вирішуємо:

  • Дублювання тега meta name=”description” для всіх сторінок пагинации сайту (головна сторінка, категорії, коментарі до новини)

Існує два шляхи вирішення — швидкий і простий варіант або більш гнучке і якісне виконання.

Варіант №1

Перший варіант — «на швидку руку» для тих хто не естет.

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

<meta name=“description” content={$metatags[‘description’]} />

ЗАМІНЮЄМО НА:

<meta name=“description” content={$metatags[‘description’]}{$page_extra} />

Сховати список правок

Тепер на сторінках пагинации категорій і повних новинах на сторінках пагинации коментарів буде унікальний meta description, у нього буде додаватися в кінці “» Сторінка 123”.

Варіант №2

Другий варіант — більш цікавий за рахунок того, що замість “» Сторінка 123” можна вказати щось своє, наприклад, як зробив я — “стор 213”.

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

if (intval($_GET[‘cstart’]) > 1 ){
$page_extra = ‘ » ‘.$lang[‘news_site’].‘ ‘.intval($_GET[‘cstart’]);
} else $page_extra = ;

if (intval($_GET[‘cstart’]) > 1 ){
$page_extra = ‘ » ‘.$lang[‘news_site’].’ ‘.intval($_GET[‘cstart’]);
} else $page_extra = “;

ЗАМІНЮЄМО НА:

if (intval($_GET[‘cstart’]) > 1 ){
$page_extra = ‘ » ‘.$lang[‘news_site’].‘ ‘.intval($_GET[‘cstart’]);
$meta_ext_page = ‘ стор. ‘ .intval($_GET[‘cstart’]);
} else {
$page_extra = ;
$meta_ext_page = ;
}

if (intval($_GET[‘cstart’]) > 1 ){
$page_extra = ‘ » ‘.$lang[‘news_site’].’ ‘.intval($_GET[‘cstart’]);
$meta_ext_page = ‘стор.’ .intval($_GET[‘cstart’]);
} else {
$page_extra = “;
$meta_ext_page = “;
}

$meta_ext_page = ‘стор.’ .intval($_GET[‘cstart’]); — ця частина відповідає за формування «добавки» в meta description. intval($_GET[‘cstart’] — це номер сторінки, а ‘стор.’ — це власне текст.

ЗНАХОДИМО:

<meta name=“description” content={$metatags[‘description’]} />

ЗАМІНЮЄМО НА:

<meta name=“description” content={$metatags[‘description’]}{$meta_ext_page} />

Сховати список правок

Все готово. Тепер повторюваних метаописаний більше не буде.

Поліпшення SEO характеристик заголовків title

Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.

Якщо у нашої публікації не задано «мета-тег title», то за замовчуванням буде виводитися наступний title «Назва публікації — Назва сайту». Або для категорії, коли не задано «мета-тег title», за умовчанням виводиться наступний title «Назва категорії — Назва сайту».

Які проблеми вирішуємо:

  • Не найоптимальніше формування title з точки зору вимог SEO

Ви вірите в міф, що вага кожного слова в заголовку title обернено пропорційна їх кількості, тобто, чим менше слів в title, тим більшу вагу кожне з них буде мати? Якщо ви згодні з цією думкою, то читайте далі.

Оптимізація title для DLE 7.x, 8.x 9.0

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

$metatags[‘title’] = $nam_e . ‘ » ‘ . $metatags[‘title’];

$metatags[‘title’] = $nam_e . ‘» ‘ . $metatags[‘title’];

ЗАМІНЮЄМО НА:

$metatags[‘title’] = $nam_e;

$metatags[‘title’] = $nam_e;

ЗНАХОДИМО:

if ($titl_e) $metatags[‘title’] = $titl_e . ‘ » ‘ . $config[‘home_title’];

if ($titl_e) $metatags[‘title’] = $titl_e . ‘» ‘ . $config[‘home_title’];

ЗАМІНЮЄМО НА:

if ($titl_e) $metatags[‘title’] = $titl_e;

if ($titl_e) $metatags[‘title’] = $titl_e;

Сховати список правок

Тепер замість стандартних title «Назва публікації — Назва сайту» і «Назва категорії — Назва сайту» будуть виводитися «Назва публікації» та «Назва категорії» відповідно.

Оптимізація title для DLE 9.x (крім 9.0), 10.x

Розкрити список правок

Відкриваємо /engine/engine.php

ЗНАХОДИМО:

$metatags[‘title’] = $nam_e . $page_extra . ‘ » ‘ . $metatags[‘title’];

$metatags[‘title’] = $nam_e . $page_extra . ‘» ‘ . $metatags[‘title’];

ЗАМІНЮЄМО НА:

$metatags[‘title’] = $nam_e . $page_extra;

$metatags[‘title’] = $nam_e . $page_extra;

ЗНАХОДИМО:

$metatags[‘title’] = $titl_e . $page_extra . ‘ » ‘ . $config[‘home_title’];

$metatags[‘title’] = $titl_e . $page_extra . ‘» ‘ . $config[‘home_title’];

ЗАМІНЮЄМО НА:

$metatags[‘title’] = $titl_e . $page_extra;

$metatags[‘title’] = $titl_e . $page_extra;

Сховати список правок

Тепер всі категорії будуть містити в title тільки назва категорії, а публікації, відповідно, тільки назву публікації.

Просунута SEO оптимізація заголовків title категорій

Актуальність: Всі версії DLE. Перевірено на 7.x, 8.x, 9.x, 10.x.

Ідея наступна. Уявімо ситуацію, що у нас є категорія, ми просуваємо по певних запитах, отже в налаштуваннях у неї заповнено поле «мета-тег title», і швидше за все цей title у нас довгуватий і не дуже красивий.

Ось живий приклад. Є категорія з ім’ям «Білкові дієти» (це ім’я відображається в speedbar’е, в повній новині, у списку категорій до яких ця новина відноситься і т. д.), а мета-тег title у цієї категорії такий «Білкові дієти — білкова дієта для схуднення, відгуки худевших, рецепти, меню».

Так от, якщо «мета-тег title» заповнений, то в тайтл на сайті йде саме він, а не ім’я. І при наявності пагинации новин в категорії, тайтл нашого сайту буде не дуже гарний, я кажу про те, що для кожної сторінки буде виводитися ось цей довгий засеошенный заголовок і приставка з номером сторінки.

Пропоную зробити так, щоб оптимізований тайтл (поле «мета-тег title» категорії) виводився тільки для першої сторінки категорії, а на всіх інших виводився пристойний короткий тайтл (поле «Ім’я» категорії).

Які проблеми вирішуємо:

  • Не коректне з точки зору SEO формування заголовків title сторінок пагинации сайту

Розкрити список правок

Відкриваємо файл /engine/engine.php

ЗНАХОДИМО:

Для DLE 8.2-9.0

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);

Для DLE 9.x (крім 9.0), 10.x

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’].$page_extra);

if ( $metatags[‘header_title’] ) $metatags[‘title’] = stripslashes($metatags[‘header_title’].$page_extra);

ЗАМІНЮЄМО НА:

//різні title сторінок пагинации, для першої повний title, для пагинации короткий
if ($do == “cat” and $category != and $subaction == ) { //якщо категорія
if ( $metatags[‘header_title’] and ! $page_extra ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);
else $metatags[‘title’] = stripslashes($cat_info[$category_id][‘name’]) . $page_extra;
} elseif ($dle_module == “main”) { //якщо головна сторінка
if ( ! $page_extra ) $metatags[‘title’] = stripslashes($config[‘home_title’]);
else $metatags[‘title’] = stripslashes($config[‘short_title’]) . $page_extra;
} elseif ($metatags[‘header_title’]) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);
//різні title сторінок пагинации, для першої повний title, для пагинации короткий

//різні title сторінок пагинации, для першої повний title, для пагинации короткий
if ($do == “cat” and $category != “and $subaction == “) { //якщо категорія
if ( $metatags[‘header_title’] and ! $page_extra ) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);
else $metatags[‘title’] = stripslashes($cat_info[$category_id][‘name’]) . $page_extra;
} elseif ($dle_module == “main”) { //якщо головна сторінка
if ( ! $page_extra ) $metatags[‘title’] = stripslashes($config[‘home_title’]);
else $metatags[‘title’] = stripslashes($config[‘short_title’]) . $page_extra;
} elseif ($metatags[‘header_title’]) $metatags[‘title’] = stripslashes($metatags[‘header_title’]);
//різні title сторінок пагинации, для першої повний title, для пагинации короткий

Сховати список правок

Зробили? Тоді можете вважати, що ви вичавили максимум можливостей движка DLE!

З повагою, Олександр Алаєв