При создании небольших сайтов часто бывает нужна какая-нибудь нестандартная особенность. Например, на сайте-каталоге товаров и/или услуг требуется форма заказа, привязанная к материалу (ноде). Подобный функционал: ссылка «Заказать» и форма для отправки сообщения с уже заполненной информацией о странице, которую заказали, уже близок к корзине онлайн-магазина. Но согласитесь, ставить ubercart или e-commerce ради одной нестандартной возможности несколько непрактично.
Всего-то надо немного расширить возможности штатных модулей. Итак, нам нужна форма отправки сообщения. Для ее создания воспользуемся модулем webform. Скачав и установив этот модуль обычным способом, мы получаем новый тип материала Webform, который позволяет создавать различные формы подтверждаемые пользователем. Создадим одну такую форму. Пусть ее NID равен 10 - он будет нам нужен, чтобы составить ссылку заказа. Добавим в эту форму несколько полей, Например имя посетителя, его адрес электронной почты и так далее. Не забудьте указать настройки e-mail для формы, тогда результат ее заполнения будет отправлен вам по электронной почте.
Пусть у нас также есть тип материала Продукт (product), который и представляет то, что наш пользователь будет заказывать. Идем в папку с шаблоном нашей темы и делаем там копию файла node.tpl.php под именем node-product.tpl.php. Открываем файл и добавляем в него нашу ссылку на форму заказа, сразу после переменной $content:
Теперь при просмотре полной ноды типа product у нас будет видна гиперссылка на нашу форму (node/10) с параметром NID текущей ноды в строке запроса. Перейдя по ссылке мы попадаем на форму. Дело осталось за небольшим. Как минимум в форме надо все-таки проинформировать посетителя, что он заказывает, да и вам не мешало бы получить адрес искомой страницы вашего сайта.
Для реализации этого функционала добавим в нашу форму еще два поля. Первое поле типа markup назовем Продукт. В его настройках занесем в Значение PHP-код:
Пользователь увидит заголовок той ноды, которую он заказывает. Чтобы этот код обрабатывался как PHP, а не выводился в форму в виде текста, необходимо включить модуль ядра PHP-фильтр на странице сайта admin/build/modules.
Добавим еще одно поле типа hidden (скрытое). Значение по умолчанию выставим таким:
Теперь в нашей форме по умолчанию будет забит адрес исходной ноды сформированный при помощи токена %request[product], который позволяет обратится к параметрам строки запроса и получить значение product. Этот адрес будет отослан в письме вам, что и позволит найти интересующую пользователя страницу сайта.
Вот и все. Ваш материал «заказан».
Комментарии
Большое спасибо!
Как раз то, что я давно хотел реализовать, но к солению пока не хватет знаний.
Это наживное, обычно проходит после решения парочки практических задач.
Спасибо! Буду практиковаться.
Спасибо большое.
Спасибо, то, что надо.
О как! Да, действительно полезная штука, пасиба большое.
Знаете за что я люблю drupal.ru? За то что тут в тот же день, как сталкиваюсь с новой проблемой, тут постят ответы на половину моих вопросов.
Большое спасибо - то что нужно!
Спасибо для комментариев сделал кнопку пожаловаться
Огромное спасибо, все гениально и просто!
Как раз это я и искал. Спасибо!
супер, очень полезная статья. Спасибо.
Спасибо, очень полезно и как раз кстати!
Здравствуйте, Валентин!
Спасибо за статью, все получается как надо. У меня возник вопрос: а возможно ли подобным образом вытаскивать не только заголовок страницы, но и содержащиеся в ней другие поля, сформированные через CCK?
У меня возникло предположение, что возможно, но не совсем понятно, на что менять title. в этом коде:
На что-то вроде $node->field_имя_поля[0]['value']
Посмотрите что выдает для ваших нод print_r($node) и используйте то, что вам нужно.
спасибо!
Валентин, подскажите, пожалуйста, какие изменения в Вашем коде необходимо сделать для Drupal 5.x
Никаких
А можете поделиться кодом?
gumk прав - никаких.
Я подумал про другой код для Drupal 5.x в связи со следующими обстоятельствами:
Drupal 5.11 Тестирую на Denver
Материал product создан с помощью CKK. Ноды product выводятся с помощью panels на главной (но это, думаю, другой вопрос).
На странице продукта ошибка:
warning: preg_match() expects parameter 2 to be string, array given in Z:\home\examle.com\www\includes\bootstrap.inc on line 679.
А на странице самой формы заказа webform такое сообщение об ошибке:
* warning: Invalid argument supplied for foreach() in Z:\home\ examle.com\www\modules\node\node.module on line 561.
* warning: implode() [function.implode]: Bad arguments. in Z:\home\ examle.com\www\modules\node\node.module on line 565.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN examle r ON r.vid = n.vid WHERE in Z:\home\ examle.com\www\includes\database.mysql.inc on line 174.
Мы с gumk неправы оба... Сорри.
Есть различия в функции l()
if ($page) {
?><div class="order">» <?php
print l(t('Order'), 'node/10', 'product='.$node->nid);
?></div><?php
};
?>
Как то так...
Большое спасибо! Буду дальше тестировать. Я и сам об этой функции думал, но знаний английского не хватило, чтобы в API разобраться.
Видимо код для полей wevform Drupal 5.x тоже другой.
Ошибка:
* warning: Invalid argument supplied for foreach() in Z:\home\ examle.com\www\modules\node\node.module on line 561.
* warning: implode() [function.implode]: Bad arguments. in Z:\home\ examle.com\www\modules\node\node.module on line 565.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM node n INNER JOIN users u ON u.uid = n.uid INNER JOIN examle r ON r.vid = n.vid WHERE in Z:\home\ examle.com\www\includes\database.mysql.inc on line 174.
И в поле hidden в отправленном заказе адрес главной страницы, т. е. http://example.com/node
У меня пятерки с нужным функционалом нету, поищите в админке настроек полей токены и PHP
Благодарю. Разберемся
спасибо, полезно
direqtor - спасибо за отличную идею!
Адаптировал под 5-ку, использую.
Вот решение для Drupal 5.x (спасибо товарищу glu2006 за помощь):
1. В теме node.tpl.php пишем правильную ссылку:
вместо (для друпал 6)
пишем (для друпал 5)
это дает правильные ссылки вида node/10?product=(номер ноды продукта)
2. В поле markup вставляем код:
if ($_GET['product']) {/* чтобы не выдавал ошибок при простом просмотре формы без заказа*/
$node = node_load($_GET['product']);
if($node) print '<span class="label">' . t('Заказано') . ': </span>' . l($node->title, 'node/'.$node->nid);
};?>
Специально добавил строчку if ($_GET['product']), потому что без нее простой просмотр формы без переданных параметров выдавал ворнинги - попытка посмотреть тайтл несуществующей ноды.
Большое спасибо!
Спасибо! Да. Под пятерку для меня еще актуально!
Спасибо! Да. Под пятерку для меня еще актуально!
Кстати, а второе поле - hidden в пятерке так же заполнять надо?
(хочу заметку дополнить)
Что-то код в поле markup не работает. Выдает:
<?php
if($node=node_load($_GET['tour']))
print '' . t('Product') . ':' . l($node->title, 'node/'.$node->nid)
?>
Делаю все так (ну вместо "product" везде "tour" написал)
Режим поля в PHP-код переключите. Иначе поле просто выдаёт все как текст.
Формат ввода выбран Full HTML, и под полем "Значение" пишет, что разрешен HTML или PHP. Однако не работает
Вот скрины:
Покопался в настройках своего проекта. Все дело в модуле ядра PHP-фильтр. Если он отключен, то PHP-код не парсится. Включите его обязательно.
Спасибо, теперь все встало на свои места.
Подправил заметку.
Вот тут девушка недавно спрашивала,а мне тоже интересно:
если у нас вебформа в блоке на странице,как заполнить титлы вебформы титлами той ноды,на которой собственно находится этот блок?
Это полный код?
Вставлять в поле "markup"?
Это только способ получить заголовок страницы ноды в переменную $title. А куда вы её заюзаете – ваше дело.
А как получить заголовок товара в письме, а не ссылку?
Разобрался, использую hidden_dynamic от господина Anton L. Safin
Можно сделать hidden, такой же как markup.
Подскажите пожалуйста как вместо слова Order прицепь кнопку?
Заранее спасибо!
[ru-api=theme_submit]
[ru-api=theme_button]
И [ru-api=drupal_get_form]
Спасибо! Еще такой вопрос! При заполнении не всех обязательных полей на форме происходит редирект на форму с ошибкой о том что не все обязательные поля заполнены, НО, что самое главное, при этом теряется связь с продуктом!!! Приходится обратно возвращаться в продукт и нажимать "заказать". Как с этим быть?
Надо подумать.
Всё, нашел способ!!!
Добавляем скрытое поле в котором можно прописывать php код(hidden_dynamic), разработанное товарищем [user=anton-l-safin](за что ему отдельное спасибо) (http://www.drupal.ru/node/30338)
и туда уже вставляем код:
if($node=node_load($_GET['product']))
print ($node->field_имяполя[0]['value'].'http://site.com/node/%request[product]')
?>
Таким образом на почту попадет и имя продукта и ссылка на него независимо от редиректов, связанных с неправильным заполнением формы
Большое человеческое спасибо за мануал!
прошу совета в какую сторону дуиать чтобы это всё сделать в виде CCK поля чтобы во Views вывести и чтобы всё заказанное в корзину складывалось опять же без ubercart и ecommerce
сделала все, как описано выше.
никак не получается увидеть гиперссылку на форму при создании типа материала product:(
что я делаю не так?
в файл node-product.tpl.php нужно добавлять php код после этой строки, да?
<?php if ($links) { ?><div class="links"><?php print $links?></div><?php }; ?>
UPDATE
Решено
Да где угодно добавляйте.
Эх, готово дополнение с решением проблемы неправильно заполненых обязательных полей, но нет времени его прилично описать....
direqtor, извините за дурацкий вопрос:). я просто в php не сильна. мягко говоря:)
скажите, а почему ссылка на форму заказа называется "Позиция" или это только у меня такой глюк?:((
как ее можно изменить на слово "Заказать"?
Там стоит t('Product'). Сия функция проверяет текущий язык системы и если он отличен от английского ищет в переводах перевод слова Product на текущий язык. Поищите в переводах интерфейса, как переведено это слово. У вас оно, видимо, переведено, как Позиция. Поменяйте. Либо поставьте свое слово в t() и переведите его так, как вам надо.
direqtor, спасибо Вам больше за помощь! все получилось!
Завязано на типе материала. А если изначально все типы неизвестны, но могут проходить через одну форму?Разобрался, типы ноды не причём.
Спасибо большое за статью )))
А как сделать чтобы данные формы отправлялись автору ноды? Т.е. есть несколько фирм которые добаляют продукты, нужно чтобы сообщение отправлялось конкретной фирме добавившей продукт.
Спасибо автору за статью, а также rulez22 за важное дополнение.
Спасибо. Попробую добавить выбор товара из динамически формируемого списка.
У меня почему-то от анонимных заказчиков приходят письма без ссылки на страницу товара. Пробовал и %get и %request.
Я эту проблему устранил у себя, но вот никак руки не доходят эту статью переписать. Сорри. Как найду время, перепишу.
Может кто-нибудь намекнет, как это сделать?
Заменяем стандартный модуль webform на этот патченый, еще нужно поставить модуль token.
Он позволяет использовать для полей формы глобальные токены сайта.
Я не мог заставить модуль webform 3.11(который у меня отображался в виде блока непосредственно на странице товара) отправлять мне в письме заголовок товара со страницы которого была заполнена и отправлена форма, а также ссылку на эту страницу.
С помощью данного модуля проблема была решена.
1. Создал необходимые поля для заполнения.
2. Создал поле hidden со значением по умолчанию [[page-title]] (получил название товара)
3. Создал поле hidden со значением по умолчанию [[current-page-url]] (получил ссылку на товар)
Радуюсь
Ну вот, оборвалось на самом интересном месте. Тоже интересуюсь решением проблемы анонимных
заполнителейзаполнятелей формы.предложу пару своих решений, которые можно сделать прямо через админку. не знаю, насколько они правильные с технической точки зрения, но работают.
вариант 1.
- ставим webform, создаем страничку единой формы заказа.
- заполняем webform-поля. + текстовое поле (или скрытое) со значением по-умолчанию %get[value]
- добавляем в тип контента поле link с именем "вопрос по товару" и по умолчанию прописываем:
--Заголовок - "Задать"
--URL - "node/10?value=[node:nid]" (node/10 - адрес единой формы заказа в этом примере)
вместо [node:nid] можно использовать другие токены, смотря что хотите вытащить. [node:nid] вытащит ID материала. [node:title] азвание материала и т.д.
по идее все, должно работать.
минусы: нужно кликать на ссылку "задать вопрос" и идти на страницу формы. помимо этого, через %get можно вытащить только 1 значение.
вариант 2 (через родные комментарии)
- идем в разрешения ролей и даем анонимам права на постинг комментариев и отменяем права на просмотр.
- настройки комментариев для типа материала ставим такие:
- ставим модуль rules и его зависимости.
- создаем в нем новое правило
-- событие - создание нового комментария
-- действие - отправка е-майл
- заполняем поля (обратите внимание, что токенов здесь совсем мало, но на самом деле работают и другие, причем для всех полей), к примеру для тела письма я заполнил так:
e-mail отправителя: [comment:mail]
вопрос по объекту: [comment:node]
номер объекта: [comment:node:nid]
ссылка на объект: [comment:node:url]
сообщение:
[comment:body]
осталось только через "перевод интерфейса" поменять заголовки а-ля "оставить комментарий" на "задать вопрос", или "заказать товар"
если что-то кажется лишним в форме комментариев, можно скрыть через tpl.php, или, если по-деревенски (мой случай), то через css.
минусы: как быть с нодами, которым нужны и комментарии и форма заказа?
P.S. все написанное выше работает на д7, насчет д6 не проверял.
Отличное решение!!! Но в 6-ке
Токен не срабатывает почему-то.
Не, пи...жю! Не срабатывает [node:nid], срабатывает [nid]
Плюс не забыть в настройках поля в типае материала поставить галку "Разрешить пользовательские маркеры".
верное замечание. еще добавлю, для 7-ки нужна дев версия линк.
Для анонимов не работает... Как быть?
Токен %request не работает для анонимных пользователей. Это написано в интерфейсе по заполнению поля hidden. В нижней части экрана. Цитирую:
* * * * *
Special tokens
%profile[ключ] - Any user profile field or value, such as %profile[name] or %profile[profile_first_name]
%get[ключ] - Tokens may be populated from the URL by creating URLs of the form http://example.com/my-form?foo=bar. Using the token %get[foo] would print "bar".
%post[ключ] - Tokens may also be populated from POST values that are submitted by forms.
In addition to %get and %post, the following super tokens may be used, though only with logged-in users: %server, %cookie, and %request. For example %server[HTTP_USER_AGENT] or %session[id].
* * * * *
Я использовал токен %get. Все заработало.
Drupal 6.22, Webform 6.x-3.15.
Спасибо автору за решение.
Мне б время найти и протестировать все заново, ла ствтью переписать.
Спасибо! Адаптировал данное решение для выбора продукта через список продуктов на views.
Делаем в представлении поля:
1) Поля продукта (картинка, заголовок и т. п.)
2) Поле Материал:Nid и скрываем его из вывода.
3) Поле Пользовательский текст, в него вписываем:
» <a href="/node/10?product=[nid]">Заказать</a>
где node/10 - адрес webform для оформления заказа, а product - машинное наименование типа материала Продукт. [nid] - токен взятый из поля Материал:Nid, которое добавили ранее и скрыли, этот токен будет передавать nid продукта форме оформления заказа.
В итоге адрес по ссылке "Заказать" должен выглядеть, как http://имя-сайта.домен/node/10?product=168 (168 - это nid продукта).
А далее с webform, как описал direqtor в топике
И еще одна фича в связи с views:
Допустим список views с продуктами и сама webform'а заказа блоком на одной странице.
Страница со списком views продуктов имеет путь /products
Поле Пользовательский текст views вместо:
» <a href="/node/10?product=[nid]">Заказать</a>
Вписываем:
» <a href="/products?product=[nid]">Заказать</a>
Открывается та же страница со списком продуктов и формой заказа в блоке, но в форме заказа уже появляется заказываемый продукт.
Пока прикрутил всплывающее окно для формы заказа, как описано здесь.
Довольно удобно: пользователь заходит в каталог товаров, кликает "Заказать" на одном из них, и ему всплывает форма заказа, в которой помечено, что он заказывает.
Только вот lightbox думаю придется менять на colorbox или popups API. Iframe lightbox какой-то жестокий)
Еще бы научится передавать в webform не только заголовок ноды, но и значение других полей.
Чтобы nid продукта передавался через поле hidden на email у меня сработало не %request а %get (Drupal 6.25)
Т. е. http://имя-вашего-сайта.ru/node/%get[product]
Ссылки по теме:
Webform: PHP-код в скрытом поле (hidden)
Если в типе материала product используется computed field и использование %get
Kremenetskiy, спасибо, полезно.
Позже буду пробовать применять.
Только вот вопрос как передавать другие динамические данные из markup в hidden. Сделал в markup генератор случайных чисел типа лотерея, а как передать в hidden, чтобы по почте оправлялось пока не знаю.
Это конечно колхозный вариант, народ рекомендует делать через hook_form_alter(), но т.к. в Drupal'е я пока полный нуб, то сделал так:
1) Создал поле textfield (пустое), назвал его к примеру "link" (Это название ниже используется в submitted[link]). Это поле в форме можно будет скрыть присвоив уникальному классу поля display:hidden...
2) Создал поле markup (PHP filter включен) и в нем прописал следующее:
<?php
if (isset($_GET['product'])){
if($node=node_load($_GET['product'])){
print '<input type="hidden" name="submitted[link]" value="http://site.ru/node/'.$node->nid.'" id="submitted-sponsor"/>';
}
}
?>
Таким образом у нас происходит подмена submitted[link] изначального тем submitted[link] что мы вычислили (главное чтобы они стояли именно в описанном порядке)
Инструкцию нашел здесь http://www.drupal.ru/node/30338 но со скрытым полем у меня не стало работать
Что-то в value=" " php код у меня не работает, выводится как текст.
не потому ли, что
<?php
print '<input type="hidden" name="submitted[link]" value="http://site.ru/node/'.$node->nid.'" id="submitted-sponsor"/>'
?>
выводит то, что заключено в ' ' как есть (как текст).
Код скопировал с рабочего примера - как текст оно и должно выводиться, где идет вычисление там
'.$node->nid.'
Внесу небольшую поправку. С ошибкой столкнулся на D7, но на D6 думаю она тоже имеет место быть...
Если все делать по предложенному варианту то при обращение к форме с параметром product (h++p://site.ru/node/10?product=200) все работает прекрасно. А если со всеми заданными настройками обращаться к форме на прямую (h++p://site.ru/node/10), то выдается ошибка:
Notice: Undefined index: product в функции eval() (строка 3 в файле Y:\home\***\****\modules\php\php.module(80) : eval()'d code).
Избежать ее поможет простая проверка:
if($node=node_load($_GET['product'])){
print '<span class="label">' . t('Product') . ': </span>' . l($node->title, 'node/'.$node->nid);
}
}
Для D6 достаточно только этой проверки
А у тебя получилось выставить значение по умолчанию, чтобы полюбому выводилось?
Не понял про значение по умолчанию - чтобы, если по ссылке без параметра переходишь, то все равно что-то подставлялось?
Заношу я в настройки поля типа link в значение по умолчанию следующее:
node/206/lightbox2?org=[nid]
(node/206 - форма, lightbox2 - чтоб форма во всплвающем айфрейме появлялась, org=[nid] - тип и id материала который нужно заказывать).
А оно (значение по умолчанию) не появляется в поле link у нод (ноды обновлял после создания поля link). Можт PHP-кодом заносить значение по умолчанию?
Хочу сделать, чтобы в поле link у всех нод типа материала вылазило значение по умолчанию, а у некоторых или какбы выключать поле, или очищать его.
А оно и не должно получаться - по умолчанию оно стоит вроде только на странице 'node/add'.
Только php-кодом получается.
Спасибо!
Токен [nid] работает в link field CCK, поставил модуль Token Fild и токен [nid] там тоже работает.
А вот в текстовых однострочных полях textfield CCK токены не работают. Подскажите, пожалуйста, как сделать чтоб токены в текстовых полях CCK работали?
Хочу вставлять ссылку заказа в виде иконки в текстовое поле со списком, чтобы можно было выбирать - ставить ссылку в ноду или нет.
Вставляю в CCK поле иконку, а в views прописываю вокруг нее нужную ссылку.
Есть тип материала "Акции", там идет связь с компанией, которая проводит Акцию, по nodreference.
Заказываю материал типа Акция, с этим ясно. А как сделать, чтобы еще подгружался заголовок из поля nodereference, т. е. заголовок Компании, которая эту акцию проводит?
Сделал пока так:
<?php
if($node=node_load($_GET['action']))
print '<span class="label">' . t('Приз предоставляет') . ': </span>' . l($node->field_org_share[0]['nid'], 'node/'.$node->field_org_share[0]['nid'])
?>
Где action - материал типа Акция
field_org_share - поле nodereference "Компания, проводящая акцию".
С эти кодом выводит следующее:
<a href="/node/152">152</a>
Т. е. заголовок связанной ноды типа Компания вытащить не могу. Как я понял в nodereference хранится только nid ноды (посмотрел по Devel). Но в поле то выводится заголовок.
У меня не срабатывает php-код в поле markup под D7 + webform 3.16
Есть какое-то решение?
Спасибо автору за решение!
В Д7 всё работает, а с модулем Color Node всплювающая форма заказа делается очень легко.
А как сделать ссылку на значение select формы?
Обратиться к значению select формы можно так:
<?php
$form_state['values']['tarif1'];
?>
Пока сделал так
Без использования select
markup:
<?php
if(isset($_GET['tarif']))
print '<span class="label"><b>' . t('Тариф') . ': </b></span>' . ($_GET['tarif']);
?>
hidden:
Label: Тариф
Value:
%get[tarif]
Вид URL с передачей значения:
_domen.com/node/111?tarif=Имя%20тарифа
В итоге получаю:
Триф: Имя тарифа
На мыло уходит также:
Триф: Имя тарифа
Чтоб сделать запрос к значению select webform надо в значении по умолчанию вставить %get[key]
Например:
Значение по умолчанию:
%get[tarif]
Значения safe_key:
01|Первый
02|Второй
03|Третий
Тогда URL вида /myform?tarif=02
включит option select Второй
Сделал ajax калькулятор webform, который и по get-запросам из URL заводится и по выбору в select http://www.drupal.ru/node/91422
а вот меня то же интересует
может кто знает как?
Идея примерно такая: сделать в ссылке заказа у фирмы передачу ее мыла GET, или POST запросом в скрытое поле Webform, а в настройках Webform, где настраиваются email, сделать компонентом для отправки это скрытое поле.
Таким образом webform может быть один для всех фирм. Заморочка только, чтобы сделать им всем нужную ссылку, или кнопку, с GET, или POST запросом. Но я думаю, можно это как то решить с полем для типа материала, которое будет выводится в виде ссылки и в ссылку будет подставляться email автора ноды с запросом.
Вот например Отправка сообщений автору ноды связанной через field from URL
Предположим что адрес формы Webfrorm будет /order
Токен почты автора ноды [node:field-xxx:author:mail]
Ключ поля для подстановки email такой mailseller
В поле для подстановки email фирм пишем: %get[mailseller]
Тогда, создаем поле в материале, или через node.tpl.php, и пишем в нем:
Только вопрос, как будет передаваться через URL символ собаки - @
Лучше все же POST, а не GET
Попробую,расскажу что получилось, но спасибо в любом случае
а для д7 и что бы просто в попап окошке открывалось?
Всё просто же, сделал открытие попап с помощью colorbox_node - просто добавил к кнопке класс "colorbox-node":
<?php $node = menu_get_object('node');
print l(t('Заказать'), 'node/2/', array('query'=>array('width'=>600,'height'=>400,'product'=>$node->nid), 'attributes' => array('class' => 'button colorbox-node'))).'<br />'
?>
И в скрытом поле должно быть:
http://имя-вашего-сайта.ru/node/%get[product]
Кажется я свою проблему решил(смотреть на 6 постов выше). Сделал как написал
Я создал представление для этой вебформы, а это представление добавил как поле к товару с помощью модуля Viewfield, как пользоваться модулем читаем здесь. В качестве адресата поставил [author:mail] и всё работает. Только webform patched надо брать версию 3.18 отсюда, потому что в версии 3.19 письма будут уходит не автору ноды в которую вставлена вебформа, а автору создателя вебформы, т.е. админу сайта. Возможно 3.19 то же может решить эту задачу, только нужен соответствующий токен, но решил не парится. Кто хочет посмотреть пример в дейсвии идём сюда, и кликаем "Задать вопрос продавцу по этому товару"
Webform 4-й версии поддерживает глобальные токены. Для этого не надо ничего патчить.
Это хорошо что поддерживает, вопрос только кому уйдёт письмо, автору ноды или автору вебформы? Как я писал выше, разные версии webform patched отправляют письма разным авторам.
Не получается.
Помогите, пожалуйста!
Делаю сайт на D7. Вылезает вот такая надпись при переходе от ноды к форме заказа
Notice: Undefined index: trainings в функции eval() (строка 2 в файле /home/p5711/public_html/psy-co.ru/modules/php/php.module(80) : eval()'d code).
Честно говоря, ума не приложу откуда это.
product у меня заменено на trainings.
Я правильно понимаю, что в конкретном материале в типе материала trainings надо ставить ссылку руками?
Также не поняла куда именно нужно вставлять кусок кода в файле
node-product.tpl.php
Помогите, пожалуйста! Просто не понимаю, что происходит(((
Эта статья за четыре года устарела даже для шестерки. Тут главное идея. Посредством ссылки с параметрами в запросе, заполнить Webform данными оттуда.
В Webform сейчас нужно ставить умолчание в настройках поля %get[имя_параметра]. Каменты выше перечитайте, там несколько вариантов предлагается.
Я делал с помощью модулей панели и Webform. Страницу товара оформлял в панелях, там есть возможность использовать подстановки. Создал там пользовательское содержимое, вот такого вида:
<input type="hidden" name="title" value="%node:title">
<input type="hidden" name="articul" value="%node:field_articul">
<input type="submit" name="bsubmit" value="Заказать %node:title" />
</form>
Потом в Webform создал форму с полями:
тип Textfield, значение %post[articul] и
тип Textfield, значение %post[title] и.
Теперь, при нажатии кнопки заказать товар, происходит переход на страницу с формой заказа, в которой заполнены нужные поля. Drupal 7.
хм напишу тут..
Не подскажите как передавать значения полей между шагами page break? т.е. есть форма с несколькими шагами, и на последнем шаге нужно выводить (в поле markup) введённую информацию на предыдущих шагах, типо итоговая для проверки перед окончательным заказом