Геотаргетинг

Это блок который из модуля из видео? Так у меня его нет. Ссылка бала на ютубе, а сейчас ее нигде нет.

Это блок который из модуля из видео? Так у меня его нет. Ссылка бала на ютубе, а сейчас ее нигде нет.

Нет это стандартный блок

Дизайн - Макеты - Новый блок - блок с типом "Шаблон" - шаблон: Узнать стоимость доставки

Да-а, есть над чем подумать.

Тут применение может быть шире чем просто стоимость доставки.

А можно ли все-таки ссылку на модуль определения стоимости доставки из видео, а то начал с экрана и где-то опечатка, теперь не могу найти.

У меня есть готовый от red , попробую залить на днях, не спешите.

А вообще, город достаточно запихнуть в данные покупателя в сессии и всё само подхватится.

Тоже было бы интересно! Ждем с нетерпением :)

Добрый день.

Даниил, куда лучше писать данные в сессию. Я так понял $_SESSION['cart']['user_data'] - это основной массив с данными по местоположению покупателя, но вот модуль shipping_estimation пишет их в $_SESSION['customer_loc'] , зачем?

И да, функция fn_set_session_data пишет только в $_SESSION['settings'] и по этому не подходит.

И еще модуль rus_sities тут влезает, у него свое $_SESSION['customer_loc_rus_city']

Куда писать то?

И тут еще есть вариант, получить массив городов из rus_sity и к полученному по ip городу применить in_array Если есть он в массиве, то выводить. Но я думаю не будет ли все тормозить, список то большой.

И модуль доставки из видео не работает, функция ajax не запускается, можно ссылку на готовый? HELP!

Добрый день.

Даниил, куда лучше писать данные в сессию. Я так понял $_SESSION['cart']['user_data'] - это основной массив с данными по местоположению покупателя, но вот модуль shipping_estimation пишет их в $_SESSION['customer_loc'] , зачем?

И да, функция fn_set_session_data пишет только в $_SESSION['settings'] и по этому не подходит.

И еще модуль rus_sities тут влезает, у него свое $_SESSION['customer_loc_rus_city']

Куда писать то?

И тут еще есть вариант, получить массив городов из rus_sity и к полученному по ip городу применить in_array Если есть он в массиве, то выводить. Но я думаю не будет ли все тормозить, список то большой.

И модуль доставки из видео не работает, функция ajax не запускается, можно ссылку на готовый? HELP!

Пишите туда, где будет работать :)

Вот ссылка на готовый модуль

https://github.com/dani32iz/cscart_lessons/tree/ship_rates

Пишите туда, где будет работать

Да везде работает. Остановился на $_SESSION['customer_loc']

Вот ссылка на готовый модуль

Спасибо огромное!

И еще такая неожиданная проблема возникла.

При работе init.post.php

Пользователь пытается войти или выйти, вот такая ошибка: session_start(): Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\cscartlocal\app\lib\vendor\smarty\smarty\libs\sysplugins\smarty_internal_templatebase.php:359)

Я так понял сессия очищается и заводится новая и что-то идет не так. Может видели такое, и знаете как это побороть?

Код init.post.php

<?php

if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }

use Tygh\Http;
use Tygh\Registry;
use Tygh\Session;
use Tygh\Storage;

fn_define(‘ESTIMATION’, true);

$customer_location = empty($_REQUEST[‘customer_location’]) ? array() : $_REQUEST[‘customer_location’];

$lang = DESCR_SL;
$user_data = $_SESSION[‘cart’][‘user_data’];
$ip = $_SESSION[‘auth’][‘ip’];
//$ip = ‘87.76.12.115’;
$url = ‘http://api.sypexgeo.net/’;
$param = array(
‘ip’ => $ip
);
$extra = array(
‘timeout’ => 3
);

$result = Http::get($url, $param, $extra);
$location = json_decode($result, true);

