Предположим, мы создали модуль и в нем определили новый тип нода. Пусть это будет нод "Город" с внутренним именем 'city'. В форме добавления нашего нода с адреса 'node/add/city', кроме всего прочего, мы сделаем селектор стран, чтобы можно было выбирать, в какой стране находится город:
Теперь предположим, что мы создали страницы с описаниями разных стран. И хотим чтобы пользователь мог добавить город не через меню «Создать материал» - «Город», а со страницы с описанием страны. Что логично: вот пользователь смотрит на страницу "Россия" и сразу хочет добавить свой родной город.
function city_form(&$node, $form_state) {
//...
$form['countries'] = array(
'#type' => 'select',
'#title' => t('Country'),
'#options' => _get_countries_list(), //возвращает список стран в формате code => t('Country')
'#default_value' => variable_get('cotranslate_default_country', 'ru'),
);
//...
return $form;
Первое, что мы можем по этому поводу сделать - это разместить ссылку на 'node/add/city'. Но в таком случае пользователю придется в форме добавления города выбирать страну из списка, а ведь он уже сделал этот выбор, нажав "Добавить город" именно на странице с описанием нужной страны. Очевидно, следует учесть выбор пользователя и при создании формы установить заданную страну как дефолтную в списке 'countries'.
О том, какой фокус для этого надо проделать - под катом.