Разработка

Location + Taxonomy: варианты решений.

Вариант 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 из класса «дешево и сердито»

 
 
02.09.2011 — 22:23

Комментарии (6)

Аватар пользователя Stan
06.09.2011 — 11:24
1
 
 

Перенесите в разработку

Аватар пользователя kervi
06.09.2011 — 16:00
-1
 
 

готово.

Аватар пользователя annya
10.09.2011 — 15:27
2
 
 

Почитайте http://drupal.org/node/304258 — о том как правильно оформлять js-код в Drupal, $ — знак $, использование замыканий + у Вас никакой контекст не используется, что во-первых замедляет поиск объектов в DOM(так, как ищется по всему документу, а не только в определенной области), а во-вторых Вы будете точно уверенны, что Ваш код будет применен, только в том месте где именно нужно. Также у Вас селекторы jQuery("#edit-locations-0-country») используются в нескольких местах, почему бы не обозначить их переменной? Код будет читабельный, и не будет тратится время на поиск того же самого элемента в DOM. Ну и Drupal.behaviors использовать вместо live
+ jQuery дает нам мощный механизм цепочек:
Вместо

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());
        });

Можно:

jQuery('#edit-field-locator-address-und-0-value').bind('change', function(){
            var newvalue = jQuery(this).val();
        })
.blur(function(){
      jQuery('#edit-locations-0-street').val(jQuery(this).val());
});

Аватар пользователя kervi
12.09.2011 — 10:02
0
 
 

Благодарю за правки. постараюсь их учесть.

Аватар пользователя PVasili
23.10.2011 — 10:27
0
 
 

# location_taxonomize — он?

Аватар пользователя kervi
18.11.2011 — 09:35
0
 
 

да.