Список отделений XML без Ключа #1
В 90% случаев для мелких магазинов нет смысла заключать договор, и от API Новой почты нужен только список Отделений.
Было бы хорошо если кто то у кого есть уже ключ сделать ретрансляцию XML списка отделений. Работы на час делать копию себе и отдавать потом всем кому нужно готов сделать скрипт и выложить. Единственное нужен ключ. Если ни кто не откликнится то придется самому зарегистироваться:)
The text was updated successfully, but these errors were encountered:
Dotrox commented Jan 31, 2014Для получения списка отделений можно обойтись без апи. Список отделений вместе с информацией по ним здесь: http://new.novaposhta.ua/shop/office/getJsonWarehouseList/
Dmi3yy commented Jan 31, 2014Супер спасибо, то что надо :)
boo111 commented Apr 16, 2015а как его на сайт подтянуть?
Dmi3yy commented Apr 16, 2015потом рекомендую кешировать его где - то ибо переодически сервис падает.
сделал себе по крону так:
соответственно сайт работает с локальной копией, а крон раз в сутки обновляет. при этом если файлик не доступен то работаем с последней скаченной версией избегая проблем с неработоспособностью
boo111 commented Apr 16, 2015Что находиться в файле np.json?
Dmi3yy commented Apr 16, 2015это путь куда я локально сохраняю файлик ) ну там после данной процедуры находиться тоже что и по ссылке
boo111 commented Apr 16, 2015Всеравно не пойму каким образом обрабатывается это все. Я же правильно понимаю использовать API Новой почты не нужно? По ссылке мы видим только id отделений и городов. Как заставить их подтянуться? и каким образом они будут отображаться?
Вы извините, мне просто нужны отделения и города НП на сайт подтянуть и не могу никак вникнуть в api Новой почты
Dmi3yy commented Apr 16, 2015По ссылке JSON масив со всеми данными, обрабатывайте его как вам нужно :) конвертнуть JSON в обычный масив нет проблем. API новой почты при использовании данный ссылки вообще не нужно
boo111 commented Apr 16, 2015спасибо буду разбираться
boo111 commented Apr 16, 2015и еще вопрос, ссылка идет на НП, значит массив обновляет список отделений?
Dmi3yy commented Apr 16, 2015Ну да там актуальный список
boo111 commented Apr 16, 2015а на выходе мы получаем список со списком городов, отделений и временем работы в каком виде? что-то типа в виде таблицы?
Dmi3yy commented Apr 16, 2015Пичитайте про json
16 апр. 2015, в 17:35, boo111 notifications@github.com написал(а):
а на выходе мы подучаем список со списком городов, отделений и временем работы в каком виде? что-то типа в виде таблицы?
— Reply to this email directly or view it on GitHub.
Dotrox commented Apr 16, 2015Откройте ссылку в браузере и всё сами увидете. json вполне читабелен.
boo111 commented Apr 16, 2015я видела Я спрашиваю только для того что бы понимать с какой стороны лучше подойти что бы запихнуть все это добро в поля Drupal с возможностью иерархического выбора)
Dotrox commented Apr 16, 2015Вот так выглядит обьект одного отделения:
В ответе сервера Новой почты массив с такими обьектами.
boo111 commented Apr 16, 2015 boo111 commented Apr 16, 2015Ребята, еще скажите плиз. На сколько я вижу у городов нет зависимостей. То есть они сами по себе, никак по регионам не отсортированны?
Dotrox commented Apr 16, 2015У Новой почты в принципе нет группировки по регионам даже на сайте.
Можно отдельно сгруппировать города по регионам (есть даже готовые базы), а потом просто к этим городам подтягивать отделения.
boo111 commented Apr 16, 2015я получаю массив данных. Как мне правильней выдернуть только города и отделения?
Танци с бубном не помогают, по всем возможным примерам не выводиться нечего((
Подскажите, если не трудно..я только в начале пути..
Dotrox commented Apr 16, 2015И таким же образом можно получить любой элемент, который есть на скрине выше.
Кстати, а зачем там у вас print перед var_dump?
boo111 commented Apr 16, 2015А что такое $warehouse? вижу его только в адрессной строке
foreach($a as $warehouse) print $city;
Нечего не выводит(
Dotrox commented Apr 16, 2015Тогда лучше спросить, что такое foreach :) Цикл foreach по очереди берёт каждый єлемент массива $a и помещает в переменную $warehouse. Поскольку $a двухмерный массив, в $warehouse тоже будут массивы, но одномерные, каждое заполнение переменной соответствует одному складу.
Не работает, вероятно, потому, что там есть ещё один уровень в массиве $a. Попробуйте так:
Если выводить $city за пределами цикла, там будет только последнее значение, а внутри цикла выведет все города.
boo111 commented Apr 16, 2015воооот, а я кручусь вокруг 'response', но так не выводила.. Спасибо большое, все усвоила!
bbiemme commented Apr 17, 2015Здравствуйте. Тоже Ваш совет помог мне. А как например сделать список городов с отделениями по возрастанию? С asort у меня не получается.
воооот, а я кручусь вокруг 'response', но так не выводила.. Спасибо большое, все усвоила!
— Reply to this email directly or view it on GitHub #1 (comment) .
Dotrox commented Apr 17, 2015asort не будет работать на оригинальном массиве из ответа, поскольку у него все значения тоже массивы. Вам нужно отсортировать по городам или по отделениям?
bbiemme commented Apr 17, 2015по городам а уже через знак "-" возле города вывести отделения
asort не будет работать на оригинальном массиве из ответа, поскольку у него все значения тоже массивы. Вам нужно отсортировать по городам или по отделениям?
— Reply to this email directly or view it on GitHub #1 (comment) .
Dotrox commented Apr 17, 2015А чтоб получить отделения для отдельного города потом:
В результате получим список в формате: Название города - название отделения
bbiemme commented Apr 17, 2015Спасибо но у меня такой код и ничего не выводит. пустая страница
$string = file_get_contents (' http://novaposhta.ua/shop/office/getjsonwarehouselist'); $a = json_decode ($string, true); $warehouse_by_city = array(); foreach($a['response'] as $warehouse) ksort($warehouse_by_city); //сортируем по городам
$warehouse_by_city = array();foreach($a['response'] as $warehouse)< $warehouse_by_city[$warehouse['city']][] = array( 'city' => $warehouse['city'], //название города 'address' => $warehouse['address'] //адрес отделения ); >ksort($warehouse_by_city); //сортируем по городам
А чтоб получить отделения для отдельного города потом:
$city_name = 'название города';foreach($warehouse_by_city[$city_name] as $warehouse)
В результате получим список в формате: Название города - название отделения
— Reply to this email directly or view it on GitHub #1 (comment) .