Drupal + КЛАДР

Аватар пользователя antazy antazy 3 июля 2011 в 18:08

Всем привет,

была нужда сделать в таксономии базу всех регионов и городов.

Взял Классификатор адресов России (КЛАДР) здесь и сделал.

Выглядит примерно так - [img]

Использование:

  1. Устанавливаем
  2. Выбираем куда заливать /admin/settings/kladr
  3. Нажимаем кнопку LOAD /admin/build/kladr , если не всё заливается сразу (там 200000 строк), нажимаем ещё раз

Если решили заливать в другой vocablary:

  1. Создаем или Выбираем куда заливать /admin/settings/kladr
  2. Нажимаем кнопку "Начать загрузку сначала"
  3. Нажимаем кнопку LOAD /admin/build/kladr , если не всё заливается сразу (там 200000 строк), нажимаем ещё раз

Теперь подробнее:

  • Требуется "extension=dbase.so"
  • Вставляет два уровня терминов, первый - level1 из KLADR.DBF, второй населенные пункты от туда же.
  • Использует Batch API (Загрузку базы можно прерывать)

Версия 0.1
Возможны планы развития: интеграция с http://drupal.org/project/location , http://drupal.org/project/addresses и т.п.

Ну, и как обычно, disclaimer, используйте только на Ваш страх и риск.

ВложениеРазмер
Иконка изображения drupal-kladr.png543.36 КБ
0 Thanks

Комментарии

Аватар пользователя Anton1 Anton1 3 июля 2011 в 19:06

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

В кладре все до домов.

Аватар пользователя antazy antazy 3 июля 2011 в 19:33
"<a href="mailto:v1adimir@drupal.org">v1adimir@drupal.org</a>" wrote:

И оно там до какого уровня, улица-дом?

>> первый - level1 из KLADR.DBF, второй населенные пункты
Два уровня: регионы и областные/районные центры.

Как таковой задачи сделать вплоть до домов не было, но в какой-нибудь из следующих версии можно будет реализовать все 6 уровней.

"Anton1" wrote:

просто задолбался с изменением статусов городов когда они по уровням прыгают

Если честно, на разбор с КЛАДР у меня ушла половина времени. Но сейчас понимаю, что вполне нормальная классификация, и навряд ли можно придумать другую, что бы учесть всю специфику территориального деления такой большой страны как у нас.

Аватар пользователя Nikit Nikit 5 июля 2011 в 9:29

Я своё отменяю, раз уже начали, пусть здесь разовьют до поддержки известных контр.модулей.
Нужно еще добавить какой именно регион (город, и т.д.) импортит, не всегда вся россия нужна.

Аватар пользователя sashken sashken 5 июля 2011 в 15:13

Спасибо за модуль! Тоже интересует: все уровни для импорта с возможностью выбора + возможность выбора региона/города для импорта.

Аватар пользователя Anton L. Safin Anton L. Safin 7 июля 2011 в 8:09

Знакомая задача...

В свое время тоже пытался использовать различные базы и экспортировать их в таксономию Drupal'а. Проблема в том, что в словаре таксономии получается несколько тысяч терминов, и друпал начинает безбожно тупить - особенно есть использовать какой-нибудь модуль вроде Hierarchical Select.

В итоге в одном из проектов сделали просто автодополняемый пользователями словарь, в другом - "ручками" сдернули с Википедии базу основных городов РФ по федеральным округам, и залили в таксономию.

А вообще задача встречается достаточно часто, поэтому уже возникают мысли, не написать ли отдельный модуль под это дело :)

Аватар пользователя Nikit Nikit 8 июля 2011 в 8:03

И еще нужно чтобы обновления кладра также импортировались правильно, чтобы держать целостность бд кладра, да и импортить не нужно будет целиком.

Аватар пользователя Mirocow Mirocow 27 июля 2011 в 3:31

бедный хостер который будет держать такой сайт. Это же сколько памяти будет отъедать такой словарь да еще и не забывайте о двойной развертке таксономии при построении. В общем помещение подобных данных в таксономию - это самый плохой путь.

Аватар пользователя Mirocow Mirocow 27 июля 2011 в 3:35
"Anton L. Safin" wrote:

А вообще задача встречается достаточно часто, поэтому уже возникают мысли, не написать ли отдельный модуль под это дело :)

По идеи его уже написали и довольно не плохо. Возможно удастся уговорить выложить его в паблик а пока его работу можете наблюдать на сайте www.relevantmedia.ru, в разделе редактирования платежной информации.

Аватар пользователя Dan Dan 29 июля 2011 в 15:01

