|
|
|
|
|
|
Всякое |
«Джинса» на Drupal или как «заказывать» материалыПри создании небольших сайтов часто бывает нужна какая-нибудь нестандартная особенность. Например, на сайте-каталоге товаров и/или услуг требуется форма заказа, привязанная к материалу (ноде). Подобный функционал: ссылка «Заказать» и форма для отправки сообщения с уже заполненной информацией о странице, которую заказали, уже близок к корзине онлайн-магазина. Но согласитесь, ставить ubercart или e-commerce ради одной нестандартной возможности несколько непрактично. Всего-то надо немного расширить возможности штатных модулей. Итак, нам нужна форма отправки сообщения. Для ее создания воспользуемся модулем webform. Скачав и установив этот модуль обычным способом, мы получаем новый тип материала Webform, который позволяет создавать различные формы подтверждаемые пользователем. Создадим одну такую форму. Пусть ее NID равен 10 - он будет нам нужен, чтобы составить ссылку заказа. Добавим в эту форму несколько полей, Например имя посетителя, его адрес электронной почты и так далее. Не забудьте указать настройки e-mail для формы, тогда результат ее заполнения будет отправлен вам по электронной почте. Пусть у нас также есть тип материала Продукт (product), который и представляет то, что наш пользователь будет заказывать. Идем в папку с шаблоном нашей темы и делаем там копию файла node.tpl.php под именем node-product.tpl.php. Открываем файл и добавляем в него нашу ссылку на форму заказа, сразу после переменной $content: <?php if ($page) { ?><div class="order">» <?php print l(t('Order'), 'node/10', array('query'=>array('product'=>$node->nid))) ?></div><?php }; ?> Теперь при просмотре полной ноды типа product у нас будет видна гиперссылка на нашу форму (node/10) с параметром NID текущей ноды в строке запроса. Перейдя по ссылке мы попадаем на форму. Дело осталось за небольшим. Как минимум в форме надо все-таки проинформировать посетителя, что он заказывает, да и вам не мешало бы получить адрес искомой страницы вашего сайта. Для реализации этого функционала добавим в нашу форму еще два поля. Первое поле типа markup назовем Продукт. В его настройках занесем в Значение PHP-код: <?php if($node=node_load($_GET['product'])) print '<span class="label">' . t('Product') . ': </span>' . l($node->title, 'node/'.$node->nid) ?> Пользователь увидит заголовок той ноды, которую он заказывает. Чтобы этот код обрабатывался как PHP, а не выводился в форму в виде текста, необходимо включить модуль ядра PHP-фильтр на странице сайта admin/build/modules. Добавим еще одно поле типа hidden (скрытое). Значение по умолчанию выставим таким: http://имя-вашего-сайта.ru/node/%request[product] Теперь в нашей форме по умолчанию будет забит адрес исходной ноды сформированный при помощи токена %request[product], который позволяет обратится к параметрам строки запроса и получить значение product. Этот адрес будет отослан в письме вам, что и позволит найти интересующую пользователя страницу сайта. Вот и все. Ваш материал «заказан». |
|
Direqtor Home Page by ASIADATA. |
|
Отправить комментарий