Канонічні посилання сторінки в Бітрікс

Замовити послугу
5 хв.

Канонічні посилання сторінок на CMS Бітрікс

Що таке канонічна посилання? Коли на вашому сайті один і той же розділ або сторінка зустрічається більше одного разу, вам просто необхідно використовувати канонічні посилання.

При розробці та підтримці сайтів мені вдалося виявити, що дублі сторінок на Бітрікс можуть зустрічатися з різних причин:

Спочатку потрібно визначитися з вибором основної сторінки та її дублів. Коли ми розібралися в цій посилальній каші, то починаємо прописувати у всіх дублях сторінок канонічні посилання на ту сторінку або розділ, дублікатом якої вони є. А на самій основній сторінці можна вказати посилання на себе саму. Це не буде проблемою. Звичайно робити таке в ручному режимі року перед вами всемогутній Бітрікс - безглуздо. Тому автоматизуємо цей процес у його компонентах.

Все це гаразд. Але що робити, коли у нас сайт на різних доменах. Наприклад мобільна версія сайту https://m.riggs.ua та повна версія https://riggs.ua , і є сторінки де багатосторінкові компоненти не розташовані. Тоді в самому шаблоні найкраще встановити цю властивість. Зараз я розповім вам як це зробити.

Так як у нас мобільна і повна версія сайту є дзеркалами, то в шаблоні мобільної версії прописуємо код з використанням функції SetPageProperty і її першим параметром, що передає ідентифікатор властивості сторінки canonical.

Так як за правилами хорошого тону посилання має вказувати не відносний шлях а повний, то нам не важко буде його сконструювати. Тому канонічне посилання збираємо із констант. SITE_HTTP_PROTOCOL - це наша константа, за якою ми вказуємо, чи працює сайт зазвичай по http або захищеному з'єднанню https. Визначити її ми легко можемо в init.php.

Наступна константа SITE_SERVER_NAME - спеціальна бітриксівська, яка береться з налаштувань сайту з поля "URL сервера". У цьому полі ви вказали головну адресу сервера сайту. Ну і в самому кінці нам потрібно отримати відносну адресу поточної сторінки, яку ми можемо отримати за допомогою функції GetCurPage().

Усі! Наша перша канонічна посилання сформована. Вона відпрацьовуватиметься на всіх сторінках мобільної версії шаблону сайту та вказуватиме на оригінал, який знаходиться на головному дзеркалі нашого сайту.

Проблему із статичними сторінками ми вирішили. Беремося за динамічні розділи багатосторінкових компонентів бітрікс. Чому лише за розділи? Тому що в останніх версіях компонентів бітрикс вже реалізовано визначення канонічних сторінок для елементів інфоблоків. Достатньо цей функціонал лише увімкнути в налаштуваннях компонента.

Які компоненти потрібно було правити особисто мені. Звичайно ж комплексний багатосторінковий компонент bitrix: news. Я думаю немає такого сайту, який би не використовував цей компонент. Навіть цю статтю, яку ви зараз читаєте, виведено на екран за його допомогою. Повторюся, що на елементи інфоблоку, такі як ця стаття, канонічні посилання вже працювали стандартними методами бітрікс. Чому не реалізовано функціонал встановлення канонічних посилань розділів інфоблоків бітрікс мені поки що не зрозуміло. Можливо це пов'язано з тим, що на різних сайтах логіка побудови адрес розділів буде складнішою за адреси елементів. Можливо є якісь підводні камені. Але довелося щось з цим робити.

Канонічні посилання розділів у складі списку новин bitrix:news.list

Самостійно реалізувати цей функціонал також досить просто. Перед редагуванням шаблону компонента краще його скопіювати в шаблон сайту. У такому разі наші доробки не злетять під час наступного оновлення системи.

За виведення розділів у шаблоні компонента news відповідає файл section.php, у якому підключається компонент bitrix: news.list. Ось шаблон цього компонента нам і доведеться підправити. Для вирішення найкраще створити окремий файл, що підключається в шаблоні компонента result_modifier.php. У його вміст потрібно записати наступний код, який зображено на зображенні.

Код ставимо за умову параметра компонента. Якщо стоїть налаштування встановлювати канонічне посилання для детальної сторінки, під неї ми будемо ставити і для сторінок розділу. Цей код допоможе нам встановити посилання зі сторінок із увімкненою посторінковою навігацією або на загальний список розділу. У цьому прикладі канонічність нас рятує тільки якщо її треба проставляти в рамках одного компонента. Оскільки посилання отримуємо із налаштувань самого компонента. Але якщо існує ще один компонент новин і виводиться він якимось іншим фізичним шляхом, то на жаль проблему дублів вирішити не вдасться. Тому що отримувати посилання потрібно за налаштуваннями інфоблоку, а цей код цього не робить. Проте обробляється він швидше, без зайвих запитів до бази даних. Але якщо все ж таки потрібно отримувати глобальні посилання з налаштувань інфоблоку, то приклад реалізації такого коду я покажу на прикладі компонента каталогу далі в статті.

Канонічні посилання розділів у компоненті каталогу bitrix:catalog.section.list

Тут я покажу дещо інший спосіб вирішення проблеми. Даний приклад буде трохи правильнішим за попередній, але складніший, оскільки нам не обійтися стандартними даними результату виконання компонента з $arResult. Тут доведеться додатково отримувати дані, щоб отримати глобальні посилання інфоблоку, які використовуються по всьому сайту, а не в рамках одного компонента

У цьому компоненті у виведенні розділів беруть участь два файли section.php і sections.php. У них у свою чергу підключається bitrix:catalog.section.list. У ньому ж і потрібно буде встановлювати якнонічні URL. У шаблоні цього компонента також створюємо стандартний бітриксівський файл result_modifier.php. У ньому прописуємо код, який показаний вище на малюнку. Як бачимо, ми отримуємо посилання через CIBlockSection::GetList(). У цьому випадку наші посилання будуть глобальними. І допоможуть вирішити проблему дублів у рамках усього сайту та його дзеркал.

Сподіваюся мені вдалося подати інформацію доступно та повністю розкрити тему. Якщо будуть якісь питання, то звичайно ж - звертайтеся!

24 березня 2017 (Boudybuilder) Виталий Фантич

Повернення до списку

file_download Завантажити Модуль Маркет
file_download Завантажити Модуль Маркет