Оформление
Метод rankLinks
rankLinks работает с ранжированием ссылок: категориями меню, статьями блога, баннерами. Он умеет две вещи:
- вернуть лучшие страницы набора — для блока без своего списка, например «читайте также»: сайт передаёт только число мест в блоке;
- упорядочить свои ссылки — меню или список статей, который сайт уже нарисовал: ваши значения возвращаются те же, в новом порядке.
Что такое ранжирование ссылок, как задать набор страниц и цель, описано на странице Ранжирование. Ответ, показы, клики и статусы устроены так же, как у rankProducts.
Вызов
js
// лучшие страницы набора, кроме текущей
const best = await ninja('rankLinks', { rankingId: 'RANKING_ID', limit: 3 })
// свои ссылки в новом порядке
const menu = await ninja('rankLinks', { rankingId: 'RANKING_ID', items: links })Метод можно вызывать сразу после ninja('init', …): он не ждёт полной загрузки страницы и остальных модулей скрипта.
| Параметр | Обязательный | Что передать |
|---|---|---|
rankingId | Да | Идентификатор ранжирования ссылок из редактора в кабинете |
limit | Вместо items | Сколько лучших страниц набора вернуть — столько мест в блоке, от 1 до 2000 |
items | Вместо limit | Массив ссылок или массив групп ссылок (массив массивов): элементы страницы, объекты или адреса |
getUrl | Нет | Функция, которая возвращает адрес ссылки из вашего значения |
getId | Нет | Функция, которая возвращает свой ключ ссылки для статистики. По умолчанию ключ — адрес |
timeout | Нет | Сколько миллисекунд ждать ответа с момента вызова. По умолчанию 5000. Не успели — исходный список без изменений, а вместо лучших страниц пустой |
Передайте ровно одно из двух: items или limit.
Без getUrl адрес берётся так:
- элемент
<a>или<area>— егоhref; - другой элемент, например пункт меню
<li>, —hrefпервой ссылки внутри него; переставляется сам пункт; - строка — это и есть адрес;
- объект — поле
url.
Адрес разбирается относительно текущей страницы, поэтому относительная и полная ссылка на одну страницу — одна и та же ссылка.
Результат
js
{
status: 'ranked',
items: [
{ item: '/blog/kak-vybrat-noutbuk/', id: '/blog/kak-vybrat-noutbuk/', score: 0.42, index: 0 },
{ item: '/blog/obzor-planshetov/', id: '/blog/obzor-planshetov/', score: 0.17, index: 1 }
]
}С limit в items приходят лучшие страницы набора по порядку: item и id — путь страницы без домена. Текущей страницы среди них нет. Подпись ссылки сайт берёт у себя по этому адресу.
С items ответ повторяет форму запроса, как у rankProducts: на массив приходит массив, на массив групп — массив групп. item — ваше значение без изменений, id — адрес ссылки (полный, как его видит браузер) или ваш ключ из getId. Ссылка вне набора получает оценку ближайшего раздела сайта; ссылка без адреса остаётся без балла (score: null) и встаёт после остальных в исходном порядке.
| Поле | Смысл |
|---|---|
item | Ваше значение без изменений или путь страницы при limit |
id | Ключ ссылки, который ушёл на сервер и в статистику |
score | Балл ранжирования: чем выше, тем раньше. Сравним только внутри одной группы одного ответа. null — у ссылки нет балла |
index | Позиция значения в исходной группе или место страницы в ответе при limit |
Порядок ссылок одинаков для всех посетителей, а ответ на limit отличается только тем, что из него убрана текущая страница.
Показы, клики и A/B-тест
Методы отслеживания те же, что у rankProducts: после фактического отображения вызовите result.trackImpression(groupIndex), клик передавайте по index из результата — result.trackClick(index, groupIndex). Подробности — в разделе Показы, клики и A/B-тест.
Контрольная группа A/B-теста получает ответ без ранжирования: свои ссылки — в исходном порядке, а на limit — пустой список. Пустой список означает «оставьте обычный блок сайта».
js
const { items, trackImpression, trackClick } = await ninja('rankLinks', { rankingId: 'RANKING_ID', limit: 3 })
if (items.length) {
renderReadAlso(items.map(({ item }) => item), (index) => trackClick(index))
trackImpression()
}Статусы
Статусы те же, что у rankProducts, кроме catalogUnavailable: ссылки каталог не читают. При любом статусе, кроме ranked, промис не отклоняется: свои ссылки возвращаются в исходном порядке без баллов, а на limit приходит пустой список. Пустой список со статусом ranked — контрольная группа или модель, которая ещё не обучилась.
Промис отклоняется только при неверных аргументах — без rankingId; переданы и items, и limit или ни одного; limit не целое число или меньше 1; items не массив или в нём смешаны группы и отдельные ссылки; getUrl или getId не функция; timeout не число или меньше 1 — и при вызове до init.
Если getUrl или getId выбросит ошибку на какой-то ссылке, эта ссылка останется без балла: остальные будут упорядочены.