Перейти к содержанию
Официальный форум поддержки Simpla

Модуль "Отправить другу"


Рекомендуемые сообщения

      

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.php

tell_friend.css

tell_friend_js.txt

Ссылка на сообщение
Поделиться на другие сайты

Noxter, склоняю голову, видно профи, ничего лишнего и красиво, теперь смотрю на свою поделку и вижу что это, грубо говоря, детское решение вопроса.

Ссылка на сообщение
Поделиться на другие сайты

Noxter, склоняю голову, видно профи, ничего лишнего и красиво, теперь смотрю на свою поделку и вижу что это, грубо говоря, детское решение вопроса.

Правильно продуманный подход к реализации.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Только вроде, вот здесь лишняя кавычка.

<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. Все файлы включил как написано в инструкции.

Ссылка на сообщение
Поделиться на другие сайты

 

Спасибо! Только вроде, вот здесь лишняя кавычка.

<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 используется в дефолтовом шаблоне, поэтому открытие модального окна и передача данных привязано к нему.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо, все работает! Только форму по прежнему не отображает при:

 

<div style="display:none;">
	<div id="tell_friend_form">       
                    бла бла бла
                    <p><label>Ваше имя:</label><input type="text" id="refer_name"/></p>
	</div>
</div>

И не будет отображать при display:none. Специально установил на локальную машину симплу с дефолтным шаблоном, привязка к fancybox есть (по коду), однако всплывающего окна и тем более кнопки - отправить другу - нет. А если убрать скрытие формы отображается, письмо приходит.

Ссылка на сообщение
Поделиться на другие сайты

Там все по дефолту, только что сипмлу поставил!)

<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>
Ссылка на сообщение
Поделиться на другие сайты

Без изменений..

{* Увеличитель картинок *}
<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" />
Ссылка на сообщение
Поделиться на другие сайты

Все перепроверено, специально чистую simply поставил. Все скрипты подключены, - сама форма сообщения отправляет, это без проблем. Просто самой формы с кнопкой - отправить другу, нет! Каким образом она появится при display:none? Ниииипанятно) Повторюсь, если убрать display:none и отправить так, письмо доходит, без проблемм.

Ссылка на сообщение
Поделиться на другие сайты

попробуйте добавить 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>

Ссылка на сообщение
Поделиться на другие сайты

Все поставил правильно, только папку капчи не копировал, это не так быстро делается, просто хотел увидеть как выглядит это окошко, но у меня даже текста "отправить другу" не было.. какой кусок кода вам прислать что бы вы проверили?

Ссылка на сообщение
Поделиться на другие сайты

Кнопка в 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} добавлено"/>
 
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

при выборе вариантов в выпадающем списке отображается

 

до выбора варианта:

 

 

после выбора варианта:

 

 

?код формы:

<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

 

При выборе другого варианта, название кнопки меняется на цену товара, а при отправке сообщения, в содержимом письма отображается только название первого варианта, хотя отправляю другое название варианта.

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...