Дек
23

Virtuemart. Делаем красивую форму вопроса о товаре

Собственно, в стандартной сборке вирта есть такая штука, как “спросить о товаре”. Реализована она просто ужасно: после нажатия на ссылку вас перекидывает на отдельную страницу с формой, которую нужно будет заполнить. Нехорошо! Я же предлагаю воспользоваться и открыть форму в красивом ajax-окошке. Согласны попробовать реализовать? Тогда в путь!

Как устанавливать Highslide подробно написано на оф. сайте. Там же качаем свежую сборку. Кстати, с помощью хайслайда можно и в виртумарте сделать более красивыми, нежели при использовании стандартного лайтбокса, но это уже тема другой .

Будем колдовать в файле flypage.tpl. Для начала нам нужно достать саму форму, она расположена в файле pages/shop.ask.tpl.. Забираем её оттуда и вставляем в flypage. Сохраняем. В результате получаем, что отображается на странице товара. Уже хорошо! Осталось только хайслайд прицепить к этому добру, а потом и электронный архив документов пополнить новой разработочкой.

Для начала удаляем нахрен переменную $ask_seller. Она нам совершенно не нужна. Просто рисуем ссылку, наподобие такой:

1
 <a href="#" onclick="return hs.htmlExpand(this, {maincontentId: 'my-content', headingText: 'Задать вопрос про <?php echo $product_name ?>', width: 600, height:500 })">Задайте вопрос прямо сейчас</a>

теперь прячем всю форму в див, следующего содержания:

1
<div class="highslide-maincontent" id="my-content"> тут код формы </div>

Всё, получаем красивое окошко с формой. Можно, конечно, дальше заняться украшательством самой формы. Я же решил, что это будет лишним.

Для наглядности приведу получившийся результат. Вот он:

100by

На сегодня всё. На досуге почитайте про то, как зарегистрировать ип и работать официально. Удачи!

11 коммент. к записи “Virtuemart. Делаем красивую форму вопроса о товаре”

  • Игорь 16 мая 2011 - 9:07

    Что то не получается – пока не вставляю форму – все нормально – окошко всплывает, но как только вставляю код формы – все – страницу рвет!

  • K_E_V_in 17 мая 2011 - 16:14

    Проверьте код на наличие ошибок. Где-то див не закрыт или подобная мелочь

  • Игорь 17 мая 2011 - 22:41

    C формой разобрался – она вставилась, и открывается во всплывающем окне – но при нажатии на отправить – ничего не происходит :(
    Вот мой flypage – h__p://climatteh.dp.ua/files/flypage.tpl.rar
    Посмотрите пожалуйста – что не так? Кстати – вирт март -1.1.4.

  • K_E_V_in 25 мая 2011 - 18:53

    По таким вопросам – пишите через обратную связь. Разберемся

  • Alex 19 июня 2011 - 0:01

    Что именно забираем из shop.ask.tpl.php и в какое место вставляем во flypage.tpl. Пробую забрать и вставить, отображается не корректно, без шаблона.

  • K_E_V_in 20 июня 2011 - 10:20

    Всю форму забираем.

  • Игорь 9 сентября 2011 - 21:51

    Повторите плз, куда в какую строку flypage.tpl вставляем содранную форму…

  • K_E_V_in 9 сентября 2011 - 23:43

    В самый низ флайпэйджа можно вставить

  • den 21 ноября 2011 - 12:58

    какую именно часть формы вы используете?

  • K_E_V_in 21 ноября 2011 - 13:52

    форма находится в файле pages/shop.ask.tpl.php

  • den 21 января 2012 - 21:34

    Ну, там тупо всю форму брать не можно…..ее надо переделывать….а как?? если тупо вставить, странице рвет……я нашел переделанную, но она тоже не пашет……но, выводится лучше за эту…
    вот код
    if ( $set == 0 ) { // This is the enquiry form!
    $validate = vmIsJoomla( ’1.5′ )? JUtility::getHash( $mainframe->getCfg( ‘db’ ) ) : mosHash( $mainframe->getCfg( ‘db’ ) );
    $output .= <<<FORMA

    {$VM_LANG->_(‘NAME_PROMPT’)}

    {$VM_LANG->_(‘EMAIL_PROMPT’)}

    {$VM_LANG->_(‘MESSAGE_PROMPT’)}
    {$subject}

    _(‘SEND_BUTTON’)}” class=”button” onclick=”validateEnquiryForm()” />

    FORMA;
    $output .= ”
    _(‘CONTACT_FORM_NC’,false)}’ );
    } else if ( ( document.emailForm.email.value.search(‘;’)!= -1 ) || ( document.emailForm.email.value.search(‘,’)!= -1 ) || ( document.emailForm.email.value.search(‘ ‘)!= -1 ) ) {
    alert( ‘You cannot enter more than one email address’ );
    } else {
    document.emailForm.action = ‘”.sefRelToAbs(‘index.php’).”‘
    document.emailForm.submit();
    }
    }
    –>”;
    } else { // if set==1 then we have sent the email to the vendor and say thank you here.
    $output .= <<<EOT
    {$VM_LANG->_(‘THANK_MESSAGE’)}

    {$VM_LANG->_(‘VM_RETURN_TO_PRODUCT’)}
    EOT;
    }

Прокомментировать

Рубрики

Облако меток

В прямом эфире