Цель: На сайте художницы необходимо прикрепить кнопку заказа работы, по которой покупатель/заказчик может отправить свое пожелание художнице.
Задачи: Использовать модуль webform и отдельный тип материала.
Решение: Для работ художницы сделан тип материала "Портфолио" (nportfolio) со следующими полями: title, body, image, tag, sale. Поле sale нужно для указания возможности продажи работы, и содержит варианты ответов "Да" "Нет". Машинное имя field_sale.
Для создания формы заказа воспользовался мануалом на my.wcult.net. Вкратце там делается следующее:
Создаётся форма заказа (имя, фамилия, почта, телефон, пожелания) с nid=26. Затем в файле темы делают шаблон для материалов типа портфолио:
node--nportfolio.tpl.php. В шаблоне после $content вставляют следующий код (для D6)
<?php if ($page) { ?><div>» <?php print l(t(‘Order’), ‘node/26′, array(‘query’=>array(‘product’=>$node->nid))) ?></div><?php }; ?>
для отображения в портфолио кнопки заказа которая будет передавать ссылку на портфолио форме заказа.
Затем в форме заказа добавляют поле с кодом (D6):
<?php if($node=node_load($_GET['product'])) print ‘<span>’ . t(‘Product’) . ‘: </span>’ . l($node->title, ‘node/’.$node->nid) ?>
для вывода заголовка ноды в форме заказа.
И ещё одно поле, содержимое которого отсылается художнице: http://имя-вашего-сайта.ru/node/%request[product]
Всё вышеперечисленное я пытался осуществить на своём сайте и адаптировать код для Drupal7.
Но столкнулся с некоторыми проблемами:
- Создав шаблон для типа материала портфолио node--nportfolio.tpl.php копированием из оригинального node.tpl.php я получил, что все работы портфолио потеряли стили css и div content. То есть шаблон применяется но не используется
- Ссылку на форму заказа пришлось делать через cck поле
<?php print l(t(‘Order’), ‘node/26′, array(‘query’=>array(‘product’=>$node->nid))); ?>
Но генерируемая ссылка получилась такого вот вида: http://sitename.com/contact/order?nportfolio Дальше естественно форма уже не работала - Кроме того сам Drupal поругивается на материал портфолио
А теперь вопросы:
- Как создать условие проверки поля field_sale?
- Как передать форме заказа ссылку на товар?
- Как заставить drupal использовать отдельный шаблон для материала портфолио?
Комментарии
Генерировать форму стандартно (Form API)в собственном модуле..
Вариант 2.
98% модули, реализующие нужный вам функционал, уже есть
А подсказать?
Ставить e-commerce или ubercart ради одной только формы запроса, это всё равно что из пушки по воробьям...
UPD: Проверил код на стандартной теме оформления. Всё работает вполне корректно. Похоже надо ковырять код андромеды
Мысли у кого есть? А!?
Написал багрепорт
я делал так:
1. Через webform сделал форму запроса на конкретный тур (в вашем случае портфолио)
в Форме сделал скрытое поле с токенами %nid %title - для отправке владельцу сайта по почте
2. Указал использовать форму в блоке
3. Указал отображать блок у конкретного типа материала (в вашем случае портфолио)
Почти все.
Токены %nid %title в вебформ работают не корректно, решение - http://dovbysh.com/ru/blogs/kodo/webform-ispolzovanie-tokenov-title-i-nid
Схема стандартная, у меня использовалась под Д6, но и к Д7 применима.
Большое спасибо за совет, но всё таки я бы хотел разобраться с существующей проблемой. А именно почему код работает в стандартной дрюпаловской теме, но не работает в этой.
Могу сказать что приведённый в теме код абсолютно рабочий. Это был не баг темы, это была ошибка в синтаксисе php. Исправил синтаксис - исправил проблему
Тема по теме: http://www.drupal.ru/node/23886
у меня тоже не сработало.
когда патчил выдало:
warning: 1 line adds whitespace errors
патчил 7-3.18... на форуме нашёл #7 after 6.x-3.17 update, stopped working. может дело в версии?
кто-нибудт может целиком работающий пропатченый модуль бросить?
да. работает на 3.13... пока её и поставил. что с новой версией делать никто не занет?