Я писал модуль на заказ для 6-ки решил подобную задачу по-другому.
Пихать всё в таксономию смысла не имеет - это, во-первых, лишний груз, особо не нужный и не несущий никакой информации для сайта в целом, во-вторых огромное количество терминов заметно тормозит таксономию - не рассчитано оно на сотни тысяч терминов, в-третьих, это не очень хорошо с точки юзабилити - человек заходит в фильтр материалов (например объявлений) и видит возможность выбрать географию по всей России, начинает выбирать и оказывается, что всё пусто - 95% - это Москва и МО, остальные 4% - россия, 1% - украина.
Сделал следующим образом: весь КЛАДР находится в отдельной БД (можно и в БД друпала, не принципиально, главное - отдельные таблицы). При добавлении материала, у которого должны быть указаны нас.пункты, я альтерил форму, подставляя туда hierarchical select с выборкой из кастомной таблицы (данный модуль позволяет такое делать, есть АПИ), при сохранении ноды, выбранные области-города-улицы добавлялись в таксономию друпала. Таким образом в друпале были только реально используемые термины.

Аватар пользователя fairwind fairwind 31 декабря 2011 в 14:01
Dan wrote:

Я писал модуль на заказ для 6-ки решил подобную задачу по-другому.
[...]
Сделал следующим образом: весь КЛАДР находится в отдельной БД (можно и в БД друпала, не принципиально, главное - отдельные таблицы). При добавлении материала, у которого должны быть указаны нас.пункты, я альтерил форму, подставляя туда hierarchical select с выборкой из кастомной таблицы (данный модуль позволяет такое делать, есть АПИ), при сохранении ноды, выбранные области-города-улицы добавлялись в таксономию друпала. Таким образом в друпале были только реально используемые термины.

Мне нравится это решение. А можно как-то получить ваш модуль? Особо клево будет, если кладр урезать до населенных пунктов, улицы не нужны.

Аватар пользователя Vladimir_Z Vladimir_Z 23 декабря 2011 в 18:28
"antazy" wrote:

(там 200000 строк)

Странно, по завершении процесса сообщается:
DB opened, 199927 records
DB last inserted record 199928
KLADR taxonomy vocabulary updated.

При этом в словаре таксономии 1878 терминов.
И сколько ни нажимай кнопку Load ничего больше не меняется.

Это так и должно быть или я что-то не так делаю?

Аватар пользователя Dan Dan 2 января 2012 в 12:19

У меня этого модуля нет - я его делал при условии нераспространения. Может быть будет проект для 7-ки, где напишу его с нуля.

"fairwind" wrote:

Особо клево будет, если кладр урезать до населенных пунктов, улицы не нужны.

Ну это зависит от сайта, большинству нужны только города. С точки зрения нагрузки выборка из таблиц КЛАДР происходит только при добавлении/редактировании материалов.

Аватар пользователя auk auk 14 октября 2013 в 6:21

Может кому пригодится - обновил модуль для себя.

Изменения:
- адаптировано под Drupal 7
- немного переделана структура импорта. Сейчас создаются регионы + под-регионы + населённые пункты. Проблема в оригинальном коде была, что некоторые города не импортировались.
- переделан код - разделено создание структуры и создание населённых пунктов, небольшие оптимизации.

Пример как это выглядит сейчас:
https://github.com/auk/drupal-kladr/blob/master/example.png

Создал branch здесь:
https://github.com/auk/drupal-kladr
Автору отправил pull request, надеюсь сольёт.

Аватар пользователя orion_st orion_st 24 октября 2013 в 14:03
auk wrote:

Может кому пригодится - обновил модуль для себя.

Изменения:
- адаптировано под Drupal 7
- немного переделана структура импорта. Сейчас создаются регионы + под-регионы + населённые пункты. Проблема в оригинальном коде была, что некоторые города не импортировались.
- переделан код - разделено создание структуры и создание населённых пунктов, небольшие оптимизации.

Что-то не пашет.

Возникла AJAX HTTP ошибка. Полученный код HTTP: 500 Следует отладочная информация. Путь: /batch?render=overlay&id=15&op=do Текст Состояния: Internal Server Error Текст Ответа:

Аватар пользователя tamonten tamonten 25 января 2014 в 10:05

«Возникла AJAX HTTP ошибка. Полученный код HTTP: 500 Следует отладочная информация. Путь: /batch?render=overlay&id=15&op=do Текст Состояния: Internal Server Error Текст Ответа:»
нужен php 5.2, тк требует php_dbase.dll , которого в php 5.3 нет

Аватар пользователя Ch Ch 15 ноября 2013 в 7:42

Кладровский плагин требует новую jQuery. Зависимость от jQuery Update наверно можно убрать, так это сейчас не единственный способ обновить jQuery. Есть еще модуль jQuery Multi.