Kpoxa Опубликовано 19 мая, 2013 Жалоба Поделиться Опубликовано 19 мая, 2013 1. tell_friend.php поместить в папку /ajax/2. tell_friend.css в папку /design/{шаблон}/css/3. tell_friend_js.txt переименовать в tell_friend.js и в папку /design/{шаблон}/js/4. в файле /design/{шаблон}/html/index.tpl между <head> </head> добавить строки <script type="text/javascript" src="design/{$settings->theme}/js/tell_friend.js"></script> <link rel="stylesheet" type="text/css" href="design/{$settings->theme}/css/tell_friend.css" /> 5. в файле /design/{шаблон}/html/product.tpl внести измененияв строке 41 дописать tell_friend_variant="{$v->name}" tell_friend_price="{$v->price|convert}" получится <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id} checked{/if} {if $product->variants|count<2}style="display:none;"{/if} tell_friend_variant="{$v->name}" tell_friend_price="{$v->price|convert}"/> далее после кнопки "В корзину" вставить <a id="tell_friend" href="#tell_friend_form" class="button" />Отправить другу</a> <div style="display:none;"> <div id="tell_friend_form"> <input id="product_name" type="hidden" value="{$product->name}"> <input id="product_variant" type="hidden" value="{$product->variant->name}"> <input id="product_price" type="hidden" value="{$product->variant->price|convert}"> <input id="product_url" type="hidden" value="{$config->root_url}/products/{$product->url}"> <h4>{$product->name|escape} <em>{$product->variant->name}</em></h4> <p id="tell_friend_result">Пожалуйста, укажите ваше имя и данные друга, <br /> для отправки сообщения </p> <p><label>Ваше имя:</label><input type="text" id="refer_name"/></p> <p><label>Имя друга:</label><input type="text" id="friend_name"/></p> <p><label>E-Mail друга:</label><input type="text" id="friend_mail"/></p> <p><label>Примечание:</label><input type="text" id="refer_message"/></p> <p class="captcha"> <label><img src="captcha2/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></label> <input class="input_captcha" id="tf_captcha" name="tf_captcha" type="text"/> </p> <div class="tell_friend_center"> <button class="tell_friend_button"><span>Отправить другу</span></button> </div> </div> </div>и в конце файла после строк {literal} <script> $(function() { [/code] добавить [code=auto:0] $('input[name=variant]').change(function() { $tell_friend_variant = $('input[name=variant]:checked').attr('tell_friend_variant'); $tell_friend_price = $('input[name=variant]:checked').attr('tell_friend_price'); $(this).closest('form').find('h4 em').html($tell_friend_variant); $(this).closest('form').find('input#product_variant').val($tell_friend_variant); $(this).closest('form').find('input#product_price').val($tell_friend_price); }); 6. Так как на странице присутствует капча, у меня не получилось обнулить ее перед открытием окна, поэтомусделайте копию папки /captcha/ и назовите ее /captcha2/ и в файле image.php заменить captcha_code на tell_friend_code Вот и все, идея написания модуля принадлежит [/size]psavatar.Если у Вас не работает, то значит что-то сделали не так.tell_friend.phptell_friend.csstell_friend_js.txt Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 19 мая, 2013 Жалоба Поделиться Опубликовано 19 мая, 2013 Вчера делал такой же модуль, только реализация другая.Кроха ты забыл форму отправки написать. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 19 мая, 2013 Автор Жалоба Поделиться Опубликовано 19 мая, 2013 Упс, сейчас исправлю. Цитата Ссылка на сообщение Поделиться на другие сайты
ps-simpla Опубликовано 19 мая, 2013 Жалоба Поделиться Опубликовано 19 мая, 2013 большое спасибо таким людям как Кроха, отозвался и помог, большое спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 19 мая, 2013 Жалоба Поделиться Опубликовано 19 мая, 2013 Вариант моей реализации (без крохи кода): Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Noxter, склоняю голову, видно профи, ничего лишнего и красиво, теперь смотрю на свою поделку и вижу что это, грубо говоря, детское решение вопроса. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Noxter, склоняю голову, видно профи, ничего лишнего и красиво, теперь смотрю на свою поделку и вижу что это, грубо говоря, детское решение вопроса.Правильно продуманный подход к реализации. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Правильно продуманный подход к реализации.Учится, учится и еще раз учится. Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Спасибо! Только вроде, вот здесь лишняя кавычка. <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id} checked "{/if} {if $product->variants|count<2}style="display:none;"{/if} tell_friend_variant="{$v->name}" tell_friend_price="{$v->price|convert}"/> Еще, в скрипте tell_friend.js включен класс .fancybox, я его не использую.Так же сама форма скрыта, не отображается при просмотре товара, вот код: <div style="display:none;"> <div id="tell_friend_form"> бла бла бла <p><label>Ваше имя:</label><input type="text" id="refer_name"/></p> бла бла бла </div> </div> Если убрать display:none, появляется форма, с кнопкой - "Отправить другу", и при нажатии на нее - Товар добавляется в корзину, но не как не отправляет "другу").P.S. Все файлы включил как написано в инструкции. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Спасибо! Только вроде, вот здесь лишняя кавычка. <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id} checked "{/if} {if $product->variants|count<2}style="display:none;"{/if} tell_friend_variant="{$v->name}" tell_friend_price="{$v->price|convert}"/> Спасибо, действительно, после checked кавычка не нужна.fancybox используется в дефолтовом шаблоне, поэтому открытие модального окна и передача данных привязано к нему. Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Спасибо, все работает! Только форму по прежнему не отображает при: <div style="display:none;"> <div id="tell_friend_form"> бла бла бла <p><label>Ваше имя:</label><input type="text" id="refer_name"/></p> </div> </div> И не будет отображать при display:none. Специально установил на локальную машину симплу с дефолтным шаблоном, привязка к fancybox есть (по коду), однако всплывающего окна и тем более кнопки - отправить другу - нет. А если убрать скрытие формы отображается, письмо приходит. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Покажите <head> </head> из index.tpl Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Там все по дефолту, только что сипмлу поставил!) <head> <base href="{$config->root_url}/"/> <title>{$meta_title|escape}</title> {* Метатеги *} <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="description" content="{$meta_description|escape}" /> <meta name="keywords" content="{$meta_keywords|escape}" /> <meta name="viewport" content="width=1024"/> {* Стили *} <link href="design/{$settings->theme|escape}/css/style.css" rel="stylesheet" type="text/css" media="screen"/> <link href="design/{$settings->theme|escape}/images/favicon.ico" rel="icon" type="image/x-icon"/> <link href="design/{$settings->theme|escape}/images/favicon.ico" rel="shortcut icon" type="image/x-icon"/> {* JQuery *} <script src="js/jquery/jquery.js" type="text/javascript"></script> <script src="design/{$settings->theme}/js/ajax_compare.js"></script> {* Твои скрипты специально прописал локально, но и пробовал дефолтовый вариант *} <script type="text/javascript" src="http://localhost/simpla/design/default_1/js/tell_friend.js"></script> <link rel="stylesheet" type="text/css" href="http://localhost/simpla/design/default_1/css/tell_friend.css" /> {* Всплывающие подсказки для администратора *} {if $smarty.session.admin == 'admin'} <script src ="js/admintooltip/admintooltip.js" type="text/javascript"></script> <link href="js/admintooltip/css/admintooltip.css" rel="stylesheet" type="text/css" /> {/if} {* Увеличитель картинок *} <script type="text/javascript" src="js/fancybox/jquery.fancybox-1.3.4.pack.js"></script> <link rel="stylesheet" href="js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> {* Ctrl-навигация на соседние товары *} <script type="text/javascript" src="js/ctrlnavigate.js"></script> {* Аяксовая корзина *} <script src="design/{$settings->theme}/js/jquery-ui.min.js"></script> <script src="design/{$settings->theme}/js/ajax_cart.js"></script> {* js-проверка форм *} <script src="/js/baloon/js/baloon.js" type="text/javascript"></script> <link href="/js/baloon/css/baloon.css" rel="stylesheet" type="text/css" /> </head> Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Поставьте вызов tell_friend после вызова fancybox Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Без изменений.. {* Увеличитель картинок *} <script type="text/javascript" src="js/fancybox/jquery.fancybox-1.3.4.pack.js"></script> <link rel="stylesheet" href="js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" /> <script type="text/javascript" src="http://localhost/simpla/design/default_1/js/tell_friend.js"></script> <link rel="stylesheet" type="text/css" href="http://localhost/simpla/design/default_1/css/tell_friend.css" /> Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 Очень странно, проверьте пошагово. Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Все перепроверено, специально чистую simply поставил. Все скрипты подключены, - сама форма сообщения отправляет, это без проблем. Просто самой формы с кнопкой - отправить другу, нет! Каким образом она появится при display:none? Ниииипанятно) Повторюсь, если убрать display:none и отправить так, письмо доходит, без проблемм. Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 fancybox убирает display:none Цитата Ссылка на сообщение Поделиться на другие сайты
artbe Опубликовано 20 мая, 2013 Жалоба Поделиться Опубликовано 20 мая, 2013 Вообщем припилил костыль от сюда Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 20 мая, 2013 Автор Жалоба Поделиться Опубликовано 20 мая, 2013 попробуйте добавить jquery-migrate, а по мне лучше не использовать jquery 1.9.1 <script src="http://code.jquery.com/jquery-1.9.1.js"></script><script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> Цитата Ссылка на сообщение Поделиться на другие сайты
maksam07 Опубликовано 22 мая, 2013 Жалоба Поделиться Опубликовано 22 мая, 2013 Все поставил правильно, только папку капчи не копировал, это не так быстро делается, просто хотел увидеть как выглядит это окошко, но у меня даже текста "отправить другу" не было.. какой кусок кода вам прислать что бы вы проверили? Цитата Ссылка на сообщение Поделиться на другие сайты
Kpoxa Опубликовано 22 мая, 2013 Автор Жалоба Поделиться Опубликовано 22 мая, 2013 Кнопка в product.tpl, покажите куда вы вставили код. Цитата Ссылка на сообщение Поделиться на другие сайты
maksam07 Опубликовано 22 мая, 2013 Жалоба Поделиться Опубликовано 22 мая, 2013 Кнопка в product.tpl, покажите куда вы вставили код.после <input type="submit" class="button" value="{if $product->variants|count<1}{$v->price|convert} {$currency->sign|escape} |{else}{/if} в корзину" data-result-text="{if $product->variants|count<1}{$v->price|convert} {$currency->sign|escape} |{else}{/if} добавлено"/> Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 4 августа, 2013 Жалоба Поделиться Опубликовано 4 августа, 2013 Kpoxa Спасибо за реализацию! А с выпадающим списком вариантов не делал? Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 4 августа, 2013 Жалоба Поделиться Опубликовано 4 августа, 2013 при выборе вариантов в выпадающем списке отображается до выбора варианта: после выбора варианта: ?код формы: <a id="tell_friend" href="#tell_friend_form" class="button" />Отправить другу</a><div style="display:none;"> <div id="tell_friend_form"> <input id="product_name" type="hidden" value="{$product->name}"> <input id="product_variant" type="hidden" value="{$product->variant->name}"> <input id="product_price" type="hidden" value="{$product->variant->price|convert}"> <input id="product_url" type="hidden" value="{$config->root_url}/products/{$product->url}"> <h4>{$product->name|escape} <em>{$product->variant->name}</em></h4> <p id="tell_friend_result">Пожалуйста, укажите ваше имя и данные друга, <br /> для отправки сообщения </p> <p><label>Ваше имя:</label><input type="text" id="refer_name"/></p> <p><label>Имя друга:</label><input type="text" id="friend_name"/></p> <p><label>E-Mail друга:</label><input type="text" id="friend_mail"/></p> <p><label>Примечание:</label><input type="text" id="refer_message"/></p> <p class="captcha"> <label><img src="captcha2/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></label> <input class="input_captcha" id="tf_captcha" name="tf_captcha" type="text"/> </p> <div class="tell_friend_center"> <button class="tell_friend_button"><span>Отправить другу</span></button> </div> </div> </div> код в выборе вариантов: <!-- Выбор варианта товара -->{* Не показывать выбор варианта, если он один и без названия *} <select name="variant" {if $product->variants|count==1 && !$product->variant->name}style='display:none;'{/if}> {foreach $product->variants as $v} <option value="{$v->id}" {if $v->compare_price > 0}compare_price="{$v->compare_price|convert}"{/if} price="{$v->price|convert}" tell_friend_variant="{$v->name}" tell_friend_price="{$v->price|convert}" {if $v->id == $product->variant->id}selected{/if}> {$v->name} </option> {/foreach} </select> <!-- Выбор варианта товара (The End) --> код скрипта: // Отправить другу $('select[name=variant]').change(function() { $tell_friend_variant = $(this).find('option:selected').attr('tell_friend_variant'); $tell_friend_price = $(this).find('option:selected').attr('tell_friend_price'); $(this).closest('form').find('h4 em').html($tell_friend_variant); $(this).closest('form').find('product_variant').html($tell_friend_variant); $(this).closest('form').find('product_price').html($tell_friend_price); }); http://simplacms.16mb.com/products/htc При выборе другого варианта, название кнопки меняется на цену товара, а при отправке сообщения, в содержимом письма отображается только название первого варианта, хотя отправляю другое название варианта. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.