Readers: 39
Topics: 46
Вариант 1:
используем http://drupal.org/sandbox/goron/1234754. Пока что только для семерки.
Модуль заменяет поля модуля location на таксономию сохраняя при этом иерархию. То есть заполнив поля страна, штат, город, адрес, вы получите на выходе в словаре Location соответствующие термины
страна
— штат
----город
------адрес
к сожалению у данного метода есть две проблемы: путаница при работе с мультиязычным контентом (будут создаваться новые поля а не переводится существующие) и невозможность жесткого ограничения списка (например чтобы можно было выбрать только Москву и Питер из России и Минск и Гомель из Беларуси).
Так как в разработке модулей я еще очень хвораю, был придуман следующий костыль для использования Hierarchical Select в связке с Location
Вариант 2:
jQuery(document).ready(function() { /*Прячем поля закладки Location*/ jQuery("#edit-locations-0-country“).hide(); jQuery("#edit-locations-0-city“).hide(); jQuery("#edit-locations-0-street»).hide(); /*Полю «street» присваеваем значение предварительно созданного вручную поля «адрес“*/ jQuery('#edit-field-locator-address-und-0-value').bind('change', function(){ var newvalue = jQuery(this).val(); }); jQuery('#edit-field-locator-address-und-0-value').blur(function(){ jQuery('#edit-locations-0-street').val(jQuery(this).val()); }); }); /*При обновлении Hierarchical Select'a, присваивать соответствующие значение полям Country и City*/ jQuery('#hierarchical-select-0-wrapper').live('change-hierarchical-select', function() { var city = jQuery("#edit-field-locator-country-city-und-hierarchical-select-selects-1 option:selected“).text(); var country = jQuery("#edit-field-locator-country-city-und-hierarchical-select-selects-0 option:selected“).text(); jQuery("#edit-locations-0-country»).find(«option:contains("+country+")»).attr(«selected», «selected“); jQuery("#edit-locations-0-city»).val(city); })
Все это привязанно к форме создания ноды через модуль JSinjector.
P.D. Прошу особенно не пинать, решениe из класса «дешево и сердито»
Комментарии (6)
Перенесите в разработку
готово.
Почитайте http://drupal.org/node/304258 — о том как правильно оформлять js-код в Drupal, $ — знак $, использование замыканий + у Вас никакой контекст не используется, что во-первых замедляет поиск объектов в DOM(так, как ищется по всему документу, а не только в определенной области), а во-вторых Вы будете точно уверенны, что Ваш код будет применен, только в том месте где именно нужно. Также у Вас селекторы
jQuery("#edit-locations-0-country»)
используются в нескольких местах, почему бы не обозначить их переменной? Код будет читабельный, и не будет тратится время на поиск того же самого элемента в DOM. Ну и Drupal.behaviors использовать вместо live+ jQuery дает нам мощный механизм цепочек:
Вместо
Можно:
Благодарю за правки. постараюсь их учесть.
# location_taxonomize — он?
да.