VirtueMart «задать вопрос» во всплывающем окне

егодня хочу рассказать о модификации VirtueMart позволяющей выводить форму вопроса по товару во всплывающим окне с красивым эффектом shadowbox.

выглядеть это будет следующим образом
shadowbox  VirtueMart

Что потребуется для создания всплывающего окна формы «Задайте вопрос по этому товару»:

  • Модуль ninja shadowbox (скачать модуль shadowbox)
  • знание css (что бы оформить нашу форму)
  • немного усердия
  • прямые руки

Если все вышеперечисленное имеется тогда приступим.

Устанавливаем модуль shadowbox стандартными средствами joomla.

Публикуем его в любой позиции ( модуль не будет отображаться)

Теперь начнем модифицировать файлы virtuemarket.

откроем файл shop.product_details.php находящийся по адресу \administrator\components\com_virtuemart\html\shop.product_details.php

Ищем /** Ask seller a question **/ приблизительно 346 строчка.

и заменяем  строки:

$ask_seller_href = $sess->url( $_SERVER [‘PHP_SELF’].’?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].»&product_id=$product_id&category_id=$category_id» );

на

$ask_seller_href = $sess->url( $_SERVER [‘PHP_SELF’].’/index2.php?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].»&product_id=$product_id&category_id=$category_id» );

а так же

$ask_seller = ‘<a href=»‘. $ask_seller_href .'»>’. $ask_seller_text .'</a>’;

на

$ask_seller = ‘<a rel=»shadowbox;height=420;width=450″ href=»‘. $ask_seller_href .'»>’. $ask_seller_text .'</a>’;

Изменение первой строки позволило нам выводить не всю страницу а только сам компонент, без модулей и шаблона.

Изменение второй строки заставляет открывать ссылку ведущую на форму с использованием shadowbox. А так же задает размеры всплывающего окна. Если размеры не указать то окно будет на весь экран и будет смотреться не очень то красиво.

Сохраняем изменения и смотрим.  Впринципе работает.. но уж очень некрасиво…

Раскрасить нашу форму через css файл шаблона уже не удасться.. т. к. при нашем способе вывода шаблон не подключается.

Что бы задать стили css для формы откроем файл shop.ask.tpl.php находящийся по адресу \components\com_virtuemart\themes\ИМЯ ВАШЕГО ШАБЛОНА\templates\pages\shop.ask.tpl.php

Здесь после следующего кода можно написать свои стили:

if ( $set == 0 ) { // This is the enquiry form!

$validate = vmIsJoomla( ‘1.5’ ) ? JUtility::getHash( $mainframe->getCfg( ‘db’ ) ) : mosHash( $mainframe->getCfg( ‘db’ ) );
?>

Привожу пример того как я раскрасил форму:

<style type=»text/css»>
#entryformm {
padding-left: 30px;
padding-top: 20px;}
input, textarea {
padding: 4px;
border: solid 1px #E5E5E5;
outline: 0;
font: normal 13px/100% Verdana, Tahoma, sans-serif;
width: 160px;
background: #FFFFFF;  }
textarea {
width: 350px;
max-width: 350px;
height: 150px;
line-height: 150%;
}
input:hover, textarea:hover,
input:focus, textarea:focus {
border-color: #ABABAB;  }
.form label {
margin-left: 10px;
color: #999999;
}

input.button  {
margin-top: 10px;
width: auto;
padding: 9px 15px;
background: #617798;
border: 1px #ccc solid;
font-size: 14px;
color: #FFFFFF;
}

Теперь наша форма открывается во всплывающем окне и выглядит довольно привлекательно.

Но ссылка назад к товару портит всю малину.. Вот её код в шаблоне:
<a href=»<?php echo $product_link ?>»><?php echo $VM_LANG->_(‘VM_RETURN_TO_PRODUCT’) ?></a>

Я лично удалил эту ссылку т.к. закрывая окошко мы как раз попадаем к нашему товару.. если же вы хотите оставить ссыль то необходимо видоизменить её что бы клик приводил к закрытию нашего окошка:

<a onclick=»Shadowbox.close()»href=»<?php echo $product_link ?>»><?php echo $VM_LANG->_(‘VM_RETURN_TO_PRODUCT’) ?></a>
Заполняем форму, жмем «отправить» и получаем  довольно неприятное сообщение что мол все гуд..

Исправляем это недоразумение в этом же файле:

после кода

<?php
}
else { // if set==1 then we have sent the email to the vendor and say thank you here.
?>

можно вставить свой html код и написать или разместить все что угодно

до следующего кода :

<?php
}
?>

Вот как получилось у меня:

shadowbox-message-mail

На этом спешу откланятся.. всем спасибо все свободны)

