Tools
Tools — набор функций для адреса страницы и готовности документа.
Tools.url
Разбор текущего адреса.
| Свойство или метод | Что возвращает |
|---|---|
| location | window.location |
| keys | Параметры query. У каждого ключа массив значений |
| search | Собранная строка query, начиная с ? |
| selectedFilter | Фильтр коллекции: characteristics, options, properties, price и остальные параметры |
| collection | Permalinks сегмента collection в пути |
| collectionFilter | Второй сегмент после collection, если он есть |
| getKeyValue(key) | Первое значение параметра или false |
| getKeysValue(keys) | Объект только с переданными ключами |
| collectSearch(keys) | Собрать query из объекта параметров. Без аргумента берётся keys |
var lang = Tools.url.getKeyValue('lang');
var filter = Tools.url.selectedFilter;
Значения true и false в query читаются как булевы.
Tools.getLinkCurrentLang
Добавляет или заменяет параметр lang в ссылке на текущий язык магазина. Внешние адреса другого сайта не меняются. Якоря и ссылки, в которых язык уже есть, этим методом обычно не обрабатывают.
var href = Tools.getLinkCurrentLang('/collection/all', Tools.url.getKeyValue('lang'));
Ссылки внутри элемента data-multi-lang="true" получают текущий язык сами: у ссылки не должно быть lang в адресе, и она не должна начинаться с #.
<div data-multi-lang="true">
<a href="/collection/all">Каталог</a>
</div>
Tools.domReady
Вызвать функцию после DOMContentLoaded. Если страница восстановлена из кэша браузера, функция вызывается ещё раз.
Tools.domReady(function () {
console.log('Страница готова');
});
Tools.translit
Транслитерация строки. Пробелы и знаки препинания заменяются на _.
var translit = new Tools.translit();
translit.replace('Категория товара');
Человекочитаемые адреса фильтров
Если в настройках страницы включены человекочитаемые URL, фильтр коллекции подставляет в адрес permalink свойств и характеристик вместо числовых id.
Признак включения:
var settings = Shop.config.get('human_readable_urls');
var enabled = settings && settings.human_readable_urls;
Для обычной формы фильтра, без AJAX, данные коллекции можно положить в атрибут data-collection. Значение — JSON ответа коллекции со статусом ok. Если атрибута нет, данные берутся из collectionData или collection на странице, а затем из запроса текущей коллекции.
AJAX-фильтр использует те же адреса, когда настройка включена.