2013-03-05 2 views
0

У меня есть тип контента «Merchant», созданный для веб-сайта. Тип контента Merchant имеет поле выбора «Город» и текстовое поле «Локальность».Вычисленное поле, Drupal 7, Условное автоматическое приращение

Я хочу создать поле «merchant_code», которое должно быть чем-то вроде «AB-XY-0001» , где AB - это первые две буквы названия города, а XY - первые две буквы названия местности и 0001 быть инкрементный номер, так купцы ABCD города и XYZ местности будет иметь каждый другой код:

"AB-XY-0001", 
"AB-XY-0002", 
"AB-XY-0003"... 
"AB-XY-9999", 
etc. 

и Торговцы ФХЦЧ города и LMN местности будет иметь каждый другой код:

"PQ-MN-0001", 
"PQ-MN-0002", 
"PQ-MN-0003"... 
"PQ-MN-9999", 
etc.. 

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

Если я создаю Merchant «AB-XY-0001», а затем создаю еще один купец City PQRS и Locality LMN, он будет иметь код «PQ-LM-0002», а не код «PQ-LM-0001».

Пожалуйста, помогите мне в этом.

ответ

0

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

<?php 
static $auto_generate = array(); // keep track of which codes are at what number 
$code = ''; 
$code .= $node->field_city[0]['value'] . '-'; 
$code .= $node->field_locality[0]['value']; 
if($auto_generate[$code]) 
{ 
    $auto_generate[$code]++; 
} 
else 
{ 
    $auto_generate[$code] = 0; 
} 
$code .= '-' . $auto_generate[$code]; 
$node->field_merchant[0]['value'] = $code; 
?> 
+0

Я не уверен, что это правильный путь. Всегда лучше использовать функцию автоматического увеличения базы данных, чтобы убедиться, что нет дубликатов, созданных при загрузке. –

+0

@GokulNK Я не знаю, как бы вы это делали в пределах содержания drupal. Я предполагаю, что вам нужно будет создать собственную систему контента. Мне нравится видеть ответ с тем, как вы это сделаете. –

 Смежные вопросы

  • Нет связанных вопросов^_^