Запись опубликована в рубрике Joomla с метками . Добавьте в закладки постоянную ссылку.

42 комментария на «VirtueMart «задать вопрос» во всплывающем окне»

  1. xaoc говорит:

    Не работает. При открытии страницы на которой есть ссылка (кнопка) «спросить о товаре» — не появляется ничего. И страница тоже не появляется. Люди не забывайте делать Бекапы!

  2. admin говорит:

    проверьте правильность кода, лишние и недостающие кавычки и тд.. у меня все работает, так же не забываем о конфликтах js скриптов. но в данном случае вы что то намудрили с кодом на этой самой странице.. файл shop.product_details.php

  3. Max говорит:

    У меня такая же проблема, как описал хаос.

  4. admin говорит:

    попробуйте прописать на любую ссылку rel=”shadowbox;height=500;width=500″ и посмотрите, открывается ли окно шадоубокс, если нет — проблема не с виртмаркетом, это уже хорошо.. будем смотреть дальше..

  5. Max говорит:

    Попробовал прописать, shadowbox не вылазит.

  6. admin говорит:

    возможно конфликт скриптов, посмотрите какие еще скрипты используются, попробуйте отключить все плагины со скриптами, если заработал шадоу — поочередно включайте плагины и смотрите какой косячный..

  7. admin говорит:

    если не решится проблема киньте адрес.. посмотрю..

  8. Max говорит:

    Млин, все перепробовал, не получается (открывается пустая страница). Буду благодарен, если посмотрите http://www.youasia.ru. (На всякий случай login: admin; пароль: мой e-mail)

  9. admin говорит:

    проблема кроется в ошибке кода в файле \administrator\components\com_virtuemart\html\shop.product_details.php проверьте код.. точки запятые.. закрытие функций.. советую использовать notepad++ неполучится — скидывайте файл) да.. и поменяйте пароль))

  10. Max говорит:

    Редактированием файла shop.product_details.php добился того, что страница описания товара стала открываться нормально, но при нажатии кнопки «Задайте вопрос по этому товару», открывается страница, на которой надпись «Ask a Question» и больше ничего.
    Если у вас найдется свободная минутка, посмотрите пожалуйста:
    http://www.youasia.ru/administrator/shop.product_details.zip

  11. admin говорит:

    уважаемый… ну хоть каплю внимательности.. и так всё расписано по полочкам.. Бегло глянул файл.. и сразу строка 350:
    неправильная кавычка.. вместо другой кавычки вообще знак вопроса….

    Прежде чем говорить о том что «нихрена не работает» сделайте все правильно.. хотя бы в плане синтаксиса…

  12. Max говорит:

    Все исправил, теперь выводится шоубокс, в котором показывается страница, на которой надпись «Ask a Question» и больше ничего. Это тоже ошибки синтаксиса??? Заранее спасибо.

  13. admin говорит:

    Пожалуй что да.. и вероятно в файле

    \components\com_virtuemart\themes\ИМЯ ВАШЕГО ШАБЛОНА\templates\pages\shop.ask.tpl.php

  14. Max говорит:

    Спасибо за многочисленные советы. Буду пробовать редактировать.

  15. Max говорит:

    Понимаю, что уже достал вас своими вопросами, но все же. Ставлю другой шаблон и все работает, а на этом ну никак не хочет, открывается окно шоубокса и надпись Ask a Question и больше ничего.

  16. admin говорит:

    shop.ask.tpl.php вот етот файлег из установочного пакета шаблона выдерните и замените тот что на сайте))

    И кстати за многочисленные советы не обижусь если ссылочку поставите))

  17. Max говорит:

    Неа, результата не дает. Пробовал и из других шаблонов закидывать этот файл. Только надпись Ask a Question и больше ничего. Видимо проблема с моим шаблоном

  18. Вованище говорит:

    Спасибо за идею. Использовал для еще и для карточки товара.
    Посмотреть можно здесь: http://www.anna-stepanovna.ru/
    Поставил + на joomlaforum.ru.

  19. Дмитрий говорит:

    Извините, что не по теме вопрос. Но как эффект shadowbox применить к выводу фоток товара во flypage? Хотя бы ткните носом, в каких файлах рыть? Благодарю заранее, если сочтете возможным ответить.

  20. admin говорит:

    Дмитрий глянул по быстрому, вроде сделал.. в файле \administrator\components\com_virtuemart\classes\htmlTools.class.php в строке 899 замените lightbox на shadowbox и будем вам счастье.. отпишитесь о работоспособности.. нет ли глюков каких…
    более подробные ответы буду давать на форуме) а на каком — скоро узнаете)

    Вованище по сути можно весь магазин в шадоубоксах сделать) и красиво и необычно.. только если у кого нет яваскрипта то плохо им будет) Спасибо за плюсик.

  21. Дмитрий говорит:

    Благодарю, но в моем случае не помогло. У меня стоит «Yagendoo_VaMazing», там все красиво, но вот shadowbox отсутствует. Вот здесь можно увидеть эту тему, что я использую.

    http://demo.yagendoo.com/joomla/?view=vm-theme-vamazing

    Использую Product Detailspage Zoom 2. Взгляните как это у них реализовано. Мне не нравится эта траурная черная рамочка и нет красивого эффекта автоматического «подравнивания» под размер фотки, перед тем, как её показать. Вот что делать? :(((

  22. Вованище говорит:

    И ничего страшного, если нет яваскрипта, просто открывается страница без менюшек.

  23. admin говорит:

    Дмитрий таких штучек не использовал.. но алгоритм всегда одинаков — firebug’ом смотрите как оформляется ссчка на картинку.. далее ищете поиском по файлам параметр какой либо.. я искал «lightbox» выбираете из найденного то что нужно и меняете.. сорри но белее подробно на форуме.. щас просто нет времени разбираться.. делаем проект)

    Вованище неспорю.. ничего особо страшного но общее впечатление теряется.. если для проекта важен имидж то ОБЯЗАТЕЛЬНО надо делать проверку на яву и выводить какое то сообщение..

  24. Дмитрий говорит:

    Спасибо, ждем ссылку на форум! 🙂

  25. Дмитрий говорит:

    Не подскажете ли, где задается класс эффекта (showbox и пр.) в Joomla? При наведении на фото товара Firebug говорит, что class «modal», дальше идет http картинки и т.д. Так вот, где этот класс задается?

  26. Mack говорит:

    Уважаемые господа!

    Подскажите пожалуйста как прописать это в shop.browse.php если я имею немного другой код. А именно:

    /** Ask seller a question **/

    $product_id = $db_browse->f(‘product_id’);

    $products[$i][‘ask_seller_href’] = $sess->url( $_SERVER [‘PHP_SELF’].’?page=shop.ask&product_id=’.$product_id );

    $products[$i][‘ask_seller_text’] = $VM_LANG->_(‘VM_PRODUCT_ENQUIRY_LBL’);

    А файл browse_1.php имеет такой вид:

    <a class="button" href="»>

  27. Mack говорит:

    Изменил первую строку:

    $ask_seller_href = $sess->url( $_SERVER [‘PHP_SELF’].’/index2.php?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].”&product_id=$product_id&category_id=$category_id” );

    на:

    $products[$i][‘ask_seller_href’] = $sess->url( $_SERVER [‘PHP_SELF’].
    ‘/index2.php?page=shop.ask&product_id=’.$product_id );

    Что позволило выводить не всю страницу а только сам компонент, без модулей и шаблона.

    Но не получается изменить вторую строки которая открывает ссылку ведущую на форму с использованием shadowbox:

    $ask_seller = ‘’. $ask_seller_text .’’;

    В файле browse_1.php этот код у меня имеет вот такой вид:

    $products[$i][‘ask_seller_text’] = $VM_LANG->_(‘VM_PRODUCT_ENQUIRY_LBL’);

    Если можно ПОМОГИТЕ!!! plz…

  28. Mack говорит:

    Как правильно вставить:

    rel=”shadowbox;height=420;width=450″

    в:

    $products[$i][‘ask_seller_text’] = $VM_LANG->_(‘VM_PRODUCT_ENQUIRY_LBL’);

  29. Pers говорит:

    Вованище, можешь поделиться кодом твоей реализации для карточки товара…

  30. lottis говорит:

    Спасибо огромное за мануал, получилось почти все!
    Только в модуле пришлось использовать загрузку не jquery а Dojo, а также работает с YUI, но юи весит в 5 раз больше.
    У меня на сайте http://recont.com.ua/Kraski-dlya-metalla/Hammerite-kraska-dlya-metalla.html можно посмотреть как работает, но есть один затык — у меня не показывается последняя форма там где благодарность за интерес к товару — а вместо этого во фрейме показывает главный сайт и потом перенаправляет на index.php главной. В чем может быть затык подскажите?

    Вот привожу код shop.product_details.php^
    /** Ask seller a question **/
    /* lottis
    $ask_seller_href = $sess->url( $_SERVER [‘PHP_SELF’].’?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].»&product_id=$product_id&category_id=$category_id» ); */

    $ask_seller_href = $sess->url( $_SERVER
    [‘PHP_SELF’].’/index2.php?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].»&product_id=$product_id&category_id=$category_id» );

    $ask_seller_text = $VM_LANG->_(‘VM_PRODUCT_ENQUIRY_LBL’);

    $ask_seller = ‘‘. $ask_seller_text .’‘;

    /* lottis $ask_seller = ‘‘. $ask_seller_text .’‘; */

    /* SHOW RATING */

    А вот здесь код shop.ask.tpl.php

    else { // if set==1 then we have sent the email to the vendor and say thank you here.
    ?>
    <img src="images/button_ok.png» height=»48″ width=»48″ style=»text-align: center» alt=»Success» border=»0″ />
    _(‘THANK_MESSAGE’) ?>

    <a onclick="Shadowbox.close()"href="»>_(‘VM_RETURN_TO_PRODUCT’) ?>
    <!—<a class="button" href="»>_(‘VM_RETURN_TO_PRODUCT’) ?>—>

  31. andrew говорит:

    После обеих замен в shop.product_details.php стало выводите следущее при переходе на страницу любого товара:

    Parse error: syntax error, unexpected ‘=’ in /home/a/afon9l/public_html/administrator/components/com_virtuemart/html/shop.product_details.php on line 347

    347 строчка это ваше изменение:
    $ask_seller_href = $sess->url( $_SERVER [‘PHP_SELF’].’/index2.php?page=shop.ask&flypage=’.@$_REQUEST[‘flypage’].”&product_id=$product_id&category_id=$category_id” );

    Прямо из вашей статьи копируются неправильные ковычки со скосом. я вручную исправил, но пока что открывается только в новой странице без shadowbox и на весь экран.
    И к стати знак вопроса у меня тоже появлялся как у кого то тут вместо одной кавычки при копировании кода с этой страницы в строке 350.

    Сейчас разбираюсь…(

  32. andrew говорит:

    Не всплывало, потому что забыл после восстановления бекапа поставить еще раз нинзя шедоу. Пока что всплывает буду доделовать доконца..)

  33. andrew говорит:

    Короче говоря вылезает пустое белое окно, а если просто смотреть картинки на флупейдж, то вылезает 2 окна с картинками: старое что было до этого и новое от нинзи, что мне делать ? Я хочу чтобы у меня было 1 окно при просмотре картинок товара и нормально работало окно с «задать вопрос».

  34. andrew говорит:

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

  35. Антон говорит:

    Автор! Огромное спасибо. Есть только одна проблема: после отправки формы в шедоу открывается сайт полностью, а не то, что хочется.
    Я уже не первый с этой проблемой. Помогите, пожалуйста!

  36. Андрей говорит:

    Попробовал, почти получилось, но есть одно но.
    При открытии shadow в нем отображается вся страница товара (дубликат страницы), вместе с менюшками и т.д.
    Как исправить?

  37. Андрей говорит:

    А по какой причине после отправки почты отображается главная страница в shadow?

  38. Андрей говорит:

    И что делать людям, у которых установлена капча? Которая всплывает после отправки письма в shadow в виде главной страницы и капчи? (Компонент капчи JoomlaXi http://www.joomlaxi.com)

  39. Олег говорит:

    Результат отпрвки письма грузится в шаблоне. Как сделать, чтобы грузился без шаблона в shadowbox?

  40. Proaqua говорит:

    После отправки, вместо благодарности, как и у многих появляется Главная страница. Может есть какая нибудь команда, которая бы закрывала окно автоматически, ну хотя бы через 2 секунды. Или подскажите, как всё таки доделать «окно благодарений».

  41. lusikov говорит:

    andrew ,тоже брюсь с глюком 2х окон, подскажи как исправил?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *