Форма заказа для drupal7. Шаблоны tpl.php

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

Аватар пользователя wiw wiw 20 ноября 2011 в 11:02

Цель: На сайте художницы необходимо прикрепить кнопку заказа работы, по которой покупатель/заказчик может отправить свое пожелание художнице.

Задачи: Использовать модуль 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>&raquo; <?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.
Но столкнулся с некоторыми проблемами:

  1. Создав шаблон для типа материала портфолио node--nportfolio.tpl.php копированием из оригинального node.tpl.php я получил, что все работы портфолио потеряли стили css и div content. То есть шаблон применяется но не используется
  2. Ссылку на форму заказа пришлось делать через cck поле
    <?php print l(t(‘Order’), ‘node/26′, array(‘query’=>array(‘product’=>$node->nid))); ?>
    Но генерируемая ссылка получилась такого вот вида: http://sitename.com/contact/order?nportfolio Дальше естественно форма уже не работала
  3. Кроме того сам Drupal поругивается на материал портфолио
        Notice: Undefined variable: node в функции eval() (строка 1 в файле .../modules/php/php.module(74) : eval()'d code).
        Notice: Trying to get property of non-object в функции eval() (строка 1 в файле .../modules/php/php.module(74) : eval()'
    d code).

А теперь вопросы:

  1. Как создать условие проверки поля field_sale?
  2. Как передать форме заказа ссылку на товар?
  3. Как заставить drupal использовать отдельный шаблон для материала портфолио?

Комментарии

Аватар пользователя Orion76 Orion76 20 ноября 2011 в 14:32

"wiw" wrote:
Как создать условие проверки поля field_sale?
Как передать форме заказа ссылку на товар?

Генерировать форму стандартно (Form API)в собственном модуле..

Вариант 2.
98% модули, реализующие нужный вам функционал, уже есть

Аватар пользователя wiw wiw 20 ноября 2011 в 19:20

"orion76" wrote:
98% модули, реализующие нужный вам функционал, уже есть

А подсказать?

Ставить e-commerce или ubercart ради одной только формы запроса, это всё равно что из пушки по воробьям...

UPD: Проверил код на стандартной теме оформления. Всё работает вполне корректно. Похоже надо ковырять код андромеды

Мысли у кого есть? А!?

Аватар пользователя kodo kodo 1 сентября 2016 в 6:50

я делал так:
1. Через webform сделал форму запроса на конкретный тур (в вашем случае портфолио)
в Форме сделал скрытое поле с токенами %nid %title - для отправке владельцу сайта по почте
2. Указал использовать форму в блоке
3. Указал отображать блок у конкретного типа материала (в вашем случае портфолио)
Почти все.
Токены %nid %title в вебформ работают не корректно, решение - http://dovbysh.com/ru/blogs/kodo/webform-ispolzovanie-tokenov-title-i-nid
Схема стандартная, у меня использовалась под Д6, но и к Д7 применима.

Аватар пользователя wiw wiw 23 ноября 2011 в 9:31

Большое спасибо за совет, но всё таки я бы хотел разобраться с существующей проблемой. А именно почему код работает в стандартной дрюпаловской теме, но не работает в этой.

Аватар пользователя wiw wiw 24 ноября 2011 в 17:30

Могу сказать что приведённый в теме код абсолютно рабочий. Это был не баг темы, это была ошибка в синтаксисе php. Исправил синтаксис - исправил проблему Smile

Аватар пользователя sdm98 sdm98 11 сентября 2012 в 17:35

у меня тоже не сработало.
когда патчил выдало:
warning: 1 line adds whitespace errors

патчил 7-3.18... на форуме нашёл #7 after 6.x-3.17 update, stopped working. может дело в версии?

кто-нибудт может целиком работающий пропатченый модуль бросить?