$customer_location = array();
if (isset($user_data[‘s_country’]) && empty($user_data[‘s_country’])) {
$customer_location[‘s_country’] = $location[‘country’][‘iso’];
}
if (isset($user_data[‘s_country_descr’]) && empty($user_data[‘s_country_descr’])) {
$customer_location[‘s_country_descr’] = $location[‘country’][‘name_’. $lang];
}
if (isset($user_data[‘s_state’]) && empty($user_data[‘s_state’])) {
$customer_location[‘s_state’] = substr($location[‘region’][‘iso’], 3);
}
if (isset($user_data[‘s_state_descr’]) && empty($user_data[‘s_state_descr’])) {
$customer_location[‘s_state_descr’] = $location[‘region’][‘name_’. $lang];
}
if (isset($user_data[‘s_city’]) && empty($user_data[‘s_city’])) {
$customer_location[‘s_city’] = $location[‘city’][‘name_’. $lang];
}

if (!empty($customer_location)) {
$_SESSION[‘customer_loc’] = $customer_location;
}

Tygh::$app[‘view’]->assign(‘customer_location’, $user_data);
Tygh::$app[‘view’]->display(‘addons/geo_targeting/blocks/geo_location.tpl’);

Доброе время суток

Пытаюсь сделать ввод города пользователем, если город определился неверно.

Показываю Pop-up окно - все норм.

А в окне нужно показать поле ввода города с автозаполнением, по аналогии со вторым шагом оформления заказа, где вводится этот город.

Но не получается, у меня автозаполнение не работает. Есть вроде контроллер в модуле city и там режим автозаполнения. Вызываю его, но и он не работает.

Где копнуть?

Нашел 2 файла profile_fields.pre.tpl и profile_fields.post.tpl, скопировал из них скрипты в свою tpl

теперь получилось следующее:

есть popup окно с полем ввода города. Когда начинаю набирать город, появляется список городов по первым буквам, но .... он расположен за всплывающим окном!!! его еле видно этот список. Как его поднять??? сделать видимым нормально???

И второе, не получается теперь нигде сохранить выбранный город.

есть popup окно с полем ввода города. Когда начинаю набирать город, появляется список городов по первым буквам, но .... он расположен за всплывающим окном!!! его еле видно этот список. Как его поднять??? сделать видимым нормально???

С этим разобрался - написано же в этой же теме млин.

Копаем с сохранением города.

Даниил, очень не хватает ваших завершающих видео по геотаргетингу.

Задача весьма упростилась. Нужно при клике на городе предоставить пользователю поле ввода города. Именно ввода, а не выбора. Ввод с автокомплитом по списку городов (аналогия с вводом города при оформлении заказа). После ввода города, он пишется в сессию, куки и обновляется в блоке.

Вроде все просто, но уже замучался копаться.

Разобрался и с передачей города, например, в смарти.

Но вот теперь встал на обновлении блока с городом в шапке сайта. Пробовал вот так:

Registry::get('view')->display('путь_к_шаблону_который_будет_обновлятся_от_папки_templates.tpl');

не помогает. В общем всяко еще пробовал, но не работает. Обновляется только при обновлении страницы через F5 например

Подскажите, как обновить блок с городом?

Всё разобрался. Всем спасибо.

Всё разобрался. Всем спасибо.

Мысли вслух очень часто помогают придти к решению, поэтому, пишите дальше.

Да, Даниил, согласен.

Вот еще такая странность, которую я не в силах побороть.

В popup окне есть формаю Её код

	
		
		

{include file="buttons/button.tpl" but_name="dispatch[my_select_city1.view]" but_text=__("submit") but_role="submit" but_meta="ty-btn__primary ty-btn__big cm-form-dialog-closer ty-btn"}

Так вот, в этом случае не отображаются пункты самовывоза на карте при вызове контроллера pickup.view (просто пусто и все, карты нет тоже)

но если из класса поля ввода города убрать cm-geolocation-city то все пункты самовывоза отображаются корректно.

Что за конфликт такой и как это исправить?

P.S. Жаль, что вы уходите. Не потеряется ли та оперативность ответов, которая была?