gadget писал(а):
К этому коду надо добавить js, который будет получать город посетителя и отображать его в input id="city_input"
Как это делается можно посмотреть в product.js. Строки 22-63. Там основная логика получения города собрана в InteractiveDeliveryMap и возвращается в его событии onPickupCity.
Там почему-то JS-код работает исключительно только со страницей товара, а на других страницах не срабатывает.
К примеру убираем со страницы продукта блок
Код:
<div class="city">
<div>Ваш город:</div>
<div>
<i class="powericon-spinner powericon-pulse" id="city-spinner"></i>
<a href="#" class="dotted" id="city"></a>
<div class="autocomplete" style="display: none;">
<input id="city_input" type="search" spellcheck="false" placeholder="Город">
</div>
</div>
</div>
и вставляем его в _header.tmpl. Подключаем все скрипты (product.js, api-maps.yandex.ru, idm.js и т.д.).
Заходим на любую страницу каталога и видим, что вместо названия города крутится спиннер. Но если далее перейти на страницу товара, то город будет определятся. При этом если снова перейти на любую страницу каталога, то город также отображается (кешируется, видимо, после страницы товаров).
Так как на странице каталога вместо города крутится спиннер, то есть строка кода <i class="powericon-spinner powericon-pulse" id="city-spinner"></i>, то получается, что функция
Код:
function displayCity(city) {
$('#city-spinner').hide();
$('#city').text(city)
if ($('.autocomplete').css("display") == "none")
$('#city').css('display', 'inline');
}
не срабатывает (строка 140 в product.js).
Но ведь срабатывать она должна по условию
Код:
if (city)
displayCity(city);
Получается, что
Код:
var city = getCookie('idm_city');
также не срабатывает, в var данные на других страницах, кроме страниц товаров, не передаются.