Связывание форм - форма отправки 1c данными из формы 2
- hush
-
Автор темы
- Не в сети
- Завсегдатай
-
- Сообщений: 197
- Спасибо получено: 2
продолжаю знакомство с себлодом

итак, есть расписание событий с поиском по полям. Теперь нужно добавить в расписание ссылку "Заявка на участие",
которая ведет в отдельную форму. Эта ссылка будет в каждом событии, поэтому в форме заявки должна быть инфа, относящаяся именно
к этому, уникальному событию.
Вот событие (на данный момент):
Вот форма (на данный момент):
Вопрос 1:
Как сделать, чтобы значения из контента события добавлялась в форму заявки автоматически (дата, место проведения, ведущий и т.п.)? Пробовал через Live (Default), но там значение нужно подставлять вручную.
Вопрос 2:
Как сделать так, чтобы форма заявки отправляла письмо на e-mail, указанный в событии (организатору события), и не отправляла ее в админку?
я примерно понимаю, что есть поле e-mail, но как оно работает - не догоняю.
Спасибо.
п.с.
еще вот заголовок собтия - вместо названия показывает цифры (дата) - какое поле нужно добавить, чтобы заголовок отображался с названием события?
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
-
- Не в сети
- Администратор
-
- Сообщений: 2869
- Спасибо получено: 659
Ответ 1:
Здесь сложно. Как только вы уйдете с этой страницы(на форму), с ее данными вас уже ничего не будет связывать. Я вижу решение так: Добавьте форму через модуль прямо на страницу события. Ну и, если необходимо, скройте под кнопкой с помощью JavaScript. Типы контента события и формы заявки должны иметь поля, не закрытые друг от друга(я имею ввиду замочек), в этом случае вы сможете использовать одно в другом. Далее плавно переходим к ответу 2...
Ответ 2:
Да, нужно использовать специальное поле. Его настройки здесь описывать не буду, т.к. долго, но разобраться там не так сложно. В комментариях к одной из статей по SEBLOD уже писали немного про настройки этого поля - посмотрите.
Так вот. В этом поле можно создать шаблон формы письма, включая в него любые из доступных полей типа контента, которому принадлежит это поле. Т.к. замочек у вас будет открыт, то скорее всего получится передать в письмо данные события.
P.S. Чтобы отображался заголовок нужно добавить Article Title.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- hush
-
Автор темы
- Не в сети
- Завсегдатай
-
- Сообщений: 197
- Спасибо получено: 2
для меня пока самое простое - начать с поля e-mail
Поразбирался - вроде действительно несложно. Делаю на локале, поэтому протестировать не могу.
хочу понять - правильно ли я понял назначение полей в этом поле.
сама форма:
Construction
Левый столбец:
1. from (default/ e-mail/ field) - с этим непонятно (если от кого - зачем справа дублируется From (E-mail / Field)?)
2. Subject - тема письма, приходящего на е-мейл?
3. Message и Message (Field) - поля и их содержание в теле письма?
4. Attachment (Field) - прикрепленные файлы в теле письма?
Правый столбец:
5. Send E-mail - непонятно назначение поля и значения значений в выпадающем списке (пардон за тафталогию).
И зачем справа еще поле?
6. From (E-mail / Field)- тоже, что и From (1) - непонятно?
7. To - список емейлов, на которые будет приходить письмо?
8. To (Field) - список полей е-мейлов, на которые будет приходить письмо?
(Т.е. если эта форма - поле е-мейл организатора, то в To (Field) я могу подставить название этого поля, и организатору придет письмо?
(на рисунке оранжевым цветом)
9. To (Administrators) - это понятно
Хочется как-то раз уж разобраться с этим полем, поэтому столь подробно.
Спасибо
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
-
- Не в сети
- Администратор
-
- Сообщений: 2869
- Спасибо получено: 659
1. Слева мы выбираем что подставлять в имя отправителя: email, заданный вручную или данные, взятые из какого-то поля. Справа мы вводим либо этот email, либо название поля с данными.
2. Да.
3. Да.
4. Поле файла, который будет прикреплен.
5. Здесь выбираем, когда отправлять email: никогда, при отправке формы, при редактировании формы, всегда.
6. Объяснил в п.1.
7. Да.
8. Да. В п.7 Email вписывается вручную. Здесь автоматически из указанного поля. Оба поля заполнять не обязательно. Достаточно заполнить одно из них.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- hush
-
Автор темы
- Не в сети
- Завсегдатай
-
- Сообщений: 197
- Спасибо получено: 2
с наступающим!
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- athree
-
- Не в сети
- Осваиваюсь на форуме
-
- Сообщений: 22
- Спасибо получено: 4
Работаю над той же проблемой. Кажется, нашел правильный путь, но возникло неожиданное препятствие.
Форма заказа должна выводиться в модуле в "родительском" типе_контента - иначе никак. Но получать поля из "родителя" - настоящая проблема. Использование разомкнутого замочка ровным счетом ничего не дает - все-таки это два совершенно разных типа_контента, никак физически не связанных. Ну, или, я чего-то не допонял...
А вот дальше самое интересное. Направление я подсмотрел на оф. форуме SEBLOD - там по такому принципу делалась система комментариев, там тоже была необходимость связывать два разных типа_контента. Нужно обращаться напрямую к БД, ведь все эти значения родительского типа_контента там уже хранятся, только нужно узнать их ID. Замочек должен быть замкнут - данные должны быть в чистом виде в отдельной таблице, ибо как "выдирать" их из тегов в столбце introtext я даже не догадываюсь.
В форме заказа создаем скрытое поле Core-42 (оно позволяет использовать произвольный PHP код). Во второй секции настроек поля (кнопочка [2]) прописываем Live: "Url-Var(Int)", Live Value: "id". Таким образом, поле Core-42 получает ID материала, созданного в "родительском" типе_контента. Круто? Идем дальше.
В настройках самого поля Core-42 в секции PrepareStore прописываем примерно следующий код:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('email');
$query->from('#__cck_store_form_companion');
$query->where('id='.$value);
$db->setQuery($query);
$value = $db->loadResult();
email - столбец со значением, которое необходимо получить из "родителя"
_cck_store_form_companion - название таблицы "родителя" без префикса
'id=' - это часть запроса, выборка по ID
$value - это переменная, которая вначале подставляет Live Value (наш ID) в код, а затем выводит в виде результата полученное значение "родителя". Результат выполнения этого кода - поля Core-42 получает нужное значение "родителя".
Создаем столько полей Core-42, сколько нужно получать значений полей из "родителя". Все присовокупляем к отправляемому E-mail. Вуаля.
Правда, есть один облом

Fatal error: Call to a member function renderField() on a non-object in Z:\home\joomla17\www\plugins\cck_field\42\42.php(181) : eval()'d code on line 1
Может, кто подскажет, почему не робит? Здесь какая-то внешняя причина...
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
-
- Не в сети
- Администратор
-
- Сообщений: 2869
- Спасибо получено: 659
Функция eval(), на которую указывает ошибка, занимается тем, что пытается выполнить то, что вы написали в настройках поля Core-42, как php-код. Возможно, в этот код вкралась ошибка. Чтобы явно ее увидеть, нужно явно исполнить этот код где-либо.
А вообще, если используйте такой подход, почему бы не воспользоваться полем Dynamic Select? Он позволяет конструировать SQL-запросы, также передавая в них значение.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- athree
-
- Не в сети
- Осваиваюсь на форуме
-
- Сообщений: 22
- Спасибо получено: 4
А вот код в Core-42:
По идее такой код:
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- greenmar
-
- Не в сети
- Осваиваюсь на форуме
-
- Сообщений: 13
- Спасибо получено: 0
Авось поможет. Отпишите плиз, по результатам. Просто я тоже планирую делать подобную вещь, но пока только присматриваюсь к тому что пишут люди.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- greenmar
-
- Не в сети
- Осваиваюсь на форуме
-
- Сообщений: 13
- Спасибо получено: 0
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- seblod.pro
-
- Не в сети
- Новый участник
-
- Сообщений: 1
- Спасибо получено: 0
Собственно, решение поставленной в теме задачи с помощью плагина SD Live CCK Field.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- manja
- Не в сети
- Новый участник
-
- Сообщений: 1
- Спасибо получено: 0
такая же задачка, можно по подробнее как "скройте под кнопкой с помощью JavaScript"

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.