Автоматический выбор термина таксономии в форме заявки.

Главные вкладки

Аватар пользователя Melrokk Melrokk 12 мая 2014 в 10:01

Добрый день.
У меня следующая проблема/вопрос.
1. Создал тип материала "мероприятие" (список полей: Заголовок, Описание (бади), картинка) рулсом настроил, что бы при создании материала из заголовка создавался термин таксономии в словарь - "мероприятия".
В итоге получилось содержимое - мероприятие("Трататта") и такой же термин таксономии.

2.Создал тип материала "Зарегистрироваться" (список полей: Ф.И.О., Контактные данные и поле с выпадающий списком терминов таксономии из словаря "Мероприятия").

Идея в том, что когда пользователь заходит на страничку с тем или иным мероприятием, при клике на кнопку "записаться" он переходит на страницу формы регистрации( по сути создание нового материала "Зарегистрироваться" ).

Как сделать так, что бы в поле с выпадающим списком мероприятий в форме регистрации, автоматически, по умолчанию выставлялось то мероприятие с которого пользователь перешел на страницу регистрации?? Что бы ему не нужно было просматривать весь список мероприятий, а просто дальше заполнить форму.

Заранее благодарю)

ВложениеРазмер
Иконка изображения vopros1.png10.64 КБ
Иконка изображения vopros2.png9.65 КБ
Иконка изображения vopros3.png196.58 КБ

Комментарии

Аватар пользователя Melrokk Melrokk 14 мая 2014 в 8:40

Chyvakoff wrote:
hook_form_FORM_ID_alter
Смотри на реферрер, или гетом передавай айдишник мероприятия. Ну и в хуке ставь дефолтное значение своего поля.

А можно подробнее?
В том то и дело что у меня это не форма, а простой тип материала, создаваемый каждый раз при регистрации на мероприятие нового пользователя.

Аватар пользователя Chyvakoff Chyvakoff 14 мая 2014 в 9:49

"Melrokk" wrote:
при клике на кнопку "записаться" он переходит на страницу формы регистрации( по сути создание нового материала "Зарегистрироваться" ).

"Melrokk" wrote:
В том то и дело что у меня это не форма

Как же не форма? Ещё как форма, самая обыкновенная форма.
Знаете... я чуть позже статью напишу на эту тему, с подробностями и ссылку вам дам.

Аватар пользователя Melrokk Melrokk 14 мая 2014 в 11:56

"Chyvakoff" wrote:
Как же не форма? Ещё как форма, самая обыкновенная форма.
Знаете... я чуть позже статью напишу на эту тему, с подробностями и ссылку вам дам.

Возможно я чего-то не понял...

Вообще выглядит это как простая процедура создания нового материала с прикрученным к ней модулем рулз, который выполняет отправку письма админу, о том что такой-то пользователь зарегистрировался на такое-то мероприятие.

Спасибо, буду ждать.

Аватар пользователя Melrokk Melrokk 15 мая 2014 в 12:13

"Chyvakoff" wrote:
Лови http://php-include.ru/stati/uproshchenie-svyazki-dvuh-materialov-v-drupal
У меня на примере авторов и статей.
Получается для тебя мой автор=твоё мероприятие. моя статья=твоя запись на мероприятие.

Спасибо огромное, сделал по аналогии как описано в статье.

Есть пара уточнений:
Вот этот код помещаю в файл модуля mymodule.module?
Соответственно название файла модуля у меня auto_tax.module
Заменил название поля на свое...


<?php

function auto_tax_form_alter(&$form, &$form_state$form_id){
  
debug($form_id);
}

function 

auto_tax_form_alter(&$form, &$form_state$form_id){
  if(
$form_id == 'rigistr_node_form') {
    if(isset(
$_GET['a'])) {
        
$form['field_tm_rigistr_action']['und'][0]['nid']['#default_value'] = (int) $_GET['a'];
    }
  }
}
?>

Но, из-за какой-то ошибки весь сайт ложится. НЕ могу понять в чем причина(( Толи в синтаксисе, толи еще где?

Еще раз благодарю)

Аватар пользователя Chyvakoff Chyvakoff 16 мая 2014 в 10:14

Всё правильно.
Ложится потому что ты объявил функцию auto_tax_form_alter два раза.
Затри это

function auto_tax_form_alter(&$form, &$form_state, $form_id){
  debug($form_id);
}

Оставь только

function auto_tax_form_alter(&$form, &$form_state, $form_id){
  if($form_id == 'rigistr_node_form') {
    if(isset($_GET['a'])) {
        $form['field_tm_rigistr_action']['und'][0]['nid']['#default_value'] = (int) $_GET['a'];
    }
  }
}
Аватар пользователя Melrokk Melrokk 16 мая 2014 в 13:59

"Chyvakoff" wrote:

Всё правильно.
Ложится потому что ты объявил функцию auto_tax_form_alter два раза.
Затри это

Так и сделал, заработало)Спасибо!!
возник еще один вопрос, как при помощи вьюза сделать рабочим фильтр по полю где указывается мероприятие и nid (например: Реформа образования [nid:31])
Вывожу это поле в открытый фильтр, смотрю на дроп лист. Да все мероприятия ранее созданые в нем есть, но какое из них я бы не выбирал, результат пустой.
Такое ощущение, что это название не как не связывается с нодой регистрации. Соответственно и фильтру нечего выводить.

Еще раз конкретизирую вопрос: Как заставить работать фильтр во вьюзе по этому полю в открытом режиме в виде выпадающего списка?

И как скрыть из вывода сам [nid:31], тк эта форма открыта для всех. И такой вид не сильно кошерный.

Аватар пользователя Chyvakoff Chyvakoff 16 мая 2014 в 17:46

У вьюса есть взаимосвязи. Добавляешь эту взаимосвять и когда создаешь фильтр - указываешь эту взаимосвязь. И тогда будет работать.

"Melrokk" wrote:
И как скрыть из вывода сам [nid:31], тк эта форма открыта для всех. И такой вид не сильно кошерный.

Традиционным способом никак не скрыть. Можно извратиться и написать много кода на js, но оно того не стоит.